HPFS (lyhenne englanniksi High performance file system ) on Microsoftin ja IBM :n asiantuntijoiden kehittämä tiedostojärjestelmä, joka perustuu IBM:n kokemukseen MVS :n , VM -tiedostojärjestelmien ja virtuaalisen pääsyn luomisesta. projektia johti kokenut Gordon Letwin
HPFS-tuki ilmestyi ensimmäisen kerran OS /2 -versiossa 1.2. Siitä lähtien natiivi HPFS-tuki on ollut läsnä kaikissa OS/2 :n versioissa . Windows NT :ssä oli HPFS-tuki versioon 3.51 asti (vaikka vanhan HPFS-ohjaimen käyttämisestä Windows NT 4.0:ssa ja Windows 2000:ssa on menestystarinoita). Myöhemmin Microsoft luopui HPFS:stä ja siirtyi omaan NTFS -tiedostojärjestelmään , jonka kehittämisessä on otettu huomioon HPFS:n luomisesta saatu kokemus.
OS/2:ssa on HPFS-ohjaimen palvelinversio nimeltä HPFS386, jossa on joitain lisäominaisuuksia.
HPFS:ssä levy on jaettu kiinteän kokoisiin sektoreihin (nykyisessä toteutuksessa 512 tavua, kun taas sektorin numero tai sektorien lukumäärä on koodattu sisäisesti 4-tavuiseksi etumerkittömäksi kokonaisluvuksi, mikä mahdollistaa levyjen osoitteiden 2 32 * 512 = 2 teratavun kokoinen ).
Levyn alussa on useita ohjauslohkoja:
Sen määrittämiseksi, onko sektori vapaa vai varattu, HPFS käyttää bittikarttoja , joissa jokainen bitti vastaa yhtä sektoria. Jos bitti sisältää 1, tämä tarkoittaa, että sektori on varattu, muuten se on vapaa. Jos koko levyllä olisi vain yksi bittikartta, sen vaihtamiseksi sinun on siirrettävä luku-/kirjoituspäät keskimäärin puolen levyn läpi. Tämän välttämiseksi HPFS jakaa levyn "bändeiksi" (tai ryhmiksi , englanninkielisistä kaistoista ) 8 megatavua pituisiksi ja tallentaa bittikartat vapaista sektoreista jokaisen nauhan alkuun tai loppuun. Tässä tapauksessa vierekkäisten kaistojen bittikartat sijaitsevat vierekkäin:
±----------- 16 Mt -----------+ *** - Käytä/vapaa sektoribittikartta. | | ±-|--------------------------±--|--±------------------- ----+ |*** Kaista 0 | Kaista 1 ***|*** Kaista 2 | Bändi 3 ***| ±-------------------------------------------------±- ------------+ 0MB 8MB 16MB 24MB 32MBKahden bittikartan välinen etäisyys on 16 Mt. Raidan kokoa (8 Mt) voidaan muuttaa tulevissa HPFS-versioissa, koska siihen ei ole suoria linkkejä. HPFS määrittää raidan koon luettaessa ohjauslohkoja levyltä FSHelperAttach-toiminnon aikana.
Bittikartan koko on 2K (8MB/512/8 = 2K).
Levyn keskellä olevaa nauhaa käytetään hakemistojen tallentamiseen. Tätä bändiä kutsutaan nimellä Directory Band. Jos se kuitenkin täyttyy, HPFS alkaa sijoittaa tiedostohakemistoja muille kaistoille.
HPFS:n tiedostot ja hakemistot perustuvat perusobjektiin nimeltä FNode . Jokainen FSolmu vie yhden sektorin ja sijaitsee HPFS:ssä aina lähellä sen tiedostoa tai hakemistoa (yleensä välittömästi ennen tiedostoa tai hakemistoa). FNode sisältää tiedostonimen pituuden ja ensimmäiset 15 merkkiä, tiedostojen käyttötilastot, sisäiset tiedot, laajennetut attribuutit ja ACL : t (tai vain osan, jos ne ovat erittäin suuria), assosiatiivisia tietoja tiedoston sijainnista ja alaisuudesta jne. .
Täysin korvattujen tiedostojen ja hakemistojen nimien pituus (juuresta) ei saa ylittää 260 merkkiä, kun taas jokainen polun komponentti ei saa olla pidempi kuin 255 merkkiä. Seuraavat merkit eivät ole sallittuja tiedostonimissä:
0h- 1Ft , 7Fh , /, |, \, *, ?, ", <, >Jäljellä olevat välilyönnit ohitetaan, jos piste on tiedoston lopussa, myös se ohitetaan (ohjelman yhteensopivuuden vuoksi). Tiedostonimen sisällä oleva piste on sama merkki kuin muut. Venäläisten kirjainten kanssa ei ole ongelmia. Kun tiedosto luodaan, HPFS muistaa sen nimen kirjoitusasun, vaikka se ei erottele kirjaimia muissa toimissa kuin niissä, jotka palauttavat tietoja tiedostosta.
Nimiesimerkkejä:
Sijainnin näkökulmasta HPFS käsittelee tiedostoja, hakemistoja ja niiden laajennetut attribuutit (jos ne eivät mahdu FSolmuun ) laajuusjoukkoina . Laajuus on tiedoston se osa, joka sijaitsee peräkkäisissä sektoreissa. Kutakin laajuutta kuvataan kahdella numerolla: ensimmäisen sektorin numerolla ja pituudella (sektorilla). HPFS yhdistää aina kaksi peräkkäistä laajuutta yhdeksi. Pienin laajuus on yksi sektori. Koska vapaiden sektoreiden vierekkäisten bittikarttojen välinen etäisyys on 16 MB, enimmäislaajuuden koko on 16 MB. Jos tiedosto koostuu kahdeksasta laajuudesta tai vähemmän, sen koko kuvaus tallennetaan FNodeen.
Jos tiedosto koostuu useammasta kuin kahdeksasta laajuudesta, sen kuvaus voi sisältää useita tiedostoa lähempänä olevia sektoreita, kun taas nämä sektorit eivät sisällä listaa, vaan ommeltu tasapainotettu B + laajuuspuu . Puu on rakennettu siten, että sen epätasapaino ei koskaan ylitä 1/3 tilavuudesta eikä se poikkea optimaalisesta enempää kuin yhdellä tasolla. Puun juuri on FNodessa ja voi sisältää enintään 12 elementtiä. Jokainen lisäsektori, joka on puun haara, sisältää enintään 60 elementtiä ja lehti sisältää 40 elementtiä. Siten, jos tiedosto koostuu yhdestä sektorin laajuudesta (se ei koskaan tapahdu!) ja sen koko on 2 Gt, se vaatii seuraavan rakenteen kuvaamaan sitä: 12*60*60*60*40=53 Mt. lehtiä ja 1,7 Mt oksia. Satunnainen pääsy mihin tahansa tiedoston osaan vaatii (pahimmassa tapauksessa) 5 ohjausrakenteiden lukua.
Oikeat tiedostot koostuvat 1-3 laajuudesta.
HPFS:n suurin tiedostokoko on nyt 2 Gt, mutta tämä määräytyy vain tiedostokokokentän koon ja tiedostoosoittimen (4 tavua) mukaan itse OS / 2:ssa ja sen API :ssa . Tämä ei ole HPFS-raja. On syytä muistaa, että HPFS:llä ei ole klusterin käsitettä, tiedosto voi sisältää 1, 2, 3, 4 tai minkä tahansa muun määrän sektoreita.
Kun luot/laajennat tiedostoja, HPFS yrittää minimoida laajuuksien määrän tilastojen, vapaiden sektorien bittikarttojen ja muiden tietojen avulla. Esimerkiksi HPFS yrittää varata ehdollisesti vähintään 4 kilotavua tilaa kasvavien tiedostojen loppuun. Toinen temppu on sijoittaa kilpailukykyisesti kasvavat tiedostot tai eri ketjujen tai prosessien avaamat tiedostot eri levyjuoille.
HPFS:n hakemistot, kuten FAT :ssa , muodostavat puurakenteen. Mutta samaan aikaan HPFS rakentaa hakemiston sisällä tasapainotetun B * -puun tiedostonimien perusteella etsiäkseen nopeasti tiedoston nimen mukaan hakemistosta. Jos hakemistossa on esimerkiksi 4096 tiedostoa, FAT lukee keskimäärin 64 sektoria löytääkseen tiedoston hakemistosta, kun taas HPFS lukee 2-4 sektoria ja löytää tiedoston.
Lohkon koko, jonka mukaan hakemistoja varataan, on 2 kt nykyisessä HPFS-versiossa. Tiedostoa kuvaavan tietueen koko riippuu tiedostonimen koosta. Jos nimi on 13 tavua (8.3), niin 2 kilotavun lohko sisältää 41 tiedostokuvaajaa. Lohkot on ommeltu listalla (samoin kuin laajuuskuvaajat) peräkkäisen läpikulun helpottamiseksi.
HPFS:llä ei ole FAT -ongelmia "vuotaa" levytilaa, kun poistetaan suuri määrä tiedostoja hakemistosta.
Tiedoston uudelleennimeäminen voi johtaa puun tasapainottamiseen. Tämä toiminto saattaa edellyttää lisälohkojen varaamista täydelle levylle. Tässä tapauksessa lohkot otetaan erityisestä poolista, jonka osoitin on SpareBlockissa.
Laajennetut attribuutit ja niiden muunnelmat ACL HPFS tallentaa FNodeen. Jos ne eivät mahdu FNodeen, HPFS tallentaa ne melkein kuin tiedosto rakentamalla sitä varten B±-puun. HPFS386:ta edeltäviä laajennettuja määritteiden nimiä ei ollut rivissä B-puussa.
HPFS386 on HPFS - tiedostojärjestelmän ohjain , joka on suunniteltu palvelinjärjestelmille , joissa levytoimintoja kuormitetaan raskaasti. HPFS386-ohjain toimitetaan OS/2 :n LAN-palvelimen mukana .
Tärkeimmät erot HPFS386:n ja tavallisen HPFS-ohjaimen välillä OS/2 :ssa:
API:t | OS/2 - komponentit ja|
---|---|
Main | |
Hallintopalvelut _ | |
Pelit |
|
OS-ydin | |
Tiedostojärjestelmät | |
Grafiikka alijärjestelmä |
|
Objekti malli | SOM
|
Yhteensopivuus |
|
Tiedostojärjestelmät ( luettelo , vertailu ) | |||||||
---|---|---|---|---|---|---|---|
Levy |
| ||||||
Hajautettu (verkko) | |||||||
Erityinen |
|