Você está na página 1de 26

DETI

Sistemas de Operao
Antnio Rui Borges

Manipulao das listas de ns-i e de clusters livres

Organizao da lista de ns-i livres

A lista de ns-i livres constitui uma lista biligada de todos os ns i da tabela de ns i !ue est"o presentemente li#res$ Est organi%ada como um &I&' linear$

ihead

ponto de retirada

DETI
n-i n-i

itail

ponto de insero

n-i

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um n-i - 1

Algoritmo )situao em que a lista tem um ou mais elementos*


ihead

ponto de retirada

DETI
)2* n-i n-i )(*

itail

ponto de insero

n-i

)+* nInode

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um n-i - 2
Algoritmo geral )pseudo-cdigo*

nInode = ihead; if (ifree == 1) /* the list has one element */ ihead = itail = NULL_INODE; else { /* the list has two or more elements */ ihead = ihead !ne"t; ihead !#re$ = NULL_INODE; % ifree = 1;

DETI

)+* )2*-),* )2* )(*

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um n-i - 3

Validao de conformidade o tipo do n i a reser#ar tem !ue representar um tipo #lido ) ficheiro regular, directrio ou atalho* o ponteiro para a regi"o de arma%enamento do nmero do n-i reservado n"o pode ser nulo tem !ue /a#er pelo menos um n i li#re na lista de ns i li#res$

DETI

Validao de consistncia a informa"o contida no superbloco sobre a tabela de ns i e na lista de ns i li#res tem !ue estar correcta$

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um n-i - 1

Algoritmo )situao em que a lista tem pelo menos um elemento*

ihead

ponto de retirada

n-i

DETI
ponto de insero )(* n-i n-i )+*

itail ),*

)2*

nInode

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um n-i - 2
Algoritmo geral )pseudo-cdigo*

if (ifree == &) { /* the list is em#t' */ inode !#re$ = inode !ne"t = NULL_INODE; ihead = itail = nInode; % else { /* the list has at least one element */ nInode !#re$ = itail; nInode !ne"t = NULL_INODE; itail !ne"t= nInode; itail = nInode; % ifree (= 1;

DETI

)+*-)2* ).*-),*

)+* )2* )(* ),*

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um n-i - 3

Validao de conformidade o nmero do n-i a libertar tem !ue estar na gama ade!uada )n"o pode ser 3 e tem !ue ser um #alor #lido* o n i a libertar tem !ue ser um n-i em uso, com informa"o interna correcta e com o seu campo ref)o*nt a 3$ Validao de consistncia a informa"o contida no superbloco sobre a tabela de ns i e na lista de ns i li#res tem !ue estar correcta$

DETI

Departamento de Electrnica, Telecomunicaes e Informtica

Organizao das a hes de re!er"n ias a lusters livres

a he a he$id%

a he

DETI
a he$id% a he de insero

elemento om re!er"n ia v#lida elemento sem re!er"n ia v#lida

a he de retirada

Departamento de Electrnica, Telecomunicaes e Informtica

Organizao da tabela &bitmap' de lusters livres - 1


A tabela )bitmap* de clusters livres constitui um array de bits indicati#o de parte
dos clusters da zona de dados !ue presentemente n"o est"o associados a !ual!uer fic/eiro5 cada bit do array referencia um cluster espec6fico, a!uele cu7o n8mero lgico corresponde ao respecti#o 6ndice$

! table$pos

DETI

' incremento de f)ta+le_#os 9 feito sempre mdulo d,one_total$

+3

Departamento de Electrnica, Telecomunicaes e Informtica

Organizao da tabela &bitmap' de lusters livres - 2


' principal problema associado com a manipula"o da tabela )bitmap* de clusters livres em linguagem : 9 o facto da linguagem n"o pro#idenciar um tipo de dados !ue represente directamente bits, muito embora fornea um grupo alargado de operadores para manipula"o de bits sobre operandos de #6rgula fi;a$
#define N- (d,one_total / .) #define N (((d,one_total / .) == &) 0 N- 1 (N- ( 1)) unsigned char f)23a#45N6;

DETI
f)23a#4516 f)23a#4576

3 3 + 3 + + + 3 + 3 3 3 + + 3 + + + + 3 3 + 3 3 3 + + 3 3 3 + + f)23a#45&6 f)23a#4586

++

Departamento de Electrnica, Telecomunicaes e Informtica

Organizao da tabela &bitmap' de lusters livres - 3


n!yte n!it

n lust

(este do elemento da tabela de bitmap de )ndi e nClust mas9 = &".& !! n2it; if ((f)23a#45n2'te6 : mas9) == mas9) /* elemento i;*al a 1 */ else /* elemento i;*al a & */

DETI
Departamento de Electrnica, Telecomunicaes e Informtica

Reset do elemento da tabela de bitmap de )ndi e nClust mas9 = &".& !! n2it; f)23a#45n2'te6 := <mas9; Set do elemento da tabela de bitmap de )ndi e nClust mas9 = &".& !! n2it; f)23a#45n2'te6 == mas9;
+2

Reserva de um luster de dados - 1

Algoritmo geral sobre a a he de retirada )pseudo-cdigo*

if (d,one_retrie$>)a)he_id" == D?ONE_@A@BE_CI?E) { /* the retri$al )a)he is em#t'D re#lenish it */ re#lenish (); % n@l*st = d,one_retrie$>)a)he5d,one_retrie$>)a)he_id"6; d,one_retrie$>)a)he5d,one_retrie$>)a)he_id"6 = NULL_@LUC4EE; d,one_retrie$>)a)he_id" (= 1; d,one_free = 1;

DETI

+(

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um luster de dados - 2


Algoritmo geral sobre o repovoamento da a he de retirada )pseudo-cdigo*
n)l*stt = (d,one_free F D?ONE_@A@BE_CI?E) 0 d,one_free 1 D?ONE_@A@BE_CI?E; #os = f)ta+le_#os; n = D?ONE_@A@BE_CI?E n)l*stt; do { )on$ertEef4o2it3a# (#osD :n2'teD :n2it); mas9 = &".& !! n2it; if (f)23a#45n2'te6 : mas9) == mas9) { d,one_retrie$>)a)he5n6 = #os; f)23a#45n2'te6 := <mas9; n (= 1; % #os = (#os ( 1) / d,one_total; % while ((n F D?ONE_@A@BE_CI?E) :: (#os G= f)ta+le_#os));

DETI

+,

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um luster de dados - 3


Algoritmo geral sobre sobre o repovoamento da a he de retirada )pseudo-cdigo* < continua"o
if (n G= D?ONE_@A@BE_CI?E) { /* de#lete the insertion )a)he to ;et the remainin; referen)es */ de#lete (); do { )on$ertEef4o2it3a# (#osD :n2'teD :n2it); mas9 = &".& !! +itOff; if (f)23a#45n2'te6 : mas9) == mas9) { d,one_retrie$>)a)he5n6 = #os; f)23a#45n2'te6 := <mas9; n (= 1; % #os = (#os ( 1) / d,one_total; % while (n F D?ONE_@A@BE_CI?E); % d,one_retrie$>)a)he_id" = D?ONE_@A@BE_CI?E n)l*stt; f)ta+le_#os = #os;

DETI

+.

Departamento de Electrnica, Telecomunicaes e Informtica

Reserva de um luster de dados - *

Validao de conformidade o ponteiro para a regi"o de arma%enamento da referncia do cluster de dados reservado n"o pode ser nulo tem !ue /a#er pelo menos um cluster de dados li#re$ Validao de consistncia a informa"o contida no superbloco sobre a %ona de dados ) caches de retirada e de inser"o inclu6das* e na lista )bitmap* de clusters li#res tem !ue estar correcta$

DETI

+0

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um luster de dados - 1

Algoritmo geral sobre a cache de insero )pseudo-cdigo*

if (d,one_insert>)a)he_id" == D?ONE_@A@BE_CI?E) { /* the insertion )a)he is f*llD de#lete it */ de#lete (); % d,one_insert>)a)he5d,one_insert>)a)he_id"6 = n@l*st; d,one_insert>)a)he_id" (= 1; d,one_free (= 1;

DETI

+1

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um luster de dados - 2

Algoritmo geral sobre o esvaziamento da a he de insero )pseudo-cdigo*


for (n = &; n F d,one_insert>)a)he_id"; n(() { )on$ertEef4o2it3a# (d,one_insert>)a)he5n6D :n2'teD :n2it); f)23a#45n2'te6 == (&".& !! n2it); d,one_insert>)a)he5n6 = NULL_@LUC4EE; % d,one_insert>)a)he_id" = &;

DETI

+2

Departamento de Electrnica, Telecomunicaes e Informtica

Libertao de um luster de dados - 3

Validao de conformidade a referncia do cluster de dados a libertar tem !ue estar na gama ade!uada )n"o pode ser 3 e tem !ue ser um #alor #lido* a referncia do cluster de dados a libertar tem !ue corresponder a um cluster de dados !ue foi pre#iamente reser#ado$ Validao de consistncia a informa"o contida no superbloco sobre a %ona de dados ) caches de retirada e de inser"o inclu6das* e na lista )bitmap* de clusters li#res tem !ue estar correcta$

DETI

+4

Departamento de Electrnica, Telecomunicaes e Informtica

+en#rios de teste - 1

HG/+in/+ash H H H H H H H 4his test $e)tor deals with the o#erations allo) / free inodes> It defines a stora;e de$i)e with 1I +lo)9s and formats it with an inode ta+le of . inodes> It starts +' allo)atin; all the inodes and testin; se$eral error )onditions> 4henD it frees all the allo)ated inodes in the re$erse order of allo)ation while still testin; different error )onditions> 4he show+lo)9_sofs18 a##li)ation sho*ld +e *sed in the end to )he)9 metadata>

DETI

>/)reateEm#t'Jile m'Dis9 1I >/m9fs_sofs18 n COJC18 i . >/testif*n)s18 + l I&&DK&&

, m'Dis9 L testLe)tor1>rst m'Dis9 FtestLe)tor1>)md

23

Departamento de Electrnica, Telecomunicaes e Informtica

+en#rios de teste - 2

HG/+in/+ash H H H H H H H H 4his test $e)tor deals with the o#erations allo) / free inodes> It defines a stora;e de$i)e with 1. +lo)9s and formats it with an inode ta+le of 7M inodes> It starts +' allo)atin; s*))essi$e inodes *ntil there are no more inodes> 4henD it frees all the allo)ated inodes in a seN*en)e where an inode stored in a different +lo)9 of the ta+le is ta9en in s*))ession> Jinall'D it #ro)edes to allo)ate two inodes> 4he show+lo)9_sofs18 a##li)ation sho*ld +e *sed in the end to )he)9 metadata>

DETI

>/)reateEm#t'Jile m'Dis9 1. >/m9fs_sofs18 n COJC18 i 7M , m'Dis9 >/testif*n)s18 + l I&&DK&& L testLe)tor7>rst m'Dis9 FtestLe)tor7>)md

2+

Departamento de Electrnica, Telecomunicaes e Informtica

+en#rios de teste - 3

HG/+in/+ash H H H H H H H 4his test $e)tor deals with the o#erations allo) / free data )l*sters> It defines a stora;e de$i)e with 7& +lo)9s and formats it with an inode ta+le of . inodes> It starts +' allo)atin; all the data )l*sters and testin; the error )ondition> 4henD it frees all the allo)ated data )l*sters in the re$erse order of allo)ation while still testin; different error )onditions> 4he show+lo)9_sofs18 a##li)ation sho*ld +e *sed in the end to )he)9 metadata>

DETI

>/)reateEm#t'Jile m'Dis9 7& >/m9fs_sofs18 n COJC18 i . >/testif*n)s18 + l I&&DK&&

, m'Dis9 L testLe)tor8>rst m'Dis9 FtestLe)tor8>)md

22

Departamento de Electrnica, Telecomunicaes e Informtica

+en#rios de teste - *

G/+in/+ash H H H H H H H H 4his test $e)tor deals with the o#erations allo) / free data )l*sters> It defines a stora;e de$i)e with 7& +lo)9s and formats it with an inode ta+le of . inodes> It starts +' allo)atin; all the data )l*sters and testin; the error )ondition> 4henD it frees all the allo)ated data )l*sters in the re$erse order of allo)ation while still testin; different error )onditions> Jinall'D it allo)ates a data )l*ster> 4he show+lo)9_sofs18 a##li)ation sho*ld +e *sed in the end to )he)9 metadata>

DETI

>/)reateEm#t'Jile m'Dis9 7& >/m9fs_sofs18 n COJC18 i . >/testif*n)s18 + l I&&DK&&

, m'Dis9 L testLe)torM>rst m'Dis9 FtestLe)torM>)md

2(

Departamento de Electrnica, Telecomunicaes e Informtica

+en#rios de teste - ,

HG/+in/+ash H H H H H H H 4his test $e)tor deals with the o#erations allo) / free data )l*sters> It defines a stora;e de$i)e with O7M +lo)9s and formats it with an inode ta+le of 87 inodes> It starts +' allo)atin; all the data )l*sters> 4henD it frees all the allo)ated data )l*sters in the re$erse order of allo)ation> Jinall'D it allo)ates a data )l*ster> 4he show+lo)9_sofs18 a##li)ation sho*ld +e *sed in the end to )he)9 metadata>

DETI

>/)reateEm#t'Jile m'Dis9 O7M >/m9fs_sofs18 n COJC18 i . >/testif*n)s18 + l I&&DK&&

, m'Dis9 L testLe)torO>rst m'Dis9 FtestLe)torO>)md

2,

Departamento de Electrnica, Telecomunicaes e Informtica

-ossibilidade de teste isolado de !un.es


@@ = ;)) @JLAPC = Qall I R>>/de+*;;in;R I R>>/rawIO18R HIJUN@C1 = sofs_if*n)s_1/soAllo)Inode>o sofs_if*n)s_1/soJreeInode>o S H sofs_if*n)s_1/soAllo)Data@l*ster>o sofs_if*n)s_1/soJreeData@l*ster>o IJUN@C1 = sofs_if*n)s_1/soJreeInode>o all1 if*n)s11

!icheiro 2a3e!ile do direct"rio so!s13

li+sofs181

DETI
if*n)s1 li+sofs18 ma9e @ sofs_if*n)s_1 all

)lean1

sofs_+lo)9$iews>o sofs_+asi)o#er>o T(IJUN@C1) ar r li+sofs18>a TU sofs_+asi))onsist>o )# li+sofs18>a >>/>>/li+ rm f TU li+sofs18>a es rever a/ui o aminho das !un.es /ue pretende testar (neste aso0 s 1 testada a !uno sofs_ifuncs_1/soFreeInode.o) rm f >>/>>/li+/li+sofs18>a Note que no fim todas as funes tm ma9e @ sofs_if*n)s_1 )lean que estar includas
Departamento de Electrnica, Telecomunicaes e Informtica

2.

4es arregamento do pa ote

5r*i+Vr*i+ total 17KI drw"r "r " rw r r 5r*i+Vr*i+

la#to#7 teste6T ll I r*i+ r*i+ M&WI Ce# 78 &&1&. COJC18_al*nos 1 r*i+ r*i+ 87W1.. Ce# 7W &11O8 COJC18_al*nos7>,i# la#to#7 teste6T

r*i+Vr*i+ la#to#7 teste6T *n,i# COJC18_al*nos7>,i# Ar)hi$e1 COJC18_al*nos7>,i# inflatin;1 COJC18_al*nos/li+/li+sofs18+in>a re#la)e COJC18_al*nos/r*n/m9fs_sofs18_+in0 5'6esD 5n6oD 5A6llD 5N6oneD 5r6ename1 A

DETI

20

Departamento de Electrnica, Telecomunicaes e Informtica

Você também pode gostar