HPFS (forkortet fra engelsk High performance file system ) er et filsystem udviklet af Microsoft og IBM specialister baseret på IBMs erfaring med at skabe MVS , VM filsystemer og en virtuel adgangsmetode. projektet ledet af den erfarne Gordon Letwin
HPFS-understøttelse dukkede først op i OS /2 version 1.2. Siden da har indbygget understøttelse af HPFS været til stede i alle versioner af OS/2 . Windows NT havde understøttelse af HPFS til og med version 3.51 (selvom der er succeshistorier for at bruge den gamle HPFS-driver i Windows NT 4.0 og Windows 2000). Efterfølgende opgav Microsoft HPFS til fordel for sit eget NTFS -filsystem , hvis udvikling tog højde for oplevelsen af at skabe HPFS.
På OS/2 er der en serverversion af HPFS-driveren kaldet HPFS386, som har nogle ekstra funktioner.
En disk i HPFS er opdelt i sektorer med en fast størrelse (512 bytes i den aktuelle implementering, mens sektorantallet eller antallet af sektorer er kodet internt som et 4-byte usigneret heltal, hvilket tillader adressering af diske op til 2 32 * 512 = 2 terabyte i størrelse ).
Der er flere kontrolblokke i begyndelsen af disken:
For at afgøre, om en sektor er ledig eller optaget, bruger HPFS bitmaps , hvor hver bit svarer til én sektor. Hvis biten indeholder 1, betyder det, at sektoren er optaget, ellers er den ledig. Hvis der kun var én bitmap på hele disken, så for at bytte den ud, ville du skulle flytte læse-/skrivehovederne i gennemsnit gennem halvdelen af disken. For at undgå dette opdeler HPFS disken i "bånd" (eller grupper , fra engelske bånd ) 8 megabyte lange og gemmer bitmaps af frie sektorer i begyndelsen eller slutningen af hver strimmel. I dette tilfælde er bitmaps af tilstødende bånd placeret side om side:
±----------- 16 MB -----------+ *** - Brug/Gratis sektor bitmap. | | ±-|------------------------------------------- ----+ |*** Bånd 0 | Bane 1 ***|*** Bane 2 | Band 3 ***| ±-------------------------- - ------------+ 0MB 8MB 16MB 24MB 32MBAfstanden mellem to bitmaps er 16 MB. Stribestørrelsen (8 MB) kan blive ændret i fremtidige versioner af HPFS, da der ikke er direkte links til den. HPFS bestemmer stribestørrelsen ved læsning af kontrolblokke fra disk under en FSHelperAttach-operation.
Bitmapstørrelsen er 2K (8MB/512/8 = 2K).
Strimlen i midten af disken bruges til at gemme mapper. Dette band kaldes Directory Band. Men hvis den bliver fuld, vil HPFS begynde at placere filmapper i andre baner.
Filer og mapper i HPFS er baseret på et grundlæggende objekt kaldet FNode . Hver FNnode optager én sektor og er i HPFS altid placeret i nærheden af sin fil eller mappe (normalt umiddelbart før filen eller mappen). FNoden indeholder længden og de første 15 tegn af filnavnet, statistik om filadgang, intern information, udvidede attributter og ACL'er (eller bare en del, hvis de er meget store), associative oplysninger om placering og underordning af filen osv. .
Længden af navnene på filer og mapper med fuld substitution (fra roden) bør ikke overstige 260 tegn, mens hver komponent af stien ikke bør være længere end 255 tegn. Følgende tegn er ikke tilladt i filnavne:
0h-1Fh , 7Fh , /, |, \, *, ?, ", <, >Efterfølgende mellemrumssekvenser ignoreres, hvis et punktum er i slutningen af filen, så ignoreres det også (af hensyn til programkompatibilitet). Inde i filnavnet er prikken det samme tegn som resten. Der er ingen problemer med russiske bogstaver. Når en fil oprettes, husker HPFS stavningen af dens navn, selvom den ikke skelner mellem små og store bogstaver i andre operationer end dem, der returnerer information om filen.
Navn eksempler:
Fra et placeringsperspektiv behandles filer, mapper og deres udvidede attributter (hvis de ikke passer ind i en FNnode) af HPFS som omfangssæt . Omfanget er den del af filen, der ligger i på hinanden følgende sektorer. Hver udstrækning er beskrevet med to tal: nummeret på den første sektor og længden (i sektorer). To på hinanden følgende udstrækninger er altid slået sammen til én af HPFS. Minimumsstørrelsen er én sektor. Da afstanden mellem tilstødende bitmaps af frie sektorer er 16 MB, er størrelsen af den maksimale udstrækning 16 MB. Hvis filen består af otte omfang eller mindre, gemmes hele dens beskrivelse i FNoden.
Hvis filen består af mere end otte udstrækninger, kan dens beskrivelse optage flere sektorer, der er placeret tættere på filen, mens disse sektorer ikke indeholder en liste, men et sammenføjet afbalanceret B + træ af omfang. Træet er konstrueret på en sådan måde, at dets ubalance aldrig overstiger 1/3 i volumen, og det adskiller sig ikke fra det optimale med mere end et niveau. Træets rod er i FNode og kan indeholde op til 12 elementer. Hver yderligere sektor, som er en trægren, indeholder op til 60 elementer, og et blad indeholder 40 elementer. Hvis en fil således består af én sektorudstrækning (det vil aldrig ske!) og har en størrelse på 2 GB, vil det kræve et træ med følgende struktur for at beskrive det: 12*60*60*60*40=53 MB af blade og 1,7 MB grene. For tilfældig adgang til enhver del af filen vil dette kræve (i værste fald) 5 læsninger af kontrolstrukturer.
Rigtige filer består af 1-3 omfang.
Den maksimale filstørrelse i HPFS er nu 2 GB, men dette bestemmes kun af størrelsen på filstørrelsesfeltet og filmarkøren (4 bytes) i selve OS / 2 og dets API . Dette er ikke HPFS-grænsen. Det skal huskes, at HPFS ikke har begrebet en klynge, en fil kan optage 1, 2, 3, 4 eller et hvilket som helst andet antal sektorer.
Når du opretter/udvider filer, forsøger HPFS at minimere antallet af omfang ved hjælp af statistik, gratis sektor bitmaps og anden information. For eksempel forsøger HPFS at reservere mindst 4 kilobyte plads i slutningen af filer, der vokser. Et andet trick er at placere konkurrencedygtigt voksende filer eller filer åbnet af forskellige kæder eller processer i forskellige diskstriber.
Mapper i HPFS, ligesom i FAT , danner en træstruktur. Men på samme tid bygger HPFS inde i biblioteket et afbalanceret B * træ baseret på filnavne for hurtigt at søge efter en fil efter navn inde i mappen. For eksempel, hvis en mappe indeholder 4096 filer, vil FAT i gennemsnit læse 64 sektorer for at finde en fil i mappen, mens HPFS vil læse 2-4 sektorer og finde filen.
Blokstørrelsen i forhold til hvilke mapper der er tildelt er 2 KB i den aktuelle version af HPFS. Størrelsen af en post, der beskriver en fil, afhænger af størrelsen på filnavnet. Hvis navnet er 13 bytes (8.3), så indeholder en 2-kilobyte blok 41 filbeskrivelser. Blokke er listesyet (ligesom omfangsbeskrivelser) for at lette sekventiel gennemkøring.
HPFS har ikke FATs problemer med at "lække" diskplads, når du sletter et stort antal filer i en mappe.
Omdøbning af en fil kan resultere i ombalancering af træet. Denne operation kan kræve tildeling af yderligere blokke på en fuld disk. I dette tilfælde tages blokkene fra en speciel pulje, hvortil markøren ligger i SpareBlock.
Udvidede attributter og deres variant ACL HPFS lagrer i FNode. Hvis de ikke passer ind i FNode, gemmer HPFS dem næsten som en fil ved at bygge et B±Tree til det. Udvidede attributnavne før HPFS386 var ikke opstillet i et B-træ.
HPFS386 er en driver til HPFS -filsystemet , som er designet til serversystemer med stor belastning på diskoperationer. HPFS386-driveren leveres med LAN-server til OS/2 .
De vigtigste forskelle mellem HPFS386 og standard HPFS-driveren i OS/2 :
API'er | OS/2 - komponenter og|
---|---|
Hoved | |
Management Services | |
Spil |
|
OS kerne | |
Filsystemer | |
Grafik undersystem |
|
Objektmodel | SOM
|
Kompatibilitet |
|
Filsystemer ( liste , sammenligning ) | |||||||
---|---|---|---|---|---|---|---|
Disk |
| ||||||
Distribueret (netværk) | |||||||
Særlig |
|