FILESYSTEM(5) XENIX System V (1 ÿíâapÿ 1989)
ÍÀÇÂÀÍÈÅ
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)
|