[pso] [tema3] dimensiune pitix_dir_entry

Lucian Adrian Grijincu lucian.grijincu at gmail.com
Sun Apr 29 14:45:03 EEST 2007


On 4/29/07, Lucian Adrian Grijincu <lucian.grijincu at gmail.com> wrote:
> On 4/29/07, omar Chouydary <chouydary at yahoo.com> wrote:
> > In primul rand la ceva de genul asta:
> > sb->s_blocksize/pitix_dir_entry_size(sb)
> > compilatorul oricum face o operatie pe float si apoi truncheaza la int
> sa mori tu?
> and you base this on ... WHAT?
> intel are instructiunea idiv.
> pune restu si catul in CX si DX (nu stiu care-unde exact...).
AX si DX, sorry.
> LUCREAZA DOAR PE INT.
>
> see.
> http://www.cs.tut.fi/~siponen/upros/intel/instr/div.html
>
> fa un objdump unui binar care face imaprtire pe doi int-i. (/ sau %)
> si vezi ce operatie e acolo
> f* (floating point instructions) sau idiv.
>
>
> in plus, operatiile pe int sunt mult mai rapide decat cele pe int.

 in plus, operatiile pe int sunt mult mai rapide decat cele pe FLOAT

> (daca iti mai aduci aminte de algoritmii de la introducere in
> informatica din anul I sau Calculatoare Numerice).


> > (daca int este variabila in care stochezi rezultatul)
> >
> > In al doilea rand, as vrea un raspuns de la asistenti/profesor ca sa stiu
> > sigur. Multumesc oricum pt parerea ta.
> >
> > Lucian Adrian Grijincu <lucian.grijincu at gmail.com> wrote:
> > On 4/29/07, omar Chouydary wrote:
> > > O problema asemanatoare cu cate inode-uri sunt pe superbloc este asta:
> > >
> > > Avand in vedere ca structura pitix_dir_entry are 20 de octeti, iar
> > > dimensiunea unui bloc este de 512, 1024, etc... inseamna ca intr-un bloc
> > nu
> > > incape un numar fix de astfel de structuri.
> > > Atunci ce facem in cazul directoarelor:
> > >
> > > a) scriem in fiecare bloc de date (al inode-ului respectiv corespunzator
> > > directorului) cate structuri pitix_dir_entry incap, si daca urmatoarea nu
> > > incape in totalitate, o scriem de la inceput intr-un nou bloc de date
> > >
> > > b) scriem in fiecare bloc de date cate incap, si in plus scriem in ce a
> > > ramas ce putem dintr-o noua structura pitix_dir_entry astfel incat o
> > > structura s-ar putea imparti intre 2 blocuri consecutive de date
> > >
> > > Mi se pare mai usor de implementat varianta a, dar risipeste niste octeti
> > la
> > > fiecare bloc de date.
> > > Daca trebuie aleasa varianta b, atunci de ce in pitix.h avem functia asta
> > :
> > >
> > > static inline int pitix_dir_entries_per_block(struct
> > super_block *sb)
> > > {
> > > return sb->s_blocksize/pitix_dir_entry_size(sb);
> > > }
> > >
> > > Nu ar fi trebuit sa intoarca un float pentru a sti exact cate structuri
> > (cu
> > > tot cu virgula) incap astfel incat sa pot sa verific in ce bloc exact este
> > o
> > > anumita structura?
> > >
> > > Omar.
> >
> > 1. si daca-ti intoarce cu virgula ce faci?
> > daca vrei sa afli o cantitate intreaga din numarul asta ai sanse mari
> > sa dai de date eronate.
> > 2. ce sa faci cu float in kernel mode? It's prohibited (imagineaza-ti
> > cazul in care pt operatii floating point trebuie sa dai comenzi si sa
> > astepti raspunsuri de la un mathematical co-processor.)
> >
> > Presupune ca pitix_dir_entries_per_block iti returneaza numarul de
> > d_entry-uri care intra cu exactitate in un block. Daca un d_entry e in
> > doua blockuri, citesti ambele blockuri si memcpy in bufferul
> > d_entryului.
> >
> > Lucian
> > _______________________________________________
> > pso mailing list
> > pso at cursuri.cs.pub.ro
> > http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
> >
> >
> >
> >  ________________________________
> > Ahhh...imagining that irresistible "new car" smell?
> >  Check out new cars at Yahoo! Autos.
> >
> >
>


More information about the pso mailing list