[pso] [tema3] dimensiune pitix_dir_entry

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


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...).
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.
(daca iti mai aduci aminte de algoritmii de la introducere in
informatica din anutl intai 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