ÍÀÇÂÀÍÈÅ
file system - Ôopìaò òoìa, coäepæaùèé ôaéëoâyþ cècòeìy.
ÑÈÍÒÀÊÑÈÑ
#include <sys/filsys.h> #include <sys/types.h> #include <sys/param.h>
ÎÏÈÑÀÍÈÅ
Kaæäûé òoì, coäepæaùèé ôaéëoâyþ cècòeìy (íaïpèìep, æecòêèé
äècê) ïoäpaçäeëÿeòcÿ ía áëoêè ïo 256 cëoâ (512 áaéò). Áëoê c
íoìepoì 0 íe ècïoëüçyeòcÿ è coäepæèò ïpoãpaììy ía÷aëüíoé
çaãpyçêè èëè äpyãyþ èíôopìaöèþ.
Áëoê íoìep 1 - cyïepáëoê. Ôopìaò ýòoão áëoêa oïècaí â ìaêpo ôaéëe /usr/include/sys/filesys.h. B ýòoì ìaêpo ôaéëe S_isize ïpeäcòaâëÿeò coáoé aäpec ïepâoão áëoêa äaííûx ïocëe cïècêa èíäeêcíûx äecêpèïòopoâ, ía÷èíaþùeãocÿ cpaçy ïocëe cyïepáëoêa â áëoêe íoìep 2; äëèía cïècêa èíäeêcíûx äecêpèïòopoâ paâía s_isize-2. S-fsize ïpeäcòaâëÿeò coáoé ïepâûé áëoê, íeäocòyïíûé ôaéëoâoé cècòeìe. Ýòè áëoêè ècïoëüçyþòcÿ oïepaöèoííoé cècòeìoé äëÿ çaìeíû äeôeêòíûx áëoêoâ. Ecëè oïepaöèoííÿ cècòeìa âûíyæäeía âûäeëèòü áëoê èç cïècêa çaìeíû èëè, íaïpoòèâ, ocâoáoæäaeòcÿ áëoê èç cïècêa çaìeíû, ía êoícoëü âûâoäèòcÿ cooáùeíèe. Áoëee òoão, cïècoê câoáoäíûx áëoêoâ êoppeêòèpyeòcÿ òaê, ÷òoáû äeôeêòíûé áëoê íe ïoïaë â cïècoê câoáoäíûx áëoêoâ.
Cïècoê câoáoäíûx áëîêoâ êaæäoão òoìa oápaçoâaí cëeäyþùèì oápaçoì. Maccèâ s_free coäepæèò â ýëeìeíòax s_free[1], ... , s_free[s_nfree-1] äo 49 íoìepoâ câoáoäíûx áëoêoâ. S_free[0] coäepæèò íoìep áëoêa çaãoëoâêa öeïè áëoêoâ, cocòaâëÿþùèx cïècoê câoáoäíoão ïpocòpaícòâa. Ïepâaÿ ïepeìeííaÿ òèïa long â êaæäoé öeïè câoáoäíûx áëoêoâ ïpeäcòaâëÿeò coáoé ÷ècëo (äo 50) íoìepoâ câoáoäíûx áëoêoâ, çaïècaííûx â cëeäyþùèx 50 ýëeìeíòax òèïa long ýòoão ýëeìeíòa öeïè. Ïepâûé èç ýòèx ïÿòèäecÿòè áëoêoâ câÿçaí co cëeäyþùèì ýëeìeíòoì öeïè. Äëÿ òoão, ÷òoáû âûäeëèòü áëoê: yìeíüøèòü çía÷eíèe s_nfree è íoâûé s_free[s_nfree]. Ecëè íoìep íoâoão áëoêa paâeí íyëþ, íe cyùecòâyeò ocòaâøèxcÿ áëoêoâ, ïoýòoìy âûäaeòcÿ oøèáêa. Ecëè s_nfree còaíoâèòcÿ 0, ïpo÷ecòü â áëoêe, oïpeäeëÿeìûì íoìepoì íoâoão áëoêa, çaìeíèòü s_nfree eão ïepâûì cëoâoì è êoïèpoâaòü íoìepa áëoêoâ â cëeäyþùèx 50 ýëeìeíòax òèïa long â ìaccèâ s_free. Äëÿ òoão, ÷òoáû ocâoáoäèòü áëoê ïpoâepèòü, ecëè s_nfree paâío 50; ecëè äa, êoïèpoâaòü s_nfree è ìaccèâ s_free â íeão è ycòaíoâèòü çía÷eíèe s_nfree paâíûì 0. B ëþáoì cëy÷ae ycòaíoâèòü s_free[s_nfree] ía íoìep ocâoáoæäeííoão áëoêa è yâeëè÷èòü s_nfree.
S_tfree ïpeäcòaâëÿeò coáoé êoëè÷ecòâo câoáoäíûx áëoêoâ, äocòyïíûx ôaéëoâoé cècòeìe.
S_ninide ïpeäcòaâëÿeò coáoé íoìepa câoáoäíûx èíäeêcíûx äecêpèïòopoâ â ìaccèâes_inode. Äëÿ âûäeëeíèÿ èíäeêcíoão äecêpèïòopa ôaéëa: ecëè s_ninode áoëüøe íyëÿ, yìeíüøèòü eão è âepíyòü s_inode[s_ninode]. Ecëè oí paâeí 0, ÷èòaòü cïècoê èíäeêcíûx äecêpèïòopoâ è paçìecòèòü íoìepa câoáoäíûx èíäeêcíûx äecêpèïòopoâ ôaéëoâ(äo 100) â ìaccèâe s_inode, çaòeì ïoïûòaòücÿ cíoâa. Äëÿ ocâoáoæäeíèÿ èíäeêcíoão äecêpèïòopa ôaéëa, ïpè÷eì s_ninode ìeíüøe 100, paçìecòèòü eão íoìep â s_inode[s_ninode] è yâeëè÷èòü s_ninode. Ecëè s_ninode paâeí 100, íe íyæío äoáaâëÿòü èíäeêcíûé äecêpèïòop ôaéëa â ëþáyþ òaáëèöy. Ýòoò cïècoê èíäeêcíûx äecêpèïòopoâ ôaéëoâ òoëüêo yâeëè÷èâaeò cêopocòü ïpoöecca âûäeëeíèÿ. Èíôopìaöèÿ o òoì, ÿâëÿeòcÿ ëè èíäeêcíûé äecêpèïòop ôaéëa äeécòâèòeëüío câoáoäíûì coäepæèòcÿ coácòâeíío â èíäeêcíoì äecêpèïòope.
S_tinode ïpeäcòaâëÿeò coáoé êoëè÷ecòâo câoáoäíûx èíäeêcíûx äecêpèïòopoâ, äocòyïíûûx ôaéëoâoé cècòeìe.
Ôëaãè S_flock è silock ècïoëüçyþòcÿ òoëüêo òoãäa, êoãäa ôaéëoâaÿ cècòeìa cìoíòèpoâaía. Çía÷eíèe s_fmode ía äècêe òaêæe íecyùecòâeíío è ècïoëüçyeòcÿ êaê ôëaã äëÿ oòpaæeíèÿ òoão, ÷òo cyïepáëoê áûë èçìeíeí è äoëæeí áûòü cêoïèpoâaí ía äècê â òe÷eíèè cëeäyþùeão ïepèoäa oáíoâëeíèÿ èíôopìaöèè ôaéëoâoé cècòeìû.
Ôëaã S_ronly ïoêaçûâaeò, ÷òo òoì äocòyïeí òoëüêo äëÿ ÷òeíèÿ.
S_time ÿâëÿeòcÿ ïocëeäíèì âpeìeíeì, êoãäa cyïepáëoê ôaéëoâoé cècòeìû áûë èçìeíeí è ïpeäcòaâëÿeòcÿ ÷ècëoì äâoéíoé òo÷íocòè, â ceêyíäax,êoòopoe ïpoøëo c ìoìeíòa 00:00 ßíâapÿ 1, 1970 (ïo Ãpèíâè÷y). Bo âpeìÿ ïepeçaãpyçêè, ýëeìeíò s_time cyïepáëoêa êopíeâoé ôaéëoâoé cècòeìû ècïoëüçyeòcÿ äëÿ ycòaíoâêè cècòeìíoão âpeìeíè.
Hoìepa äecêpèïòopoâ ía÷èíaþòcÿ c 1 è xpaíÿòcÿ â áëoêe 2. Taêæe, èíäeêcíûe äecêpèïòopû ôaéëoâ ïpeäcòaâëÿþòcÿ 64 áaéòaìè, ïoýòoìy 8 èç íèx ïoìeùaþòcÿ â áëoê. Taêèì oápaçoì, èíäeêcíûé äecêpèïòop ôaéëa i paçìeùaeòcÿ â áëoêe c íoìepoì(i+15)/8 è ía÷èíaþòcÿ 64x((i+15)(mod 8)) áaéò oò ía÷aëa. Èíäeêcíûé äecêpèïòop ôaéëa 1 peçepâèpyeòcÿ äëÿ ècïoëüçoâaíèÿ â áyäyùeì. Èíäeêcíûé äecêpèïòop ôaéëa 2 peçepâèpyeòcÿ äëÿ êopíeâoão êaòaëoãa ôaéëoâoé cècòeìû, äpyãèe íoìepa äecêpèïòopoâ íe peçepâèpyþòcÿ äëÿ cïeöèaëüíoão ècïoëüçoâaíèÿ. Kaæäûé èíäeêcíûé äecêpèïòop ôaéëa ïpeäcòaâëÿeò oäèí ôaéë. Äëÿ ïoëy÷eíèÿ ïoäpoáíoé èíôopìaöèè o ôopìaòe èíäeêcíûx äecêpèïòopoâ ôaéëoâ è èx ôëaãax cìoòpè inode(F).
ÔÀÉËÛ
/usr/include/sys/filesys.h /usr/include/sys/stat.h
ÑÌ. ÒÀÊÆÅ
fseek(1), mkfs(1), inode(5)