HPFS

Material iz Vikipedii -- svobodnoi entsiklopedii
Tekushchaia versiia stranitsy poka ne proverialas' opytnymi uchastnikami i mozhet znachitel'no otlichat'sia ot versii, proverennoi 15 marta 2025 goda; proverki trebuiut 3 pravki.
Pereiti k navigatsii Pereiti k poisku
Eta stat'ia nuzhdaetsia v pererabotke. Pozhaluista, utochnite problemu v stat'e s pomoshch'iu bolee konkretnogo shablona.
Pozhaluista, uluchshite stat'iu v sootvetstvii s pravilami napisaniia statei. (mai 2009)

HPFS (abbr. ot angl. High Performance File System) -- failovaia sistema, razrabotannaia spetsialistami IBM i Microsoft, baziruiushchaiasia na razrabotkakh IBM po sozdaniiu failovykh sistem MVS, VM i virtual'nogo metoda dostupa. So storony Microsoft proektom rukovodil opytnyi sistemnyi programmist Gordon Letvin[angl.].

Vpervye podderzhka HPFS poiavilas' v operatsionnoi sisteme OS/2 versii 1.2. S tekh por shtatnaia podderzhka HPFS prisutstvuet vo vsekh versiiakh OS/2. V Windows NT podderzhka HPFS sushchestvovala do versii 3.51 vkliuchitel'no (khotia est' uspeshnye pretsedenty ispol'zovaniia starogo draivera HPFS v Windows NT 4.0 i Windows 2000). Vposledstvii Microsoft otkazalas' ot HPFS v pol'zu sobstvennoi failovoi sistemy NTFS, pri razrabotke kotoroi byl uchtion opyt sozdaniia HPFS.

V OS/2 sushchestvuet servernyi variant draivera dlia HPFS, nazyvaemyi HPFS386, kotoryi obladaet nekotorymi dopolnitel'nymi vozmozhnostiami.

Struktura

[pravit' | pravit' kod]

Disk v HPFS delitsia na sektory fiksirovannogo razmera (512 bait v tekushchei realizatsii, pri etom nomer sektora ili ikh kolichestvo kodiruiutsia vo vnutrennikh strukturakh kak 4-baitovoe bezznakovoe tseloe, chto pozvoliaet adresovat' diski razmerom do 232 * 512 = 2 terabaita).

V nachale diska raspolozheny neskol'ko upravliaiushchikh blokov:

  1. Zagruzochnyi sektor DOS-ovskogo vida.
  2. SuperBlock soderzhit informatsiiu o geometrii diska, ukazateli na bitovye karty (t. n. bitmapy, ot angl. bitmaps) svobodnogo prostranstva, ukazatel' na kornevoi katalog, razmer diskovoi polosy, nomer polosy s katalogami, ukazatel' na spisok sboinykh blokov i t. p. SuperBlock takzhe soderzhit datu poslednego zapuska CHKDSK. Obychno izmeniaiut SuperBlock tol'ko programmy CHKDSK i FORMAT.
  3. SpareBlock soderzhit ukazateli na pul HOTFIX-areas, pul Fault-Tolerance oblastei (tol'ko HPFS386 ispol'zuet Fault-Tolerance), pul blokov dlia operatsii na pochti zapolnennom diske i drugie ukazateli, flagi i deskriptory.
  4. Oblast' nachal'noi zagruzki.
  5. Oblast' sektorov, ispol'zuemykh (vremenno) dlia vypolneniia operatsii, trebuiushchikh dopolnitel'noi diskovoi pamiati. Eta oblast' naprimer, inogda zadeistvuetsia pri pereimenovanii faila na zapolnennom diske.
  6. Drugie oblasti.

Dlia opredeleniia togo, svoboden sektor ili zaniat, HPFS ispol'zuet bitovye karty, v kotorykh kazhdyi bit sootvetstvuet odnomu sektoru. Esli bit soderzhit 1, eto oznachaet, chto sektor zaniat, inache on svoboden. Esli by na ves' disk byla tol'ko odna bitovaia karta, to dlia eio podkachki prikhodilos' by peremeshchat' golovki chteniia/zapisi v srednem cherez polovinu diska. Chtoby izbezhat' etogo, HPFS razbivaet disk na <> (ili gruppy, ot angl. bands) dlinoi po 8 megabait i khranit bitmapy svobodnykh sektorov v nachale ili kontse kazhdoi polosy. Pri etom bitmapy sosednikh polos raspolagaiutsia riadom:

+------------ 16 MB -----------+ *** -- Use/Free sector bitmap.
| |
+--|-------------+-----------+---|--+--------------+---------------+
|*** Polosa 0 | Polosa 1 ***|*** Polosa 2 | Polosa 3 ***|
+----------------+--------------+-----------------+---------------+
0 MB 8 MB 16 MB 24 MB 32 MB

Rasstoianie mezhdu dvumia bitmapami ravno 16 MB. Razmer polosy (8 MB) mozhet byt' izmenion v sleduiushchikh versiiakh HPFS, tak kak na nego net priamykh zaviazok. HPFS opredeliaet razmer polosy pri chtenii upravliaiushchikh blokov s diska vo vremia vypolneniia operatsii FSHelperAttach.

Razmer bitmapa raven 2 K (8 MB/512/8 = 2 K).

Polosa, nakhodiashchaiasia v tsentre diska, ispol'zuetsia dlia khraneniia katalogov. Eta polosa nazyvaetsia Directory Band. Odnako, esli ona budet polnost'iu zapolnena, HPFS nachniot raspolagat' katalogi failov v drugikh polosakh.

Faily i katalogi v HPFS baziruiutsia na fundamental'nom ob'ekte, nazyvaemom FNode. Kazhdaia FNode zanimaet odin sektor i v HPFS vsegda raspolagaetsia poblizosti ot svoego faila ili kataloga (obychno neposredstvenno pered failom ili katalogom). FNode soderzhit dlinu i pervye 15 simvolov imeni faila, statistiku po dostupu k failu, vnutrenniuiu informatsiiu, rasshirennye atributy i ACL (ili tol'ko chast', esli oni ochen' bol'shie), assotsiativnuiu informatsiiu o raspolozhenii i podchinenii faila i t. d.

Dliny imion failov i katalogov pri polnoi podstanovke (ot kornia) ne dolzhny prevyshat' 260 simvolov, pri etom kazhdaia komponenta puti ne dolzhna byt' dlinnee 255 simvolov. V imenakh failov nedopustimy sleduiushchie simvoly:

0h-1Fh, 7Fh, /, |, \, *, ?, ", <, >

Posledovatel'nosti konechnykh probelov ignoriruiutsia, esli na kontse faila stoit tochka, to ona tozhe ignoriruetsia. Vnutri imeni faila tochka -- takoi zhe simvol, kak i ostal'nye. S russkimi bukvami problem net. Pri sozdanii faila HPFS zapominaet napisanie ego imeni, khotia i ne razlichaet registrov v dal'neishikh operatsiiakh, krome tekh, chto vozvrashchaiut informatsiiu o faile.

Primery imen:

  1. <>
  2. <>
  3. <>

S tochki zreniia razmeshcheniia, faily, katalogi i ikh rasshirennye atributy (esli oni ne pomeshchaiutsia v FNode) rassmatrivaiutsia HPFS kak nabory ekstentov. Ekstent -- eto chast' faila, lezhashchaia v posledovatel'nykh sektorakh. Kazhdyi ekstent opisyvaetsia dvumia chislami: nomerom pervogo sektora i dlinoi (v sektorakh). Dva posledovatel'nykh ekstenta vsegda ob'ediniaiutsia HPFS v odin. Minimal'nyi razmer ekstenta -- odin sektor. Tak kak rasstoianie mezhdu sosednimi bitmapami svobodnykh sektorov ravno 16 MB, to i razmer maksimal'nogo ekstenta raven 16 MB. Esli fail sostoit iz vos'mi ili menee ekstentov, to ego opisanie tselikom khranitsia v FNode.

Esli fail sostoit bolee chem iz vos'mi ekstentov, to ego opisanie mozhet zanimat' neskol'ko sektorov, raspolozhennykh poblizhe k failu, pri etom eti sektora soderzhat ne spisok, a proshitoe sbalansirovannoe B+-derevo ekstentov. Derevo postroeno tak, chto ego razbalansirovka nikogda ne prevyshaet 1/3 po ob'iomu, i ono ne otlichaetsia ot optimal'nogo bolee chem na odin uroven'. Koren' dereva nakhoditsia v FNode, prichiom mozhet soderzhat' do 12 elementov. Kazhdyi dopolnitel'nyi sektor, predstavliaiushchii soboi vetku dereva, soderzhit do 60 elementov, a list -- 40 elementov. Takim obrazom, esli fail sostoit iz ekstentov po odnomu sektoru (etogo nikogda ne budet!) i imeet razmer 2 GB, dlia ego opisaniia potrebuetsia derevo sleduiushchei struktury: 12*60*60*60*40=53 MB list'ev i 1,7 MB vetok. Dlia sluchainogo dostupa k liuboi chasti faila pri etom potrebuetsia (v khudshem sluchae) 5 operatsii chteniia upravliaiushchikh struktur.

Real'nye faily sostoiat iz 1-3 ekstentov.

Maksimal'nyi razmer faila v HPFS seichas 2 GB, odnako on obuslovlen tol'ko razmerom polia pod razmer faila i failovym ukazatelem (4 baita) v samoi OS/2 i eio API. Eto ne predel HPFS. Sleduet pomnit', chto v HPFS otsutstvuet poniatie klastera, fail mozhet zanimat' 1, 2, 3, 4 ili liuboe drugoe kolichestvo sektorov.

Pri sozdanii/rasshirenii failov HPFS pytaetsia minimizirovat' kolichestvo ekstentov, ispol'zuia dlia etogo statistiku, bitovye karty svobodnykh sektorov i druguiu informatsiiu. Naprimer, HPFS staraetsia uslovno rezervirovat' khotia by 4 kilobaita mesta v kontse failov, kotorye rastut. Drugoi priiom: raspolozhenie konkurentno rastushchikh failov ili failov, otkrytykh raznymi tsepochkami ili protsessami, v raznykh polosakh diska.

Katalogi v HPFS, kak i v FAT, obrazuiut drevovidnuiu strukturu. No pri etom vnutri kataloga HPFS stroit sbalansirovannoe B*-derevo na osnove imion failov dlia bystrogo poiska faila po imeni vnutri kataloga. Naprimer, esli katalog soderzhit 4096 failov, FAT budet chitat' v srednem 64 sektora dlia poiska faila vnutri kataloga, a HPFS schitaet 2-4 sektora i naidiot fail.

Razmer bloka, v terminakh kotorykh vydeliaiutsia katalogi, raven 2 KB v tekushchei versii HPFS. Razmer zapisi, opisyvaiushchei fail, zavisit ot razmera imeni faila. Esli imia zanimaet 13 bait (8.3), to 2-kilobaitovyi blok vmeshchaet 41 opisatel' failov. Bloki proshity spiskom (kak i opisateli ekstentov) dlia oblegcheniia posledovatel'nogo obkhoda.

HPFS ne imeet FAT'ovskikh problem <> diskovogo prostranstva pri udalenii bol'shogo kolichestva failov v kataloge.

Pri pereimenovanii faila mozhet vozniknut' perebalansirovka dereva. Eta operatsiia mozhet potrebovat' vydeleniia dopolnitel'nykh blokov na zapolnennom diske. V etom sluchae bloki berutsia iz spetsial'nogo pula, ukazatel' na kotoryi lezhit v SpareBlock.

Rasshirennye atributy i ikh raznovidnost' ACL HPFS khranit v FNode. Esli oni ne vlezaiut v FNode, HPFS khranit ikh pochti kak fail, postroiv dlia etogo B+-Tree. Imena rasshirennykh atributov do HPFS386 ne vystraivalis' v B-Tree.

HPFS386

[pravit' | pravit' kod]

HPFS386 -- draiver dlia failovoi sistemy HPFS, kotoryi prednaznachen dlia servernykh sistem s bol'shoi nagruzkoi na diskovye operatsii. Draiver HPFS386 postavliaetsia s LAN Server dlia OS/2.

Osnovnye otlichiia HPFS386 ot shtatnogo HPFS-draivera v OS/2:

Literatura

[pravit' | pravit' kod]
Komponenty i API OS/2
Osnovnye
Sluzhby
upravleniia
Igry
Iadro OS
Failovye sistemy
Graficheskaia podsistema
Ob'ektnaia model'
Sovmestimost'
Diskovye
Opticheskie diski
Flesh-pamiat'/SSD
Klasternye
Raspredelionnye
(setevye)
Spetsial'nye
Psevdo- i virtual'nye
Shifrovannye
Istochnik -- https://ru.wikipedia.org/w/index.php?title=HPFS&oldid=147993120