Hoofdstuk – 3
Logische benadering van schijven en besturingssysteem
De harde schijf kan zijn hardware niet zelf draaien en heeft twee basissoftware nodig om zijn operaties uit te voeren, het BIOS (Basic Input Output System) en het DOS (of besturingssysteem). Het schijfbesturingssysteem praat niet rechtstreeks met de hardware van de computer en de harde schijf, maar heeft het BIOS ertussen nodig. Daarom heeft het BIOS een belangrijke rol gespeeld in de computer.
BIOS
De basistaak van BIOS is om een standaardinterface te bieden tussen de hardware of de apparaten die op de computer zijn aangesloten en de DOS. Het systeem-BIOS is de interface op het laagste niveau tussen de hardware van uw systeem en de software die erop draait . Het heeft verschillende belangrijke rollen die het speelt bij de controle van toegang tot harde schijven, zoals:
- BIOS-onderbrekingsroutines
- Detectie en configuratie van harde schijf
- Ondersteuning voor harde schijf-interfacemodus
Om de interoperabiliteit van verschillende hardware- en softwareproducten te garanderen, is het BIOS van het systeem afgestemd op de behoeften van de hardware en biedt het een standaardmanier om software de hardware te laten aanspreken. Dit worden BIOS-services genoemd en worden door veel besturingssystemen en toepassingsprogramma's gebruikt. Ze bieden een uniforme interface naar de harde schijf, zodat applicaties niet hoeven te weten hoe ze met elk type harde schijf afzonderlijk moeten praten.
Standaard IDE/ATA harde schijven worden in het BIOS geconfigureerd met verschillende BIOS-instellingen. Moderne BIOS-programma's kunnen moderne IDE/ATA-schijven detecteren om deze parameters te bepalen en ze automatisch te configureren. Het BIOS bepaalt welke typen interfacemodi kunnen worden gebruikt met de harde schijf, werkend met de systeemchipset op het moederbord en de systeem-I/O-bus.
De INT 13H-interface en INT 13H-uitbreidingen
De primaire interface naar het BIOS was de software-interrupt 13H, die algemeen bekend staat als INT 13H, waarbij INT staat voor interrupt en 13H het getal 19 is in hexadecimale notatie.
We zullen het gebruik van interrupts bij het programmeren in detail leren en bespreken in de programmeerfase van dit boek. De Int13H-interface ondersteunt veel verschillende commando's die aan de BIOS kunnen worden gegeven, die ze vervolgens doorgeeft aan de harde schijf. De interrupt 13H omvat de meeste taken die we met de schijf moeten uitvoeren, zoals lezen, schrijven, formatteren enz.
Het gebruik en het werken met Int13H vereist dat het aanroepende programma de specifieke parameters van de harde schijf kent en de routines exacte kop-, cilinder- en sectoradressering geeft om schijftoegang mogelijk te maken.
Het BIOS gebruikt de geometrie voor de harde schijf zoals deze is ingesteld in het BIOS-setupprogramma. De Int13H-interface wijst 24 bits toe voor de specificatie van de geometrie van de schijf, als volgt onderverdeeld:
- 10 bits voor het cilindernummer, of een totaal van 1024 cilinders.
- 8 bits voor het kopnummer, of een totaal van 256 hoofden.
- 6 bits voor het sectornummer, of in totaal 63 sectoren.
Dus het maximaal mogelijke aantal sectoren op de schijf kan zijn
= 1024 * 256 * 63
= 16515072
Zoals we hier zien, kan de INT 13H-interface schijven ondersteunen met maximaal 16515072 sectoren met 512 bytes per sector. Dus de maximale schijfgrootte kan zijn,
= 16515072 * 512
= 8455716864 Bytes
~ 8.456 GB
Zo kan de INT 13H-interface een schijfgrootte van ongeveer 8,456 GB (of 7,875 GiB) ondersteunen.
Vandaag de dag gebruiken de meeste computergebruikers harde schijven die veel groter zijn in capaciteit dan 8 GB. Daarom is de INT 13H-interface eindelijk aan het einde van zijn bruikbaarheid in moderne computersystemen en is vervangen door een nieuwere interface genaamd INT 13H-extensies, maar INT 13H kan nog steeds worden gebruikt door DOS en sommige andere oudere besturingssystemen en voor andere compatibiliteitsdoeleinden.
Int 13H-extensies
Het is echt een interessant verhaal dat toen de INT 13H-interface werd ontwikkeld, niemand ooit verwachtte de 8 GB-grootte op de harde schijf te krijgen. Maar tegenwoordig kunnen we een harde schijf van 8 GB veel kleiner vinden, zelfs voor de pc van de thuisgebruiker.
De oudere standaard heeft een belangrijke beperking dat deze 24 bits adresseringsinformatie gebruikt en als zodanig alleen schijven kan verwerken die maximaal 16515072 sectoren bevatten met 512 bytes per sector, wat een maximale capaciteit van 8,456 GB (of 7,875 GiB) oplevert.
Het probleem was dus om het toegangspad te verbreden van 24 bits naar iets groters, maar het was niet mogelijk om de bestaande INT13H BIOS-interface uit te breiden, omdat als we dit zouden proberen, veel oudere hardware en software niet meer zouden werken. En praktisch gezien is er geen hoop om de respectabele plek in de computerwereld te krijgen met veel oudere hardware en software die niet werken met je ontwikkeling.
Daarom is een nieuwe interface ontwikkeld om Int13H te vervangen. Deze routines worden Int13H-extensies genoemd. Deze nieuwe interface gebruikt 64 bits in plaats van 24 bits voor adressering en staat een maximale harde schijfgrootte toe van 9,4 * 10 21 bytes, ofwel 9,4 biljoen gigabytes.
We zullen het gebruik van beide, de INT 13H- en INT 13H-extensies, leren in het programmeergedeelte van dit boek. Er zijn een aantal andere groottebeperkingen die in de vroegere dagen plaatsvonden. Enkele van de populaire logische en fysieke limieten zijn hieronder beschreven:
De limiet van 2,1 GB
Deze maximale grootte werd waargenomen in sommige oudere BIOS'en die alleen 12 bits toewijzen voor het veld in CMOS RAM dat het aantal cilinders aangeeft. Daarom mag dit nummer maximaal 111111111111B zijn (maximaal mogelijk 12-bits binair getal), wat overeenkomt met 4095. Op deze manier is de maximale schijfgrootte met 16 koppen die toegankelijk is:
= 4095 * 16 * 63 * 512 Bytes
= 2113413120 Bytes are accessible.
De limiet van 33,8 GB
Deze barrière ter grootte van een harde schijf werd begin 1999 opgemerkt. Grote schijven melden 16 koppen, 63 sectoren/spoor en 16383 cilinders. Veel BIOS'en berekenen een werkelijk aantal cilinders door de totale capaciteit te delen door 16*63.
Voor schijven groter dan 33,8 GB leidt dit tot een aantal cilinders groter dan 65535. In dit specifieke geval kunnen sommige versies van Award BIOS geen schijven aan met meer dan 65.535 cilinders. Nu crasht het BIOS of loopt het vast. Aangezien de parameters van de harde schijf gewoonlijk 16 koppen en 63 sectoren gebruiken, komt dit neer op een capaciteit van ongeveer 33,8 GB of 31,5 GiB voordat er problemen optreden.
De oplossing is om het BIOS te upgraden of je kunt een jumper gebruiken om de schijf kleiner te laten lijken.
ATA-specificatie voor IDE-schijven - De limiet van 137 GB
De oude ATA-specificatie staat geen toegang toe tot een schijf die groter is dan 137 GB. Eigenlijk gebruikt het slechts 28 bits om een sectornummer op te geven. ATA-6 definieert echter een extensie met een 48-bits sectornummer.
De limiet van de schijfgrootte is gegenereerd met de combinatie van maximaal 65536 cilinders die van 0 tot 65535 tellen, 16 koppen die tellen van 0 tot 15 en 255 sectoren per track die van 1 tot 255 tellen, de maximale totale schijfcapaciteit,
= 65535 * 16 * 255 Sectors
= 267386880 Sectors
= 136902082560 Bytes (Sector of 512 Bytes Each)
~ 137 GB
Twee en vier schijven BIOS IDE-ondersteuning
Tegenwoordig ondersteunen de meeste moderne BIOS-programma's automatische detectie van harde schijven, waardoor het BIOS elke harde schijf kan ondervragen om de logische geometrie, ondersteunde overdrachtsmodi en andere informatie te bepalen. Dit kan worden gedaan tijdens het instellen of dynamisch elke keer dat de machine wordt opgestart, afhankelijk van het BIOS.
Het systeem-BIOS biedt native ondersteuning voor IDE/ATA harde schijven, daarom kunnen er een aantal parameters zijn die kunnen worden ingesteld om het BIOS te vertellen welke harde schijven zich in het systeem bevinden en hoe deze te besturen. Elke harde schijf in het systeem heeft zijn eigen instellingen, dus er is één set voor de primaire master en één voor de primaire slave, enzovoort. SCSI-harde schijven worden echter geconfigureerd via hun hostadapter en ingebouwde SCSI BIOS.
Omdat harde schijven van meer dan 8 GB niet kunnen worden beschreven met behulp van traditionele IDE/ATA BIOS-geometrieparameters, is dynamische automatische detectie de standaardmanier om moderne schijven in te stellen, vooral in het geval van oudere computersystemen, maar de gebruiker kan nog steeds stel enkele aandrijfparameters handmatig in.
Hierna volgen de instellingen die u normaal in het BIOS-setupprogramma vindt voor het configureren van IDE/ATA-harde schijven. Hoewel op moderne systemen sommige van de oudste compatibiliteitsinstellingen misschien niet eens meer aanwezig zijn:
- Schijftype: het werd oorspronkelijk gebruikt om de gebruiker zijn harde schijf te laten kiezen uit een vooraf gedefinieerde lijst, maar wordt nu gebruikt om de automatische of handmatige instelling van parameters voor de schijf te regelen.
- Grootte: Grootte van de harde schijf in decimale megabytes. Het wordt berekend op basis van de andere parameters zoals cilinders, koppen en sectoren enz.
- Cilinders: het aantal logische cilinders op de schijf.
Heads: Het aantal logische heads op de schijf.
- Sectors: het aantal logische sectoren van elk 512 bytes, in elk logisch spoor op de schijf. Gewoonlijk hebben moderne harde schijven 63 sectoren op één spoor.
- Write Precompensation: het is een compatibiliteitsinstelling die specificeert bij welke cilindernummer schrijfaanpassingen moeten worden gemaakt voor zeer veel oudere schijven.
- Landing Zone (Parking Heads): Landing Zone is de cilinder waar de koppen door het BIOS worden geparkeerd om gegevensverlies of het creëren van slechte sectoren te voorkomen wanneer de schijf wordt uitgeschakeld. Omdat de moderne harde schijven hun hoofd automatisch parkeren, is dit tegenwoordig zelden nodig.
- Vertaalmodus: de BIOS-vertaalmodus die wordt gebruikt om harde schijven van meer dan 504 MB te ondersteunen.
- Blokmodus: om de mogelijkheid van het BIOS te regelen om schijfoverdrachten in blokken uit te voeren.
- Geprogrammeerde I/O (DMA)-modus: de geprogrammeerde I/O-modus of DMA-modus die wordt gebruikt om overdrachten van en naar de harde schijf uit te voeren.
- 32-bits overdrachtsmodus: regelt het gebruik van krachtigere 32-bits gegevensoverdrachten.
Beperkingen in bestandssystemen
Elk bestandssysteem ondersteunt een maximale volumegrootte, bestandsgrootte en aantal bestanden per volume.
Nu zijn bijvoorbeeld over het algemeen FAT16- en FAT32-volumes beperkt tot respectievelijk 4 GB en 32 GB (in het algemeen). Er zijn enkele beperkingen met betrekking tot FAT-bestandssystemen die u moet kennen, hieronder weergegeven:
- FAT12: FAT-volumes kleiner dan 16 MB worden geformatteerd als FAT12. Het is het oudste FAT-type en gebruikt een 12-bits binair bestand om clusternummers vast te houden. Een volume dat is geformatteerd met FAT12 kan maximaal 4.086 clusters bevatten, wat gelijk is aan 2 12 minus een paar gereserveerde waarden voor gebruik in FAT. (We zullen het in detail bespreken in de logische structuur van de schijf die hierna in dit hoofdstuk wordt gegeven). Daarom is FAT12 het meest geschikt voor kleinere volumes. Het wordt gebruikt op diskettes en harde schijfpartities die kleiner zijn dan ongeveer 16 MB.
- FAT16: De FAT16 gebruikt een 16-bits binair getal om clusternummers vast te houden. Een volume dat FAT16 gebruikt, kan maximaal 65.526 clusters bevatten, wat gelijk is aan 2 16 minus een paar gereserveerde waarden voor gebruik in FAT. (We zullen het in detail bespreken in de logische structuur van de schijf die hierna in dit hoofdstuk wordt gegeven). FAT16 wordt gebruikt voor harde-schijfvolumes die in grootte variëren van 16 MB tot 2.048 MB. FAT16-volumes groter dan 2 GB zijn niet toegankelijk vanaf computers met MS-DOS, Windows 95/98/ME en vele andere besturingssystemen. Deze beperking treedt op omdat deze besturingssystemen geen clustergroottes groter dan 32 KB ondersteunen, wat resulteert in de limiet van 2 GB. (Zie de Clusterslimiet die hierna in dit hoofdstuk wordt gegeven).
- FAT32: In theorie kunnen de maximale FAT32-volumes oplopen tot 2048 GB (ongeveer 2 Terabytes). De FAT32 wordt ondersteund door de OEM SR2-release van Windows 95, evenals door Windows 98/ME. FAT32 gebruikt een 28-bits binair clusternummer (Vergeet niet! niet 32, want 4 van de 32 bits zijn "Gereserveerd"). Dus theoretisch kan FAT32 volumes aan met meer dan 268 miljoen clusters (eigenlijk 268.435.456 clusters), en ondersteunt het schijven tot 2 TB groot. Om dit te doen, wordt de FAT echter erg groot. (We gaan het bespreken in de volgende onderwerpen in dit hoofdstuk).
De vergelijking van FAT Types is hierna gegeven in de tabel.
NTFS: NTFS staat voor New Technology File System. Het wordt gebruikt door Windows 2000/XP. In theorie is de maximale NTFS-partitiegrootte (2 64 – 1) clusters.
De gedetailleerde beschrijving van het NTFS-bestandssysteem gaat de limiet van dit boek te boven, maar er zijn enkele beperkingen ervan gegeven in de volgende tabel:
Description
|
Limit |
Maximum file size
|
16 Exabytes – 1 KB (2 64 Bytes – 1 KB) |
Maximum volume size
|
(2 64 – 1) clusters |
Files (and Folders) per volume
|
4,294,967,295 (2 32 – 1 ) Flies and Folders |
Cluster
De kleinste eenheid van ruimte op de harde schijf voor toewijzing waartoe software toegang heeft, is de sector , die 512 bytes bevat. Het is mogelijk om een toewijzingssysteem voor de schijf te hebben waarbij aan elk bestand zoveel individuele sectoren worden toegewezen als nodig is. Een bestand van 1 MB zou bijvoorbeeld ongeveer 2.048 afzonderlijke sectoren nodig hebben om de gegevens op te slaan.
In het geval van een FAT-bestandssysteem, of beter gezegd, in de meeste bestandssystemen, worden individuele sectoren niet gebruikt. Hiervoor zijn verschillende prestatieredenen. Wanneer DOS wat informatie naar de harde schijf schrijft, wijst het de ruimte niet sectorgewijs toe, maar gebruikt het een nieuwe opslageenheid genaamd cluster.
FAT is vele jaren geleden ontworpen en is een eenvoudig bestandssysteem dat niet in staat is om individuele sectoren te beheren. Wat FAT in plaats daarvan doet, is sectoren groeperen in grotere blokken die clusters of toewijzingseenheden worden genoemd.
Een cluster is de kleinste eenheid schijfruimte die aan een bestand kan worden toegewezen. Dit is de reden dat de clusters vaak allocatie-eenheden worden genoemd. Het kan erg moeilijk zijn om de schijf te beheren wanneer bestanden worden opgedeeld in stukjes van 512 bytes.
Een schijfvolume van 20 GB met afzonderlijk beheerde sectoren van 512 bytes zou meer dan 41 miljoen afzonderlijke sectoren bevatten, en het bijhouden van deze vele stukjes informatie kost veel tijd en middelen. Sommige besturingssystemen wijzen echter per sector ruimte toe aan bestanden, maar ze hebben geavanceerde intelligentie nodig om dit goed te doen.
Clusters zijn de minimale ruimte die door de DOS wordt toegewezen bij het opslaan van informatie op de schijf. Zelfs om slechts één byte lange informatie op de schijf op te slaan, is minimaal één clustergebied op het schijfoppervlak vereist.
Als één cluster 512 bytes aan informatie kan opslaan, dan heb je twee clusters nodig om 513 bytes op te slaan. Aan elk bestand moet een geheel aantal clusters worden toegewezen. Dit betekent dat als een volume clusters gebruikt die 4.096 bytes bevatten, een bestand van 610 bytes één cluster gebruikt, dus 4.096 bytes op de schijf, maar een bestand van 4.097 bytes gebruikt twee clusters, dus 8.192 bytes op de schijf.
Dit is de reden dat de clustergrootte zo belangrijk is om ervoor te zorgen dat u het efficiënte gebruik van de schijf maximaliseert. We kunnen dus begrijpen dat de grotere clustergroottes resulteren in meer verspilde ruimte.
De volgende afbeelding toont de eigenschappen van een bestand met de naam BINARY.C en verduidelijkt het feit van de ruimte die door het bestand op de schijf wordt gebruikt. De werkelijke grootte van het bestand is 610 bytes, maar aangezien het enkele cluster 4.096 bytes is, gebruikt het bestand één cluster (4.096 bytes) op de schijf.
Een cluster kan bestaan uit een of meer sectoren. Het hangt af van het schijftype dat wordt gebruikt. Aangezien een cluster uit meer dan één sector kan bestaan, verkleint het gebruik van clusters als toewijzingseenheid de grootte van de bestandstoewijzingstabel die DOS gebruikt om de informatie over de gebruikte en lege schijfruimte te bewaren.
De clustergrootte wordt voornamelijk bepaald door de grootte van het schijfvolume. Als het niet strikt genomen is, gebruiken grotere volumes over het algemeen grotere clustergroottes. Voor harde-schijfvolumes varieert elk cluster in grootte van 4 sectoren (2.048 bytes) tot 64 sectoren (32.768 bytes).
Floppy disks gebruiken veel kleinere clusters, en in sommige gevallen een cluster met een grootte van slechts 1 sector. De sectoren in een cluster zijn aaneengesloten, dus elke cluster is een aaneengesloten blok ruimte op de schijf.
De clustergrootte en dus de partitie- of volumegrootte, omdat ze direct gerelateerd zijn, heeft een belangrijke invloed op de prestaties en het schijfgebruik. De clustergrootte wordt bepaald wanneer het schijfvolume wordt gepartitioneerd.
Er zijn enkele hulpprogramma's zoals Partition Magic beschikbaar die de clustergrootte van een bestaande partitie kunnen wijzigen binnen de limieten van specifieke voorwaarden, maar in de algemene gevallen, zodra de partitiegrootte en clustergrootte zijn geselecteerd, is deze vast.
Zoals we eerder hebben besproken, begint het cilinder- of tracknummer vanaf 0 en wordt het eerste sectornummer altijd als 1 beschouwd en nog een ding dat u moet onthouden, is dat het eerste clusternummer altijd als 2 wordt genomen.
Clustergrootte
Clusters worden gebruikt om het opslaggebied alleen aan het gegevensgebied toe te wijzen. FAT en directorygebied worden niet toegewezen op basis van de clustergrootte. Op een schijf die sectoren van 512 bytes gebruikt, bevat een cluster van 512 bytes één sector, terwijl een cluster van 4 KB 8 sectoren bevat.
De volgende tabellen geven een overzicht van de standaard clustergroottes die door DOS worden gebruikt voor verschillende schijfindelingen. De grootte van het cluster kan in sommige omstandigheden echter afwijken van de standaardgrootte:
Floppy Disk Drive (FDD) |
Drive Types |
Sectors/Cluster |
Total Cluster size in bytes (Sectors of 512 bytes Each) |
5.25” 360Kb FDD |
2 sectors |
1,024 |
5.25”1.2Mb FDD |
1 sector |
512 |
3.5” 720Kb FDD |
2 sectors |
1,024 |
3.5”1.44Mb FDD |
1 sector |
512 |
3.5”2.88MB FDD |
2 sectors |
1,024 |
FAT16, FAT32 en NTFS gebruiken elk verschillende clustergroottes, afhankelijk van de grootte van de partitie en elk bestandssysteem heeft een maximum aantal clusters dat het kan ondersteunen. Hoe kleiner de clustergrootte, hoe efficiënter een schijf informatie opslaat omdat ongebruikte ruimte binnen een cluster niet door andere bestanden kan worden gebruikt.
De volgende tabel toont de standaard clustergroottes voor FAT16 , FAT32 en NTFS-bestandssysteempartities. FAT 32 maakt veel efficiëntere opslag en gebruik van grotere harde schijven mogelijk, 32 bit FAT is alleen compatibel met Windows 95 OSR-2 en Windows 98/ME en. FAT 16 wordt ondersteund door MS-DOS, Windows 3.1, Windows 95 en Windows NT. De besturingssystemen Windows 2000/XP gebruiken het NTFS-bestandssysteem.
Opmerking: Hier is 1 KiB geschreven voor 1 binaire kilobyte, wat betekent dat 1 KiB 1024 bytes is, of we kunnen zeggen dat twee sectoren van 512 bytes gelijk zijn aan 1KiB.
Naarmate de grootte van de FAT16-partitie toeneemt, neemt ook de verspilling van schijfruimte toe. Het gebruik van FAT32 verkleint de clustergroottes en zorgt zo voor een efficiënte opslag. Hoewel FAT32 het gebruik van grotere harde schijven en sterk verminderde clustergroottes toestaat, is er een belangrijke prestatieoverweging bij het gebruik van FAT32 dat de enorme harde schijven met tientallen gigabytes FAT32 essentieel hebben gemaakt voor nieuwere systemen. We kunnen eerder zeggen dat je vaak geen praktische keuze meer hebt tussen FAT16 en FAT32.
Laten we eens kijken naar een partitie van 2.048 MB, de grootste die FAT16 kan ondersteunen. Als deze partitie is ingesteld onder FAT16, resulteert dit in een bestandstoewijzingstabel met 65.526 clusters erin, waarbij elk cluster 32 KiB schijfruimte in beslag neemt.
De grote clustergrootte zal inderdaad leiden tot een grote verspilling van schijfruimte. Daarom wordt aanbevolen om FAT32 op deze partitie te gebruiken, wat zal resulteren in een vermindering van de clustergrootte van 32 KiB naar 4 KiB.
In feite zal dit de speling op de schijf enorm verminderen, tot wel 30% en mogelijk honderden megabytes aan voorheen verspilde schijfruimte vrijmaken. Het is meestal het juiste om te doen in deze situatie. Het heeft echter een andere kant. We krijgen deze kleinere clustergrootte niet gratis.
Omdat elk cluster kleiner is, moeten er meer zijn om dezelfde hoeveelheid schijf te dekken. Dus in plaats van 65.526 clusters hebben we nu 524.208.
Verder zijn de FAT-vermeldingen in FAT32 32-bits breed (elke invoer van 4 bytes), terwijl de vermeldingen van FAT16 16-bits zijn (invoer van elk 2 bytes). Het eindresultaat is dat de FAT 16 keer groter is voor FAT32 dan voor FAT16. De volgende tabel vat samen:
FAT 16 and FAT 32 for 2,048 MB Disk Volume |
FAT Type |
FAT16 |
FAT32 |
Cluster Size |
32 KiB |
4 KiB |
Number of FAT Entries |
65,526 |
524,208 |
Size of FAT |
131052 Bytes
(~ 128 KiB) |
2096832 Bytes
(~ 2 MiB) |
Als we de omvang van het FAT32-volume vergroten van 2 GB naar 8 GB, neemt de omvang van de FAT toe van ongeveer 2 MiB naar 8 MiB. De betekenis hiervan is niet het feit dat het FAT32-volume enkele megabytes aan ruimte op de schijf zal moeten verspillen om de FAT vast te houden. Omdat alleen door dit te doen veel meer ruimte wordt bespaard dan door de grootte van FAT te verkleinen. Het echte probleem is dat de FAT alle clusteraanwijzers voor elk bestand in het volume bevat. Als de FAT enorm in omvang toeneemt, kan dit een negatieve invloed hebben op de systeemsnelheid.
Om deze reden is het belangrijk om de grootte van de bestandstoewijzingstabel te beperken tot een redelijk groot aantal. In feite is het in de meeste gevallen een kwestie van het vinden van een balans tussen clustergrootte en FAT-grootte. Een goede illustratie hiervan zijn de selecties van de clustergrootte die door FAT32 zelf worden gemaakt.
Aangezien FAT32 ongeveer 268 miljoen maximale clusters aankan, kan de clustergrootte van 4 KiB conceptueel een schijfvolume van 1 TiB (1024 GiB) ondersteunen, maar het probleem daarbij is dat de FAT-grootte dan groter zou zijn dan 1 GB volgens 268 miljoen keer 4 bytes per invoer.
Om deze reden gebruikt FAT32 slechts 4 KiB-clusters voor volumes tot 8 GiB groot, en daarna worden grotere clusters gebruikt, zoals weergegeven in de bovenstaande tabel, voor clustergroottes. De maximale partitiegrootte die wordt ondersteund door FAT32, die officieel is gedeclareerd, is 2.048 GiB (2 TiB).
Logische structuur van een harde schijf
Kortom, we kunnen de logische structuur van de harde schijf in de volgende vijf logische termen verdelen:
- MBR (Master Boot Record)
- DBR (DOS-opstartrecord)
- FAT (Bestandstoewijzingstabellen)
- Hoofdmap
- Gegevensgebied
De volgende afbeelding geeft de conceptuele rangschikking weer van deze logische termen die de logische structuur van een harde schijf vormen:
De Master Boot Record (MBR) of soms de Master Partition Table (MPT) genoemd, bevat een klein programma om de actieve (of opstartbare) partitie vanaf de harde schijf te laden en te starten. De Master boot Record bevat informatie over alle vier de primaire partities op de harde schijf, zoals de startsector, eindsector, grootte van de partitie enz.
De MBR bevindt zich op Absolute Sector 0 of we kunnen zeggen op cilinder 0, head 0 en sector1 en als er meer dan één partitie op de schijf aanwezig is, zijn er Extended Master Boot Records, aan het begin van elk uitgebreid partitievolume (Zie de afbeelding hiernaast).
De MBR wordt op de harde schijf gemaakt door de opdracht FDISK.EXE van DOS uit te voeren. Er zijn echter veel andere software beschikbaar om dezelfde taak uit te voeren. Met behulp van de FDISK kan elk van deze partities actief of opstartbaar worden gemaakt.
Hierdoor kan de opstartsector van de actieve partitie de besturing ontvangen wanneer het systeem wordt gestart. Aangezien de diskette geen partities heeft, is er dus geen MBR op een diskette.
Omdat DOS een enkel hoofdletteralfabet gebruikt om een partitie een naam te geven, is het maximum aantal van alle typen partities samen toegestaan door DOS 24, te beginnen met de stationsletter C (C:) tot en met de stationsletter Z (Z:) . Daarom, zelfs als er meer dan één fysieke harde schijf aanwezig is, kan het totale aantal partities van alle schijven niet groter zijn dan 24.
Na de Power-On Self Test (POST) laadt het BIOS de MBR (Master Boot Record) van de harde schijf in het geheugen en voert het vervolgens uit. Eerst controleert de MBR de harde schijf op een actieve partitie, laadt vervolgens de DOS Boot Record (DBR) in het geheugen en geeft de controle over aan de opstartcode van het besturingssysteem en vervolgens laadt de opstartcode van het besturingssysteem de rest van het besturingssysteem in Geheugen.
Master Boot Record-formaat
We kunnen de harde schijf opdelen in verschillende logische stations die over het algemeen hun eigen stationsletter krijgen door DOS. Er kan slechts één partitie tegelijk worden gemarkeerd als de actieve (of opstartbare) partitie.
Het Master Boot Record heeft de limiet van vier items in de Master Partition Table. De locatie van Extended Master Boot Record kan echter worden verkregen met behulp van Master Boot Record die uitgebreide partitietabellen bevat, waarvan het formaat exact hetzelfde is als van de hoofdpartitietabel, behalve dat er geen opstartcode is.
In uitgebreide Master Boot Record is deze ruimte van 446 Bytes normaal gesproken gereserveerd voor de opstartcode en blijft deze leeg. Alle 512 bytes van het Master Boot Record worden als volgt verbroken, zoals weergegeven in de tabel:
Offset |
Description |
Size |
000H |
Initial Program Loader (IPL) , Executable Code (Provides very first booting to the Computer) |
446 Bytes |
1BEH |
First Partition Entry (See Next Table) |
16 Bytes |
1CEH |
Second Partition Entry |
16 Bytes |
1DEH |
Third Partition Entry |
16 Bytes |
1EEH |
Fourth Partition Entry |
16 Bytes |
1FEH |
Executable Marker or Bootable Sector Signature or Magic Number (AAH 55H) |
2 Bytes |
Total = 512 Bytes |
Alle uitgebreide partities moeten bestaan binnen de ruimte die is gereserveerd door de uitgebreide partitie-invoer. Slechts twee van de uitgebreide partities zijn bedoeld om te worden gebruikt, de eerste als een normale partitie en de tweede als een andere uitgebreide partitie, indien aanwezig. Dus met behulp van een Master Partition Table kunnen we de locatie van een andere Extended Master Partition Table ernaast krijgen, indien aanwezig.
Partitietabel invoerformaat
Het formaat van de partitietabelinvoer van elke partitie in MBR is gegeven in de volgende tabel. Elke partitie-invoer van een MBR kan worden opgesplitst in de volgende bytes met hun specifieke betekenis:
Boot Type Indicator Byte (1 Byte): Als deze byte 00H is, betekent dit dat de partitie niet actief is en als de byte 80H is, betekent dit dat de partitie een actieve partitie of opstartbare partitie is . Hoewel de aanwezigheid van een andere byte dan deze niet wordt verwacht, maar als er een andere byte aanwezig is, kan dit te wijten zijn aan beschadiging van de partitietabel of aan een VIRUS-aanval in de partitietabel.
Startcilinder – kop – sectornummer van de partitie (3 bytes): wanneer we de CHS (cilinder, kop en sector) van een schijf berekenen, worden de fysieke CHS als volgt geteld:
- De fysieke sector wordt geteld vanaf 1.
- Het fysieke hoofd wordt geteld vanaf 0.
- De fysieke cilinder wordt geteld vanaf 0 (zie het vorige hoofdstuk voor details)
- De byte op offset 01H vertegenwoordigt het beginkopnummer in hexadecimaal systeem voor de partitie.
6 minst significante bytebits bij offset 02H vormen het startsectornummer van de partitie en combinatie van de resterende 2 bits (als twee meest significante bits) plus 8 bits van een andere byte op offset 03H (rest 8 minst significante bits van de 10 -Bitnummer) maak het startcilindernummer van de partitie.
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H , The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (See the Table given next for Indicators) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Relative Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Number of Sectors of the Partition |
4 Bytes |
Number of Sectors in the Partition |
Total = 16 Bytes |
De cilinder- en sectorcodering is gegeven in het voorbeeld van een voorbeeld van een partitietabelstudie die hierna wordt uitgevoerd.
Bestandssysteemindicatorbyte (1 byte): Bestandssysteemindicatorbyte op offset 04H vertegenwoordigt het bestandssysteem van die partitie. De tabel met de bestandssysteemindicatorbyte voor verschillende bestandssystemen wordt hierna in dit hoofdstuk gegeven.
Eindcilinder – kop – sectornummer van de partitie (3 bytes): De codering is hetzelfde als voor de startcilinder – kop – sectornummer van de partitie.
Relatief sectornummer van het begin van de partitie (4 bytes): Aantal sectoren tussen de MBR en de eerste sector in de partitie in het hexadecimale systeem.
Aantal sectoren van de partitie (4 bytes): Aantal sectoren in de partitie in hexadecimaal systeem.
Onthoud altijd dat de cilinder-, kop- en sectornummers de nummers zijn die aan het BIOS moeten worden doorgegeven. Als BIOS dus vertaling gebruikt (LBA-modus of INT 13H Extensions Support), vertegenwoordigen de waarden mogelijk niet de fysieke CHS-waarden. Voor grote harde schijven (groter dan 8,4 GB) kunnen de CHS-waarden ongeldig zijn. Deze waarden moeten over het algemeen worden genegeerd en in plaats daarvan worden de absolute sectorwaarden gebruikt.
De volgende afbeelding toont de MBR van een schijf met FAT32-partities. Het gemarkeerde gebied van 64 bytes aan het einde van de afbeelding vertegenwoordigt de hoofdpartitietabel van de MBR.
De codering voor de startende en eindigende CHS is als volgt:
- Bij offset 00H geeft 80 (Hex) aan dat de partitie een actieve partitie is.
- Bij offset 01H staat 01 (Hex) voor het startkopnummer = 1.
- De combinatie van twee bytes op offset 02H en 03H vormt de startsector
en cilindernummer van de partitie volgens de volgende codering:
Dus C-H-S van de partitie starten = 0-0-1.
Evenzo is het kopnummer voor het einde van de partitie FE (Hex), dat is 254 en de codering voor de eindcilinder en het sectornummer van de partitie zijn gegeven in de volgende tabel:
Dus de Ending C-H-S van de partitie = 701-254-63.
De byte 0B (Hex) op offset 04H is de bestandssysteemindicatorbyte voor de partitie. De byte 0B (H) geeft aan dat de partitie het FAT32-bestandssysteem heeft. De tabel voor verschillende bestandssystemen en hun indicatorbytes voor het bestandssysteem zijn hierna gegeven:
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
00H |
Unused/Empty Partition-Table Entry
(Remember this is not used to designate unused area on the disk, but marks an unused partition table entry) |
01H |
DOS 12-bit fat
(The type 01H is for partitions up to 15 MB) |
02H |
XENIX: root file system |
03H |
XENIX /usr file system (obsolete)
(XENIX is an old part of Unix V7. Microsoft XENIX Operating System was announced in August 1980. It was a portable and commercial version of the Unix operating system for the Intel 8086, Zilog Z8000, Motorola M68000 and Digital Equipment PDP-11. Microsoft introduced XENIX 3.0 in April 1983. SCO delivered its first XENIX for 8088/8086 in 1983.) |
04H |
16-bit FAT, DOS 3.0+ (Partition size < 32M)
(Some old DOS versions have had a bug which required this partition to be located in the 1st physical 32 MB of the hard disk ) |
05H |
DOS Extended (DOS 3.3+ Extended Volume)
Supports at most 8.4 GB disks. With this type 05H DOS/Windows will not use the extended BIOS call, even if it is available.) |
06H |
16-bit FAT, DOS Big, DOS 3.31+ (Partition Size >= 32M)
(Partitions are at most 2 GB for DOS and Windows 95/98 with maximum 65536 clusters with each cluster, at most 32 KB. Windows NT can create up to 4 GB FAT16 partition using 64 KB clusters.) |
07H |
OS/2 IFS (Installable File System) (HPFS is the best known example of this file system. OS/2 only looks at partitions with ID 7 for any installed IFS this is the reason that EXT2 IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions have ID 07). |
07H |
Advanced Unix |
07H |
Windows NT NTFS |
07H |
QNX2.x (pre-1988)
(For the actual file system of partition type 07H, one should inspect the partition boot record) |
08H |
OS/2 (v1.0 to v1.3 only) |
08H |
AIX boot partition
[AIX (Advanced Interactive Executive) is the IBM's version of Unix] |
08H |
SplitDrive |
08H |
DELL partition spanning multiple drives |
08H |
Commodore DOS |
08H |
QNX 1.x and 2.x
("qny" according to QNX partitions) |
09H |
AIX data partition |
09H |
Coherent file system
[Coherent was a UNIX like Operating System for the 286-386-486 systems, marketed by Mark Williams Company led by Bob Swartz. It was renowned for its good documentation. It was introduced in 1980 and died 1 Feb 1995. The last versions are V3.2 for 286-386-486 and V4.0 (May 1992, using protected mode) for 386-486 only. It sold for $99 a copy and it is rumored that 40000 copies have been sold. A Coherent partition has to be primary. ] |
09H |
QNX 1.x and 2.x ("qnz" according to QNX Partitions) |
0aH |
OS/2 Boot Manager
(OS/2 is the operating system designed by Microsoft and IBM to be the successor of MS-DOS) |
0aH |
Coherent swap partition |
0aH |
OPUS
(Open Parallel Unisys Server) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 stands for Microsoft’s “OEM Service Release 2”. It is for Partitions up to 2047GB. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(It is using Logical Block Addressing – mode of Interrupt 13H extensions therefore we can say that this is the Extended INT 13H equivalent of 0BH. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0eH |
LBA-mapped WIN95: DOS 16-bit FAT or Logical Block Addressable VFAT
(It is same as 06H but using LBA-mode of INT 13H) |
0fH |
LBA-mapped WIN95: Extended partition or Logical Block Addressable VFAT
(It is same as 05H but using LBA-mode of INT 13H. Windows 95 uses 0EH and 0FH as the extended INT13H equivalents of 06H and 05H. Windows NT does not recognize the four Windows 95/98/ME types 0BH, 0CH, 0EH and 0FH) |
10H |
OPUS
(Octal Program Updating System) |
11H |
Hidden DOS 12-bit FAT or OS/2 Boot Manager hidden 12-bit FAT partition or DOS Seen From OS/2 (When OS/2 Boot manager boots a DOS partition, it will hide all primary DOS partitions except the one that is booted, by changing its ID and 01H, 04H, 06H and 07H becomes 11H, 14H, 16H and 17H, respectively. |
12H |
Compaq Configuration/diagnostics partition
(It is used by Compaq for their configuration utility partition. It is a FAT-compatible partition that boots into their utilities, and can be added to a LILO menu as if it were MS-DOS. ) |
14H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager Hidden DOS 16-bit FAT) <32M Partition
(Partition size is less than 32M. ID 14H is resulted from using Novell DOS 7.0 FDISK to delete Linux Native partition. ) |
15H |
Hidden DOS-Extended |
16H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager hidden 16-bit FAT ) >=32M Partition |
17H |
OS/2 Boot Manager hidden HPFS partition or Hidden IFS (e.g., HPFS) |
17H |
Hidden NTFS partition |
18H |
AST SmartSleep Partition or AST special Windows swap file ("Zero-Volt Suspend" partition)
[AST Research, Inc. (named from first initials of the founders, Albert Wong, Safi Qureshey and Thomas Yuen). Ascentia laptops have a “Zero – Volt Suspend Partition” or `SmartSleep Partition' of size 2MB+memory size.] |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
19H |
Willowtech Photon COS
(Code 19H is Claimed for Willowtech Photon COS by Willow Schlanger. |
1bH |
Hidden WIN95 OSR2 32-bit FAT or Hidden Windows 95 FAT32 Partition |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(It is hidden Windows95 FAT32 partition using LBA-mode of INT 13H Extensions) |
1eH |
LBA-mapped Hidden WIN95 16-bit FAT or Hidden LBA VFAT partition |
1FH |
LBA mapped Hidden WIN95 Extended or Hidden Extended LBA VFAT Partition |
20H |
OFSI
(Willowsoft Overture File System ) |
21H |
Officially listed as Reserved
(HP Volume Expansion, SpeedStor variant.) |
21H |
FSO2
(Claimed for FSO2 (Oxygen File System) by Dave Poirier) |
22H |
FSO2 Extended Partition
(Claimed for Oxygen Extended Partition by Dave Poirier) |
23H |
Officially listed as Reserved |
24H |
NEC DOS 3.x |
26H |
Officially listed as Reserved |
31H |
Officially listed as Reserved |
32H |
NOS (Network Operating System)
(32H is being used by the operating system NOS, being developed by Alien Internet Services in Melbourne Australia. The id 32H was chosen not only because of it was one of the few that are left available but also 32k is the size of the EEPROM the OS was originally targeted for. |
33H |
Officially listed as Reserved |
34H |
Officially listed as Reserved |
35H |
JFS on OS/2 or eCS
[35H is used by OS/2 Warp Server for e-Business, OS/2 Convenience Pack (aka version 4.5) and eComStation (eCS, an OEM version of OS/2 Convenience Pack) for the OS/2 implementation of JFS (IBM AIX Journaling File System)] |
36H |
Officially listed as Reserved |
38H |
THEOS v3.2 (2GB partition) |
39H |
Plan 9 partition
(Plan 9 is an operating system developed at Bell Labs for many architectures. Originally Plan 9 used an unallocated portion at the end of the disk. 3rd edition of Plan 9 uses partitions of type 39H, subdivided into sub partitions described in the Plan 9 partition table in the second sector of the partition.) |
39H |
THEOS v4 spanned partition |
3aH |
THEOS v4 (4GB partition) |
3bH |
THEOS v4 Extended partition
(THEOS is a multi-user multitasking Operating System for PCs founded by Timothy Williams in 1983.) |
3cH |
PartitionMagic recovery partition
(When a PowerQuest product like Partition Magic or Drive Image makes changes to the disk, it first changes the type flag to 3CH so that the Operating System will not try to modify it. At the end of the process, it is changed back to what it was at first. Therefore the only time you can see a 3CH type flag, is if the process was interrupted somehow such as power off, user reboot etc. If you change it back manually with a partition table editor or any disk editing program then most of the time everything is okay.) |
3dH |
Hidden NetWare |
40H |
Venix 80286
(It is a very old Unix-like operating system for PCs.) |
41H |
Linux/MINIX (sharing disk with DR-DOS)
(DR-DOS stands for Digital Research-Disk Operating System.) |
41H |
Personal RISC Boot |
41H |
PPC PReP (Power PC Reference Platform) Boot Partition |
42H |
Linux swap (sharing disk with DR-DOS) |
42H |
SFS (Secure File System)
(SFS is an encrypted file System driver for DOS on 386+ PCs, written by Peter Gutmann.) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
42H |
Windows 2000 Dynamic Extended Partition Marker
(If a partition table entry of type 42H is present in the legacy partition table, then Windows 2000 ignores the legacy partition table and uses a proprietary partition table and a proprietary partitioning scheme (LDM or DDM). Pure dynamic disks (those not containing any hard-linked partitions) have only a single partition table entry, type 42H to define the entire disk. Dynamic disks store their volume configuration in a database located in a 1-MB private region at the end of each dynamic disk.) |
43H |
Linux native (sharing disk with DR-DOS) |
44H |
GoBack partition
(GoBack is a utility that records changes made to the disk, allowing you to view or go back to some earlier state. It takes over disk I/O like a Disk Manager would, and stores its logs in its own partition.) |
45H |
Boot-US boot manager
(Boot-US (Ulrich Straub) boot manager can be installed to MBR, a separate primary partition or diskette. When installed to a primary partition this partition gets the ID 45H. This partition does not contain a file system, it contains only the boot manager and occupies a single cylinder (below 8.4 GB). ) |
45H |
Priam |
45H |
EUMEL/Elan |
46H |
EUMEL/Elan |
47H |
EUMEL/Elan |
48H |
EUMEL/Elan
(EUMEL, later known as Ergos L3, are the multi-user multitasking systems developed by Jochen Liedtke at GMD, using Elan programming Language. It was used at German schools for the computer science education.) |
4aH |
AdaOS Aquila |
4aH |
ALFS/THIN lightweight filesystem for DOS |
4cH |
Oberon partition |
4dH |
QNX4.x |
4eH |
QNX4.x 2nd partition |
4fH |
QNX4.x 3rd partition
(QNX is a POSIX (Portable Operating System Interface for Unix)-certified, microkernel, distributed, fault-tolerant Operating System for the 386 and later, including support for the 386EX in embedded applications.) |
4fH |
Oberon boot/data partition |
50H |
OnTrack Disk Manager (older versions), Read-Only Partition (Disk Manager is a program of OnTrack to enable people to use IDE disks that are larger than 504MB under DOS. Linux kernel versions older than 1.3.14 do not coexist with DM.) |
50H |
Lynx RTOS (Real-Time Operating System)
(Lynx RTOS gives users the ability to place up to 14 partitions of 2 GB each on both SCSI and IDE drives, for a total of up to 28 GB of file system space.) |
50H |
Native Oberon |
51H |
OnTrack Disk Manager (DM6.0 Aux1), Read/Write Partition |
51H |
Novell |
52H |
CP/M |
52H |
Microport SysV/AT or Microport System V/386 |
53H |
OnTrack Disk Manager (DM6.0 Aux3), Write-Only partition |
54H |
OnTrack Disk Manager 6.0 Dynamic Drive Overlay |
55H |
EZ-Drive Partition
(EZ-Drive is another disk manager like program developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
56H |
Golden Bow VFeature Partitioned Volume.
(This is also a Disk Manager like Utility software. This is a Non-Standard DOS Volume.) |
56H |
DM converted to EZ-BIOS |
57H |
DrivePro
(DrivePro was developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
57H |
VNDI Partition |
5cH |
Priam EDisk Partitioned Volume
(Priam EDisk is Disk Manager type utility software. This is a Non-Standard DOS Volume.) |
61H |
SpeedStor
(Storage Dimensions SpeedStor Partitioned Volume. This is a Non-Standard DOS Volume. It is Disk Manager type utility software.) |
63H |
Unix System V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 on Mach, GNU Hurd |
64H |
Novell NetWare 286, 2.xx |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
64H |
PC-ARMOUR protected partition
(64H is used by PC-ARMOUR disk protection by Dr. A. Solomon, intended to keep the disk inaccessible until the right password was given and then an INT 13H hook was loaded above top-of-memory that showed C-H-S = 0-0-2, with a copy of the real partition table, when 0-0-1 was requested). |
65H |
Novell NetWare 3.86, 3.xx or 4.xx
(Novell Netware 3.0 and later versions use one partition per drive. It allocates logical Volumes inside these partitions. The volumes can be split over several drives. The file system used is called Turbo FAT and it only very vaguely resembles the DOS FAT file system. Novell Netware used to be the main Network Operating System available. Netware 68 or S-Net (1983) was for a Motorola 68000, Netware 86 for an Intel 8086 or 8088. Netware 286 was for an Intel 80286 and existed in various versions that were later merged to Netware 2.2. Netware 386 was a rewrite in C for the Intel 386 which was later renamed to Netware 3.x (3.0, 3.1, 3.10, 3.11 and 3.12 etc) versions. Its successor Netware 4.xx had versions 4.00, 4.01, 4.02, 4.10 and 4.11. Then came Intranetware) |
66H |
Novell Netware SMS Partition
(SMS stands for Storage Management Services. It is not used now.) |
67H |
Novell |
68H |
Novell |
69H |
Novell Netware 5+ and Novell Netware NSS Partition
(NSS stands for Novell Storage Services.) |
70H |
DiskSecure Multi-Boot |
71H |
Officially listed as reserved |
73H |
Officially listed as reserved |
74H |
Officially listed as reserved |
74H |
Scramdisk partition
(Scramdisk is a disk encryption software. It supports container files, dedicated partitions type 74H and disks hidden in WAV audio files.) |
75H |
IBM PC/IX |
76H |
Officially listed as reserved |
77H |
M2FS/M2CS partition |
77H |
QNX 4.x |
78H |
XOSL File System
(XOSL Boot loader file system) |
78H |
QNY 4.x |
79H |
QNZ 4.x |
7EH |
F.I.X. |
7Fh |
Alt-OS-Development Partition Standard |
80H |
Old MINIX, MINIX v1.1 to v1.4a |
81H |
MINIX 1.4b and Later
(MINIX is a Unix-like operating system written by Andy Tanenbaum and students at the Vrije University, Amsterdam, around 1989-1991. It runs on PCs (8086 and up), Macintosh, Atari, Amiga, Sparc. |
81H |
Early Linux |
81H |
Mitac Advanced Disk Manager |
82H |
Prime |
82H |
Solaris x86
(Solaris creates a single partition with ID 82H and then uses Sun disk labels within the partition to split it further.) |
82H |
Linux Swap partition |
83H |
Linux Native Partition or Linux native file system or Linux Ext2fs
(Linux is a Unix-like operating system written by Linus Torvalds and many others on the internet since 1991. It runs on PCs 386 and later and a variety of other hardware. It is distributed under GPL (General Public License) . Various file system types like xiafs, ext2, ext3, reiserfs, etc. all use ID 83H.) |
84H |
OS/2 hidden C: drive or OS/2-renumbered type 04 partition.
(OS/2-renumbered type 04h partition is related to hiding DOS C: drive) |
84H |
Hibernation partition
(Reported for various laptop models, e.g., used on Dell Latitudes (with Dell BIOS) that use the MKS2D utility.) |
85H |
Linux Extended partition |
86H |
Old Linux RAID partition super block |
86H |
FAT16 volume/stripe set (Windows NT) or NTFS volume set
(It is Legacy Fault Tolerant FAT16 volume.) |
87H |
HPFS Fault-Tolerant mirrored partition or NTFS volume set or NTFS volume/stripe set
(Legacy Fault Tolerant NTFS volume. HPFS Fault-Tolerant mirrored partition. ) |
8aH |
Linux Kernel Partition
(It is used by AiR-BOOT) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
8bH |
Legacy Fault Tolerant FAT32 volume |
8cH |
Legacy Fault Tolerant FAT32 volume using BIOS Extended INT 13H. |
8dH |
Free FDISK hidden Primary DOS FAT12 partition
(Free FDISK is the FDISK used by FreeDOS. It hides types 01H, 04H, 05H, 06H, 0BH, 0CH, 0EH and 0FH by adding decimal Number 140 (8CH).) |
8eH |
Linux Logical Volume Manager partition |
90H |
Free FDISK hidden Primary DOS FAT16 partition |
91H |
Free FDISK hidden DOS extended partition |
92H |
Free FDISK hidden Primary DOS large FAT16 partition |
93H |
Hidden Linux native partition |
93H |
Amoeba file system |
94H |
Amoeba bad block table
(Amoeba is a distributed operating system written by Andy Tanenbaum, together with Frans Kaashoek, Sape Mullender, Robert van Renesse and others since 1981. It runs on PCs (386 and up), Sun3, Sparc, 68030. It is free for universities for research and teaching purposes.) |
95H |
MIT EXOPC native partition |
97H |
Free FDISK hidden Primary DOS FAT32 partition |
98H |
Free FDISK hidden Primary DOS FAT32 partition (LBA) |
99H |
Mylex EISA SCSI or DCE376 logical drive
(It is used by the Mylex DCE376 EISA SCSI adaptor for partitions which are beyond the 1024 cylinder of a drive.) |
9aH |
Free FDISK hidden Primary DOS FAT16 partition (LBA) |
9bH |
Free FDISK hidden DOS extended partition (LBA) |
9fH |
BSD/OS |
a0H |
Phoenix NoteBIOS Power Management "Save-to-Disk" partition or Laptop hibernation partition
(It is Reported for various laptops like IBM Thinkpad, Phoenix NoteBIOS, Toshiba under names like zero-volt suspend partition, suspend-to-disk partition, save-to-disk partition, power-management partition, hibernation partition, usually at the start or end of the disk area.) |
a1H |
Laptop hibernation partition
(Used as "Save-to-Disk" partition on a NEC 6000H notebook. Types A0H and A1H are used on systems with Phoenix BIOS. The Phoenix PHDISK utility is used with these.) |
a1H |
HP Volume Expansion (SpeedStor variant) |
a3H |
Officially listed as Reserved |
a4H |
Officially listed as Reserved |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD is a Unix-like operating system, a port of 4.3BSD Net/2 to the PC done by Bill Jolitz around 1991.) |
a6H |
OpenBSD
(OpenBSD, led by Theo de Raadt, split off from NetBSD. It tries to emphasize on security.) |
a7H |
NEXTSTEP
(NEXTSTEP is Based on Mach 2.6 and features of Mach 3.0. It is a true object-oriented operating system and user environment. |
a8H |
Mac OS-X
(Apple's OS-X uses this type for its file system partition) |
a9H |
NetBSD |
aaH |
Olivetti Fat 12 1.44MB Service Partition
(It Contains a bare DOS 6.22 and a utility to exchange types 06H and AAH in the partition table.) |
abH |
Mac OS-X Boot partition
(Apple's OS-X (Darwin Intel) uses this type for its boot partition.) |
abH |
GO! partition |
aeH |
ShagOS file system |
afH |
ShagOS swap partition |
b0H |
BootStar Dummy
(The boot manager BootStar manages its own partition table, with up to 15 primary partitions. It fills unused entries in the MBR with BootStar Dummy values.) |
b1H |
Officially listed as Reserved |
b3H |
Officially listed as Reserved |
b4H |
Officially listed as Reserved |
b6H |
Officially listed as Reserved |
B6H |
Windows NT mirror set (master), FAT16 file system |
b7H |
BSDI file system (secondarily swap), BSDI BSD/386 file system |
B7H |
Windows NT mirror set (master), NTFS file system |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
b8H |
BSDI BSD/386 swap partition (secondarily file system)
(BSDI (Berkeley Software Design, Inc.) was founded by former CSRG (UCB Computer Systems Research Group) members. Their operating system, based on Net/2, was called BSD/386.) |
bbH |
Boot Wizard hidden |
beH |
Solaris 8 boot partition |
c0H |
DR-DOS/Novell DOS secured partition |
C0H |
CTOS |
c0H |
REAL/32 secure small partition |
c0H |
NTFT Partition |
c1H |
DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition |
c2H |
Reserved for DR-DOS 7+ |
c2H |
Hidden Linux |
c3H |
Hidden Linux swap |
c4H |
DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition |
c5H |
DRDOS/secured (Extended) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
(DR-DOS 6.0 will add C0H to the partition type for a LOGIN.EXE - secured partition so that User can not avoid the password check by booting from an MS-DOS floppy. Otherwise it seems that the types C1H, C4H, C5H, C6H and D1H, D4H, D5H, D6H are used precisely like 1H, 4H, 5H, and 6H.) |
c6H |
Corrupted FAT16 volume/stripe set (Windows NT)
(NTFS will add C0H to the partition type for disabled parts of a Fault Tolerant set. Thus, one gets types C6H, C7H.) |
c7H |
Windows NT corrupted NTFS volume/stripe set |
c7H |
Syrinx boot |
c8H |
Officially listed as Reserved |
c9H |
Officially listed as Reserved |
caH |
Officially listed as Reserved |
cbH |
Reserved for DR-DOS secured FAT32 |
ccH |
Reserved for DR-DOS secured FAT32 (LBA) |
cdH |
CTOS Memdump |
ceH |
Reserved for DR-DOS secured FAT16 (LBA) |
d0H |
REAL/32 secure big partition
(REAL/32 is a continuation of DR Multi-user DOS.) |
d1H |
Old Multi-user DOS secured FAT12 |
d4H |
Old Multi-user DOS secured FAT16 <32M |
d5H |
Old Multi-user DOS secured extended partition |
d6H |
Old Multi-user DOS secured FAT16 >=32M |
d8H |
CP/M-86 |
daH |
Non-FS Data |
dbH |
Digital Research CP/M, Concurrent CP/M, Concurrent DOS |
dbH |
CTOS (Convergent Technologies OS -Unisys) |
dbH |
KDG Telemetry SCPU boot
(KDG Telemetry uses ID DBH to store a protected-mode binary image of the code to be run on a 'x86-based SCPU (Supervisory CPU) module from the DT800 range.) |
ddH |
Hidden CTOS Memdump |
deH |
Dell PowerEdge Server utilities (FAT) |
dfH |
DG/UX virtual disk manager partition |
dfH |
BootIt EMBRM
(The boot manager BootIt manages its own partition table, with up to 255 primary partitions.) |
e0H |
Reserved by ST Microelectronics for a file system called ST AVFS. |
e1H |
DOS access or SpeedStor 12-bit FAT extended partition
(It is a SSTOR partition on cylinders more than 1023.) |
E2H |
DOS Read-Only |
e3H |
Storage Dimensions |
e4H |
SpeedStor 16-bit FAT extended partition < 1024 cylinders |
e5H |
Officially listed as Reserved |
e5H |
Tandy DOS with logical sectored FAT |
e6H |
Officially listed as Reserved |
ebH |
BeOS BFS (BFS1)
(BeOS is an operating system that runs on Power PCs) |
edH |
Reserved for Matthias Paul’s Sprytix |
eeH |
Indication that this legacy MBR is followed by an EFI Header |
efH |
Partition that contains an EFI file system |
f0H |
Linux/PA-RISC boot loader |
f1H |
Storage Dimensions |
f2H |
DOS 3.3+ secondary partition |
f2H |
Unisys DOS with logical sectored FAT |
f3H |
Officially listed as Reserved |
f4H |
SpeedStor large partition |
F4H |
Prologue single-volume partition |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
f5H |
Prologue multi-volume partition
(The type F4H partition contains one volume, and is not used anymore. The type F5H partition contains 1 to 10 volumes called MD0 to MD9. It supports one or more systems. Each volume can have as file system the NGF file system or TwinFS file system. ) |
f6H |
Officially listed as Reserved |
F6H |
Storage Dimensions SpeedStor |
faH |
MandrakeSoft's Bochs x86 emulator |
fbH |
VMware File System partition |
fcH |
VMware Swap partition
(VMware offers virtual machines in which one can run Linux, Windows, FreeBSD.) |
fdH |
Linux raid partition with auto detect using persistent super block |
feH |
SpeedStor more than 1024 cylinders |
feH |
LANstep |
feH |
IBM PS/2 IML (Initial Microcode Load) partition
(It is located at the end of the disk.) |
feH |
Windows NT Disk Administrator hidden partition
(Windows NT Disk Administrator marks hidden partitions, i.e. present but not to be accessed, as type FEH.) |
feH |
Linux Logical Volume Manager partition (old) |
ffH |
XENIX Bad Block Table |
DOS-opstartrecord (DBR) / DOS-opstartsector
Na de partitietabel is de DOS Boot Record (DBR) of soms DOS Boot Sector genoemd, de op één na belangrijkste informatie op uw harde schijf. De meeste commerciële toepassingen voor schijfherstel zijn in staat om vernietigde opstartrecords te regenereren
De DOS Boot Record (DBR) voor de eerste partitie op een harde schijf is meestal te vinden op Absolute Sector 63 (de 64e sector op de schijf) of in CHS-vorm kunnen we zeggen C–H–S = 0–1-1 voor de meeste schijven.
Deze locatie kan echter variëren, afhankelijk van de SPT (Sectors Per Track) van de Drive. Op een oude schijf van 245 MB met slechts 31 SPT, bevond het opstartrecord zich bijvoorbeeld in de 32e sector (Absolute Sector 31).
De DBR wordt gemaakt door het FORMAT-commando van DOS. Dit programma kan worden uitgevoerd vanaf een DOS-diskette (of rechtstreeks vanaf een ander volume, met inachtneming van bepaalde OS-limieten) om de DBR te maken nadat het partitioneren is uitgevoerd met het FDISK-commando.
De sector waarop DBR zich bevindt, wordt logische sector 1 van die bepaalde partitie voor de DOS. Het door DOS gebruikte sectornummer gaat uit van de fysieke sector waarop DBR zich bevindt.
De eerste logische sector van elke DOS-partitie bevat een DOS Boot Record (DBR) of DOS Boot Sector. De taak van de DBR is om het besturingssysteem van de harde schijf in het hoofdgeheugen van de computer te laden en de systeemcontrole aan het geladen programma te geven.
Hiervoor bevat de DBR een klein programma dat wordt uitgevoerd door het uitvoerbare programma Master Boot Record (MBR). Alle DOS-partities bevatten de programmacode om de machine op te starten, d.w.z. het besturingssysteem te laden, maar alleen die partitie wordt bestuurd door de Master Boot Record, die gespecificeerd is als actieve partitie, in de partitietabel.
Het Boot-programma in de DBR zoekt naar de twee programmabestanden IBMBIO.COM of IO.SYS en IBMDOS.COM of MSDOS.SYS in de hoofdmap van de partitie. IBMBIO.COM en IBMDOS.COM zijn twee verborgen systeemprogrammabestanden op de PC-DOS-systemen of originele IBM-systemen. Terwijl IO.SYS en MSDOS.SYS twee verborgen systeemprogrammabestanden zijn op een MS-DOS-besturingssysteem dat wordt geleverd met IBM-compatibele systemen.
Daarna laadt het programma IO.SYS (of IBMBIO.COM) het programma MSDOS.SYS (of IBMDOS.COM) en het programma COMMAND.COM. Dit volledige proces wordt het "opstarten" van de computer genoemd. Als deze systeembestanden niet beschikbaar zijn in de map, geeft dit MBR-programma foutmeldingen weer die rustgevend zijn, zoals:
“Invalid system disk or Disk I/O error,
Replace the disk, and then press any key…”
Op het scherm en wacht tot de gebruiker een opstartbare schijf met de bovengenoemde programma's in het diskettestation plaatst en op een toets drukt.
Omdat de diskette geen partities heeft, heeft hij dus ook geen MBR of Master Partition Table op zijn absolute sector 0, in plaats daarvan bevat hij de DBR op zijn allereerste sector.
De volgende tabel geeft een eenvoudige kaart van de lay-out van een 3½ inch, 1,44 MB diskette na te zijn geformatteerd met het FAT12-bestandssysteem. Het laat zien waar de Boot Record, beide kopieën van de FAT, de Root Directory en het begin van de Data Area zich bevinden:
Logical Map of 3½ Inches, 1.44 MB floppy disk, Formatted with the FAT12 File System and having 18 Sectors Per Track, 80 Tracks, 2 Sides and 512 bytes per Sector (using 1 Sector per Cluster). |
Absolute Sectors |
Contents |
0 |
Boot Record |
1 – 9 |
FAT 1 |
10 – 18 |
FAT 2 |
19 – 32 |
Root Directory |
33 – 2879 |
Data Area |
U kunt ook submappen maken in het gegevensgebied met bestanden die zich daarin lijken te bevinden. In feite zijn subdirectories niets meer dan een speciaal bestand met een lijst van alle bestanden die schijnbaar in deze directory zijn opgenomen en alle relevante gegevens over elk bestand, zoals de locatie van het startcluster van elk bestand, datum, tijd en bestandsgrootte enz.
De DBR bevat ook enkele belangrijke informatie over de schijfgeometrie. Deze informatie bevindt zich in de eerste sector van elke partitie, zoals:
- Sprongcode + NOP
- OEM-naam en versie
- Bytes per sector
- Sectors per cluster
- Gereserveerde sectoren
- Aantal exemplaren van FAT
- Maximum aantal rootdirectory-vermeldingen (maar niet beschikbaar voor FAT32)
- Aantal sectoren in partitie kleiner dan 32 MB (dus niet beschikbaar voor FAT32)
- Mediadescriptor (F8h voor harde schijven)
- Sectors per FAT (in oudere FAT-systemen en niet beschikbaar voor FAT32)
- Sectors per spoor
- Aantal koppen
- Aantal verborgen sectoren in partitie
- Aantal sectoren in partitie
- Aantal sectoren per FAT
- FAT-informatiedescriptorvlaggen
- Versie van FAT32-schijf
- Clusternummer van het begin van de hoofdmap
- Sectornummer van de bestandssysteeminformatiesector
- Sectornummer van de back-upopstartsector
- Gereserveerd
- Logisch schijfnummer van partities
- Verlengde handtekening (29H)
- Serienummer van partitie
- Volumenaam van partitie
- FAT-naam
- Uitvoerbare code
- Uitvoerbare markering of magisch nummer (AAH 55H)
De eerste 3 bytes van DBR bevatten een JMP-instructie om de informatie over te slaan en extensies mogelijk te maken omdat de MBR deze sector in het geheugen laadt en de uitvoering ernaar overdraagt. Gewoonlijk zijn deze drie bytes hexadecimale getallen in een formaat als E9 XX XX (Hex) of EB XX 90 (Hex).
Na de initiële JMP-instructie is OEM-ID een 8-bits veld dat door Microsoft is gereserveerd voor OEM-identificatie. De OEM-ID beschrijft het programma dat het opstartrecord heeft gemaakt. Dit is vaak "MSWIN4.0" voor Windows 95/98/ME, "IBM 20.0" voor OS/2 en "MSDOS5.0" voor MS-DOS 4.0 en hoger.
Het derde belangrijke onderdeel van de opstartsector is het BIOS Parameter Block (BPB). Het schijfparameterblok is een zeer belangrijk gegevensgebied voor DOS. Het helpt de DOS bij het vinden van:
- Bytes per sector
- Sectors per cluster
- Gereserveerde sectoren
- Aantal VET
- Aantal rootdirectory-vermeldingen
FAT32 DOS Boot Record Format |
Offset |
Description |
Size |
00H |
Jump Code + NOP |
3 Bytes |
03H |
OEM Name and Version |
8 Bytes |
0BH |
Bytes Per Sector |
2 Bytes |
0DH |
Sectors Per Cluster |
1 Byte |
0EH |
Reserved Sectors |
2 Bytes |
10H |
Number of Copies of FAT |
1 Byte |
11H |
Maximum Root Directory Entries (but Not Available for FAT32) |
2 Bytes |
13H |
Number of Sectors in Partition Smaller than 32MB (Therefore Not Available for FAT32) |
2 Bytes |
15H |
Media Descriptor (F8H for Hard Disks) |
1 Byte |
16H |
Sectors Per FAT (In Older FAT Systems and Not Available for FAT32) |
2 Bytes |
18H |
Sectors Per Track |
2 Bytes |
1AH |
Number of Heads |
2 Bytes |
1CH |
Number of Hidden Sectors in Partition |
4 Bytes |
20H |
Number of Sectors in Partition |
4 Bytes |
24H |
Number of Sectors Per FAT |
4 Bytes |
28H |
Flags (Bits 0-4 Indicate Active FAT Copy) (Bit 7 Indicates whether FAT Mirroring is Enabled or Disabled <Clear is Enabled>) (If FAT Mirroring is Disabled, the FAT Information is only written to the copy indicated by bits 0-4) |
2 Bytes |
2AH |
Version of FAT32 Drive (High Byte = Major Version, Low Byte = Minor Version) |
2 Bytes |
2CH |
Cluster Number of the Start of the Root Directory |
4 Bytes |
30H |
Sector Number of the File System Information Sector (Referenced from the Start of the Partition) |
2 Bytes |
32H |
Sector Number of the Backup Boot Sector (Referenced from the Start of the Partition) |
2 Bytes |
34H |
Reserved |
12 Bytes |
40H |
Logical Drive Number of Partition |
1 Byte |
41H |
Unused (Could be High Byte of Previous Entry) |
1 Byte |
42H |
Extended Signature (29H) |
1 Byte |
43H |
Serial Number or 32 – Bit Binary ID of Partition
(Binary ID of 32 Bits provided by the OS itself) |
4 Bytes |
47H |
Volume Name of Partition |
11 Bytes |
52H |
FAT Name (FAT32 in this case) |
8 Bytes |
5AH |
Executable Code |
420 Bytes |
1FEH |
Executable Marker or Magic Number (AAH 55H) |
2 Bytes |
- Totaal aantal sectoren in logisch volume (klein, voor logisch volume kleiner dan of gelijk aan 32 MB)
- Mediadescriptorbyte
- Aantal sectoren per FA
Deze informatie helpt ons om de locatie van FAT en enkele andere belangrijke waarden te vinden. Als u hier verkeerde informatie plaatst of deze waarden corrumpeert, is opstarten vanaf de harde schijf onmogelijk. Soms voorkomt het hebben van verkeerde informatie in het schijfparameterblok het opstarten van zowel de harde schijf als de diskettedrive.
Bytes per sector zijn bijna altijd 512. Zo niet, dan moet het een geheel getal van 2 zijn (bijv. 64, 128 en 256).
Het aantal Sectoren per cluster is afhankelijk van de grootte van het cluster. (Zie de sectie Clusters in dit hoofdstuk eerder). Aantal exemplaren van FAT is bijna altijd 2.
Aantal hoofdmappen: dit hangt af van het bestandssysteem en de volumegrootte. (Zie de eerder gegeven bestandssysteemlimieten en de beschrijving van de rootdirectory die hierna wordt gegeven).
Totaal aantal sectoren: Exclusief verborgen sectoren. Als het 0 is in de BPB, wordt het veld in de uitgebreide opstartrecordinformatie gebruikt en vice versa. Merk op dat het mogelijk is om te bepalen of de uitgebreide informatie (DOS 4.0 en hoger) beschikbaar is door de handtekeningbyte op offset 26H te onderzoeken.
Alle sectoren vóór de opstartsector van een logische DOS-drive worden beschouwd als 'verborgen' sectoren. De DOS interpreteert verborgen sectoren niet. Normale diskettestations hebben 0 verborgen sectoren. Partities op de harde schijf hebben een nummer dat hun locatie op de schijf weergeeft. Merk op dat de hele eerste kop van de eerste cilinder meestal is gereserveerd voor de partitietabel, ook al is het alleen de eerste sector die daadwerkelijk wordt gebruikt.
Mediadescriptor: wordt gebruikt om een indicatie te geven van het media- of schijftype. Normale waarden zijn 0 voor een uitgebreide DOS-partitie en F8H voor een harde schijf. De waarden van Media Descriptor Bytes zijn gegeven in de volgende tabel.
Media Descriptors |
Type |
Capacity |
Size and type |
F0H |
2.88 MB |
3.5", 2-Sided, 36 Sectors per Track |
F0H |
1.44 MB |
3.5", 2-Sided, 18 Sectors per Track |
F9H |
720 KB |
3.5", 2-Sided, 9 Sectors per Track |
F9H |
1.2 MB |
5.25", 2-Sided, 15 Sectors per Track |
FDH |
360 KB |
5.25", 2-Sided, 9 Sectors per Track |
FFH |
320 KB |
5.25", 2-Sided, 8 Sectors per Track |
FCH |
180 KB |
5.25", 1-Sided, 9 Sectors per Track |
FEH |
160 KB |
5.25", 1-Sided, 8 Sectors per Track |
F8H |
--------- |
Fixed Disk |
Aantal sectoren van FAT: Het moet worden berekend. De methode voor het berekenen van de grootte van FAT is gegeven in de beschrijving van FAT in het hoofdstuk.
De DBR van een FAT32-bestandssysteem is weergegeven in de volgende afbeelding:
Sectoren per spoor (of sectoren per hoofd): Sectoren per hoofd is het aantal sectoren gegroepeerd onder één hoofd. Evenzo geeft Koppen per cilinder het aantal cilinders per kop weer. Als deze partitie een CHS-partitie is, moeten deze waarden dezelfde zijn als de waarden die door het BIOS worden geretourneerd. Als ze niet hetzelfde zijn, moet u bedenken dat de schijf verkeerd is geconfigureerd en dat de partitie mogelijk onbruikbaar is.
Verborgen sectoren: zoals we al hebben besproken, is dit het aantal sectoren op de fysieke schijf voorafgaand aan het starten van het volume, vóór de opstartsector zelf. Het wordt gebruikt tijdens de opstartvolgorde om de absolute offset naar de hoofdmap en gegevensgebieden te berekenen. Zie het als het aantal sectoren tussen het begin van deze partitie en de partitietabel zelf.
Dit veld moet hetzelfde zijn als het "aantal sectoren voorafgaand aan de partitie" in de partitietabel. Merk op dat dit niet noodzakelijk het fysieke LBA-adres van de eerste sector is, aangezien er secundaire partities kunnen bestaan.
Als de verborgen sectoren niet hetzelfde zijn als in de partitietabel, kunt u de opstartsector als beschadigd beschouwen en de partitie onbruikbaar. Merk ook op dat het hoge woord meestal rommel bevat in oude versies van DOS.
Als u vermoedt dat een opstartsector beschadigd is geraakt, kunt u een aantal van de hierboven vermelde velden controleren om te zien of de daar vermelde waarden kloppen.
Bijvoorbeeld, Bytes per Sector zal in de overgrote meerderheid van de gevallen 512 zijn. U kunt ook tekstreeksen verwachten in het gedeelte met uitvoerbare code van de opstartsector die geschikt zijn voor het besturingssysteem dat de schijf heeft geformatteerd.
Typische tekenreeksen op FAT-volumes die zijn geformatteerd door MS-DOS zijn bijvoorbeeld: "Ongeldige systeemschijf.", "Schijf-I/O-fout.", "Vervang de schijf , en druk vervolgens op een willekeurige toets", "Niet-systeemschijf of schijffout", "Vervang en druk op een willekeurige toets als u klaar bent." en "Schijfopstartfout." Tekstreeksen op FAT-volumes die zijn geformatteerd door Windows NT omvatten: "BOOT: kan NTLDR niet (of kon niet) vinden", "I/O-fout bij lezen van schijf" en "Plaats een andere schijf."
Maar onthoud dat u deze lijst niet als allesomvattend moet beschouwen. Als u andere berichten in de opstartsector vindt, betekent dit niet noodzakelijk dat er een probleem is met de opstartsector. Verschillende versies van MS-DOS en Windows NT hebben soms iets andere berichtreeksen in hun opstartsectoren.
Aan de andere kant, als u helemaal geen tekst vindt, of als de tekst duidelijk niet gerelateerd is aan MS-DOS of Windows NT, moet u rekening houden met de mogelijkheid dat uw opstartsector is geïnfecteerd door een virus of dat sommige er kan een andere vorm van gegevenscorruptie hebben plaatsgevonden.
Om te herstellen van een opstartsector die is geïnfecteerd met een virus, kunt u het beste een commercieel antivirusprogramma gebruiken. Veel virussen en Trojaanse paarden zullen veel meer doen dan alleen gegevens naar de opstartsector schrijven, dus handmatige reparatie van de opstartsector wordt niet aanbevolen, omdat het virus of Trojaans paard mogelijk niet volledig wordt geëlimineerd en in sommige gevallen meer kwaad dan goed kan doen. We gaan het echter hebben over DBR in het programmeergedeelte van dit boek.
Als u vermoedt dat de opstartsector om een andere reden is beschadigd, is het wellicht mogelijk om de schade aan de opstartsector te herstellen zonder de schijf opnieuw te formatteren door de hierboven beschreven velden handmatig aan te passen. In dit boek zullen we proberen dergelijke problemen met programmeren op te lossen in programmeertechnieken voor herstel.
Bestandstoewijzingstabel (FAT)
Na DBR volgen de bestandstoewijzingstabellen. De File Allocation Table (FAT) werd in 1977 geïntroduceerd om gegevens op diskettes voor Microsoft stand-alone Disk Basic op te slaan. De FAT is verschillende keren gewijzigd om tegemoet te komen aan de groeiende behoeften. Het is ontwikkeld om te voldoen aan de eisen van een snel en flexibel systeem voor het beheren van gegevens op zowel verwijderbare als vaste media.
In 1996 werd de FAT32 geïntroduceerd met Windows 95 OSR2. Zoals we eerder hebben besproken, ondersteunt Windows 98/ME FAT32 met de grootte van harde schijven. Nu wordt bij deze besturingssystemen vaak het FAT32-bestandssysteem gebruikt.
Het eerste DOS FAT-bestandssysteem (DOS 1.x) maakte gebruik van een 12-bits FAT-systeem dat nog steeds wordt gebruikt voor diskettes. DOS 2.x heeft ondersteuning voor harde schijven toegevoegd, verschoven naar 16-bits FAT-invoer vanwege grotere volumes.
Rond 1987 veranderde DOS 4.0 de sectorverwerking op laag niveau om 32-bits parameters te gebruiken om het probleem met de ondersteuning van grote schijven te verhelpen, aangezien we de beperkingen van bestandssystemen al hebben besproken.
FAT houdt een kaart bij van het volledige oppervlak van de schijf, zodat welk gebied vrij is, welk gebied slecht is, welk gebied wordt ingenomen door welk bestand enz. Wanneer toegang moet worden verkregen tot bepaalde gegevens die op het schijfoppervlak zijn opgeslagen , raadpleegt de DOS de FAT om de gebieden van de harde schijf te achterhalen die de gegevens bevatten.
Het type FAT dat moet worden gebruikt, wordt bepaald door het FDISK-programma tijdens de partitie van de harde schijf. Maar de eigenlijke FAT wordt geschreven door het FORMAT-programma van DOS.
De FAT houdt niet elke sector op het schijfoppervlak bij, maar beheert het schijfgebied in een groep sectoren die "cluster" of "toewijzingseenheid" worden genoemd (zie de cluster die eerder is besproken, in hetzelfde hoofdstuk) .
Een cluster is de kleinste eenheid van ruimte op de harde schijf die DOS aan een bestand toewijst. Het bestaat uit een of meer sectoren, afhankelijk van de schijfgrootte. De clustergrootte wordt bepaald en vastgelegd door het DOS FORMAT-programma tijdens het formatteren op hoog niveau van de harde schijf. (Zie de discussie over de "grootte van clusters", eerder gegeven)
Eigenlijk is de FAT een index van de clusters van het gehele volume. De FAT heeft één ingang voor elk cluster. De eerste twee vermeldingen in een FAT bevatten informatie over de FAT. De derde en volgende items in de FAT worden toegewezen aan clusters van schijfruimte, te beginnen met het eerste cluster dat beschikbaar is voor gebruik door bestanden
Omdat FAT zo'n belangrijk item is, bewaart DOS twee kopieën van de FAT, primaire FAT of FAT1 en secundaire FAT of FAT2 (normaal zijn er twee kopieën, maar veel nieuwe besturingssystemen maken meer dan twee kopieën van FAT).
Elke FAT neemt aangrenzende sectoren op de schijf in beslag, waarbij de 2e FAT onmiddellijk volgt op de 1e FAT, waardoor de DOS niet de 2e FAT gebruikt om het probleem op te lossen, maar wanneer de 1e FAT wordt bijgewerkt, kopieert DOS deze naar de 2e FAT, waardoor de 2nd FAT ook, in het proces.
Deze update wordt elke keer gedaan als DOS constateert dat de 1e en 2e FAT niet overeenkomen. Dus, in het geval van enige beschadiging van de 1e FAT, moet men onmiddellijk de reparatie uitvoeren door wat schijfeditorsoftware te gebruiken en de 1e FAT te vergelijken met de 2e FAT. Dit moet worden gedaan voordat DOS de beschadigde FAT naar de tweede FAT kopieert.
Met de introductie van FAT32 zijn zowel de FAT-vermeldingen als de sectornummering nu 32-bits. Dat betekent dat er nu 4.294.967.296 verschillende 32-bits waarden zijn vermenigvuldigd met 512 bytes per sector, wat 2 terabytes (2.199.023.255.552 bytes) oplevert als de maximaal mogelijke schijfgrootte onder FAT32.
De grootte van het directory-item voor elk bestand in FAT 32 is 4 bytes om de waarde van het startcluster van het bestand te bevatten in plaats van de 2 bytes die nodig zijn onder FAT16. De grotere waarde biedt plaats aan het grotere aantal mogelijke clusters.
Traditioneel is elke vermelding in de directory een record van 32 bytes, en dit blijft hetzelfde. In het midden van het directoryrecord bevindt zich 10 bytes (bytes 12 tot 21) die Microsoft heeft gereserveerd voor toekomstig eigen gebruik. Twee van die bytes worden nu gebruikt voor de extra bytes die nodig zijn om het startcluster onder FAT32 te specificeren.
Zoals we al hebben besproken, zijn er 12-bits, 16-bits en 32-bits versies van FAT. Terwijl 32-bits FAT veel efficiëntere opslag mogelijk maakt, die tot 30% efficiënter kan zijn en grotere harde schijven kan gebruiken.
Wanneer het bestandssysteem van een besturingssysteem wordt aangeroepen door een programma om de inhoud van een bestand te vinden, wordt de eerste clusterwaarde, in de directoryvermelding voor dat bestand, gelezen en gebruikt om de FAT-keten te vinden. De FAT-keten is de lijst met clusters die gegevens bevatten die bij een bestand horen.
FAT32 Drive Layout |
Offset |
Description |
Start of Partition |
Boot Sector |
Start of Partition + Number of Reserved Sectors |
FAT Tables |
Start of Partition + Number of Reserved Sector + (Number of Sectors Per FAT * 2)
[Assuming that FAT Mirroring is Enabled, this is almost always true] |
Root Directory |
Start of Partition + Number of Reserved Sectors + (Number of Sectors Per FAT * 2) + Number of Sectors in root directory |
Data Area |
FAT-items kunnen waarden bevatten die aangeven:
- Het volgende cluster in een FAT-keten voor een bepaald bestand
- De vrije clusters, d.w.z. de clusters die door geen enkel bestand worden gebruikt
- De informatie van beschadigde sectoren, d.w.z. het cluster met een of meer sectoren die fysiek beschadigd zijn en niet mogen worden gebruikt.
- Het laatste cluster van een bestand
Entries of FAT Table |
Number (Hex.) |
Description |
0 |
Free cluster |
???? |
Cluster in use, next cluster in chain |
FF0-FF6 / FFF0-FFF6 |
Cluster is reserved |
FF7 /FFF7 |
Cluster contains bad sectors |
FF8-FFF / FFF8-FFFF |
End of file |
Elke FAT-vermelding vertegenwoordigt een clusteradres en bevat een verwijzing naar het volgende clusteradres (FAT-vermelding) voor het bestand. De laatste FAT-vermelding voor een bestand bevat de laatste clusterwaarde in plaats van een aanwijzer. De eerste twee vermeldingen in een FAT bevatten informatie over de FAT. Deze bytes van de FAT bevatten een mediadescriptorbyte. Deze byte kan worden gebruikt om het type schijfmedium te vinden waarvan dit FAT-item is.
De derde en volgende vermeldingen in de FAT worden toegewezen aan clusters van schijfruimte, te beginnen met het eerste cluster dat beschikbaar is voor gebruik door bestanden. Een FAT-invoer kan elk van de waarden hebben die in de bovenstaande tabel worden gegeven, op basis van de informatie die het wil overbrengen.
Een 000H in 12-bits FAT of 0000H in 16-bits FAT geeft aan dat het cluster dat overeenkomt met deze FAT-locatie niet is toegewezen of leeg is. Elke waarde van FF8H tot FFFH in 12-bits FAT of FFF8H tot FFFFH in 16-bits FAT geeft aan dat dit cluster het laatste cluster is in een reeks clusters van een bestand.
Waarde van FF0H tot FF7H in 12 – Bit FAT geeft gereserveerde clusters aan. Een FF7H in een 12-bits FAT of een FFF7H in een 16-bits FAT geeft aan dat het cluster dat overeenkomt met de locatie van de FAT een slechte cluster is, d.w.z. dit is in feite een cluster met slechte sectoren. Dit cluster wordt niet gebruikt voor gegevensopslag.
Elke andere waarde in de FAT-tabel is een verwijzing naar het volgende cluster in de bestandstoewijzingsketen.
Hoe Windows het ongepaste detecteert – Afsluiten
Het komt heel vaak voor en ik hoop dat je het vaak hebt gemerkt bij het gebruik van Windows dat als er sprake is van een ongepaste - afsluiting van je computer, om welke reden dan ook, zoals stroomstoring, softwarebeschadiging, onbedoeld afsluiten enz., wanneer je herstart uw computer verder, het bericht Improper – Shutdown wordt weergegeven op het scherm tijdens het opstartproces en het besturingssysteem scant de schijf op fouten.
De volgende twee figuren tonen de 256 bytes van het begin van een 32-bits FAT, maar we hebben slechts de eerste 8 bytes nodig om dit te bespreken.
Als het Windows-besturingssysteem zichzelf in het geheugen heeft geladen, d.w.z. dat Windows is gestart, wordt de 8e byte (of offset 7H) van FAT 07H of F7H van 0FH of FFH.
Microsoft gebruikt de byte 0FH alleen voor het volume dat het actieve besturingssysteem bevat, en de byte FFH voor elk ander volume waartoe het toegang heeft.
Zodra Windows begint op te starten, wordt de 8e Byte gewijzigd in 07H of F7H, die alleen wordt teruggezet naar 0FH of FFH als Windows correct is afgesloten.
Als er een stroomstoring is, of als de aan/uit-schakelaar van de computer per ongeluk wordt uitgeschakeld of als het systeem handmatig opnieuw wordt opgestart vanwege een softwareprobleem, blijft deze byte op 07H of F7H staan, wat het Windows-besturingssysteem informeert wanneer de volgende keer keer dat het wordt opgestart dat er een soort van ongepast afsluiten was en dan gebruikt Windows zijn schijfscanprogramma (Scandisk) om de schijf te controleren op fouten.
Hoofdmap
Na de laatste FAT volgt de rootdirectory. De hoofdmap is als een inhoudsopgave voor de informatie die op de harde schijf is opgeslagen. De locatie van de rootdirectory kan eenvoudig worden vastgesteld door de waarden uit het opstartrecord op te tellen, aangezien deze zich na de FAT's bevindt.
Het directorygebied bevat de informatie over de bestandsnaam, datum en tijd van het maken van het bestand, bestandsattribuut, bestandsgrootte en startcluster van het specifieke bestand. Elk directory-item dat deze informatie over een bestand beschrijft, is 32-byte-informatie.
De hoofdmap bevat informatie over de bestanden en mappen die vertakken vanuit de hoofdmap. Alle verdere mappen worden zelf als bestanden opgeslagen, in hetzelfde formaat als de hoofdmap. Voorheen had de hoofdmap een vaste grootte en bevond hij zich op een vaste positie op schijf, maar nu is het vrij om zo nodig te groeien omdat het nu als een bestand wordt behandeld.
Het aantal bestanden dat in de hoofdmap kan worden opgeslagen, hangt af van het FAT-type dat wordt gebruikt. Bijvoorbeeld, voor een 3½ Inch 1,44Mb diskette met 12-Bit FAT, is het beperkt tot 224 ingangen, als men probeert om het 225e bestand op te slaan zal DOS een “File creation error” weergeven. Wanneer een 16-bits FAT wordt gebruikt, kan men in totaal 512 items in de hoofdmap hebben. Elke hoofddirectory op een diskette of harde schijf fungeert ook als rootdirectory.
De volgende tabel geeft een overzicht van de limieten van root-vermeldingen voor verschillende media en FAT:
Media and File System Description |
Maximum Root Directory Entries |
Single-sided 5¼ Inch 180K FDD |
64 |
Double-sided 5¼ Inch 320K FDD |
64 |
Double-sided 5¼ Inch 360K FDD |
112 |
Double-sided 3½ Inch 720K FDD |
112 |
Double-sided 5¼ Inch 1.2-megabyte FDD |
224 |
Double-sided 3½ Inch 1.44-megabyte FDD |
224 |
Double-sided 3½ Inch 1.68-megabyte DMF format disks (This is why Microsoft created CAB Files!) |
16 |
Double-sided 3½ Inch 2.88-megabyte FDD |
240 |
Hard Drives (FAT12 & FAT16) |
512 |
Hard Drives with FAT 32 (As it treats the route directory as a file) |
65,536 |
Dit betekent niet dat met 16-bits FAT men beperkt is tot het opslaan van slechts 512 bestanden op de harde schijf. Men kan submappen gebruiken om een willekeurig aantal bestanden op te slaan, alleen beperkt door de grootte van de schijf.
Houd er rekening mee dat het volumelabel voor een diskette gewoonlijk wordt opgeslagen in de opstartsector, maar dat het volumelabel voor een harde schijf wordt opgeslagen als een rootdirectory en dat de ruimte die is gereserveerd in de opstartsector leeg blijft met spaties. Het DIR-commando van DOS retourneert degene in de directory indien aanwezig, of degene in de opstartsector indien niet.
Directory-items bevatten het item in de keten van clusters en de bestandsnaam. Daarom zijn de belangrijkste directoryvermeldingen van de rootdirectory, omdat deze clusterindexen bevat die naar alle subdirectories verwijzen.
Alle mappen bevatten twee vermeldingen, "." voor de huidige map (deze submap) en ".." voor de bovenliggende map (de bovenliggende map van deze submap). We kunnen deze vermeldingen gemakkelijk volgen, omdat ze altijd aan het begin van een cluster worden geplaatst als de cluster een directory bevat.
De volgende tabel toont de indeling van een directory-item in de rootdirectory. De volgende tabel laat zien hoe de 32 bytes aan directory-invoer van een bestand in de rootdirectory worden gesegmenteerd om de verschillende informatie erover op te slaan:
Offset |
Size |
Description |
00H |
8 Bytes |
Filename
(Also see the next table for the special meaning of first character of file name) |
08H |
3 Bytes |
Extension |
0BH |
1 Byte |
File attributes(See The Table Of File Attributes) |
0CH |
10 Bytes |
Reserved |
16H |
2 Bytes |
Time Created or Last Updated (See Date–Time Format Table) |
18H |
2 Bytes |
Date Created or Last Updated (See Date–Time Format Table) |
1AH |
2 Bytes |
Starting or First cluster of file
(The value 0000H is used in Parent Directory ('..') entries to indicate that the Parent Directory is the Root Directory) |
1CH |
4 Bytes |
File size in Bytes. |
Bestandsnaam bevat de naam in hoofdletters en als de bestandsnaam kleiner is dan de 8 tekens, worden de spaties gevuld met spatietekens van ASCII-nummer 32. Extensieveld bevat de extensie van het bestand, in hoofdletters.
Als de bestandsnaam langer is dan de 8 tekens, maakt Windows een korte bestandsnaam van een lange door deze af te kappen tot zes hoofdletters en "~1" toe te voegen aan het einde van de basisbestandsnaam.
Als er al een andere bestandsnaam is met dezelfde eerste zes tekens, wordt het nummer verhoogd. De extensie blijft hetzelfde en elk teken dat illegaal was in eerdere versies van Windows en DOS wordt vervangen door een onderstrepingsteken.
Lange bestandsnamen worden opgeslagen in speciaal geformatteerde 32-Byte Long File Name (LFN) directory-items gemarkeerd met attribuutbytes ingesteld op 0FH. Voor een bepaald bestand of een bepaalde submap gaat een groep van een of meer directory-items met een lange bestandsnaam onmiddellijk vooraf aan het enkele 8.3-directory-item op de schijf.
Elke vermelding in de LFN-directory bevat maximaal 13 tekens van de lange bestandsnaam, en het besturingssysteem voegt er zoveel aan elkaar toe als nodig is om een volledige lange bestandsnaam te vormen.
Dit is de oorzaak waarom de lange bestandsnamen het maximaal mogelijke aantal rootdirectory-items in een bestandssysteem verminderen. Hoe Windows lange bestandsnamen ondersteunt, zullen we later in dit hoofdstuk in detail bespreken.
De eerste byte van de bestandsnaam kan ook belangrijke informatie over het bestand bevatten. De informatie die door deze byte wordt gegeven, kan een van de in de volgende tabel zijn:
First Character of File Name |
Value |
Meaning |
00H |
Indicates that this directory entry is unused. |
05H |
Indicates that 1st character of filename is character E5H But actually the file has not been deleted. (See the Meaning of E5H) |
E5H |
The file has been Erased and this directory entry is a deleted file’s directory entry. The data area previously occupied by that file is now free for allocation for another new file. |
2EH |
This is a Sub-directory. The cluster number field of this entry will contain the cluster number of the directory. |
2EH 2EH |
Two 2EH in a directory entry indicate the parent directory entry of a Sub–Directory. The cluster number of this entry will contain the cluster number of the parent directory of this directory. The cluster number will be zero 0000H if the parent directory is root directory. |
De attributen is een 8-bits binair gecodeerd veld. De volgende tabel vertelt over de status voor de vlag van attributen voor het gegeven bestand:
Attribute Bits |
Attribute |
Bit |
Binary |
Hex |
Read Only File Flag |
0 |
.......? |
01H |
Hidden File Flag |
1 |
......?. |
02H |
System File Flag |
2 |
.....?.. |
04H |
Volume Label Flag
(Indicates that the entry is a volume label) |
3 |
....?... |
08H |
Sub–directory
(in same format as directory) |
4 |
...?.... |
10H |
Archive Bit
(File Modified Since Last Backup) |
5 |
..?..... |
20H |
Reserved (Contains 0) |
6 |
.0...... |
- |
Reserved (Contains 0) |
7 |
0....... |
- |
Eén bestand kan meerdere attributen hebben. Een enkel bestand kan bijvoorbeeld zowel een alleen-lezen als een verborgen bestand zijn of een enkel bestand kan beide attributen hebben, het systeembestand en het verborgen bestand. (Zie het voorbeeld hierna gegeven voor de codering van directoryvermeldingen).
Tijd en datum is een speciaal gecodeerd veld van 32 bits (16 bits tijd en 16 bits voor datum). De verdeling van deze Bits-codering om de Tijd van aanmaak of laatst bijgewerkt en de Datum van aanmaak of laatst bijgewerkt voor een Bestand samen te stellen, is gegeven in de volgende tabel:
Het item voor Time of Create of Last Update of file, de 16e en 17e byte in de directory-ingang, heeft het formaat dat in de bovenstaande tabel wordt gegeven. De codering is als volgt:
- H is binair getal voor uur, dat kan variëren van 0 tot 23
- M is een binair getal voor minuten, dat kan variëren van 0 tot 59
- S is een binair getal voor seconden in stappen van 2 seconden
- De invoer voor Gegevens van Aanmaken of Laatste Update van Bestand, de 18e en
- 19e Byte in het directory-item, heeft de volgende indeling:
- Y is een binair getal tussen 0 en 127 of het jaar 1980 tot 2107
- M is een binair getal voor de maand, dit kan variëren van 1 tot 12
- D is een binair getal voor datum, dit kan variëren van 1 tot 31
Dit directory-item is gekoppeld aan het FAT-item op basis van de eerste clusterwaarde. Zodra de DOS de beginclusterwaarde heeft van een bestand uit de directory, kan de DOS het volledige bestand achterhalen met behulp van de FAT. Het Entry Cluster in de keten is het eerste cluster waaruit het bestand bestaat. Als de directoryvlag van de attributen is ingesteld, verwijst dit veld naar een nieuwe directory-ingang.
De invoer van Bestandsgrootte is 4 bytes. Hiermee kunnen we berekenen hoe FAT32 de maximale grootte van een bestand ondersteunt tot 4.294.967.295 Bytes, wat ongeveer 4 GiB is. De 4 bytes hebben 32 bits en de maximaal mogelijke bestandsgrootte die door een 32-bits binair bestand wordt samengesteld, kan zijn:
= 11111111 11111111 11111111 11111111 (B) Bytes
= 4,294,967,295 (D) Bytes
~ 4 GiB
Zo ondersteunt de FAT32 de maximale bestandsgrootte tot 4 GiB.
De bestandsgrootte en het startende bestandscluster kunnen een waardevolle bron zijn voor gegevensherstel bij het herstellen van beschadigde bestanden, aangezien we kunnen berekenen uit hoeveel clusters het bestand zou moeten bestaan.
De afbeelding hierboven toont de Root Directory-vermelding voor zeven verschillende bestanden. De codering voor deze vermeldingen is gegeven in de volgende tabel:
Lange bestandsnaam (LFN)
Zoals we al eerder hebben besproken in Root Directory Discussion, had de root directory vroeger een vaste grootte en bevond zich op een vaste positie op de schijf, maar nu is het vrij om zo nodig te groeien omdat het nu wordt behandeld als een bestand.
Dit is erg belangrijk voor lange bestandsnamen, omdat elke lange bestandsnaam meerdere directory-items gebruikt. Ondersteuning voor lange bestandsnamen toevoegen aan een besturingssysteem dat 8.3-bestandsnamen gebruikt, is niet zo eenvoudig als het uitbreiden van directory-items tot meer dan 11 tekens.
Als dit nieuwe besturingssysteem bestandsnamen van 255 tekens retourneert, zouden veel oudere toepassingen, die verwachten niet meer dan 11 tekens te ontvangen, crashen omdat een programma geheugen moet reserveren om de bestandsnamen die het leest op te slaan, en als het programma opzij zet 16 bytes voor een bestandsnaam en het besturingssysteem kopieert (zeg) 32 tekens in die ruimte, waarna andere gegevens worden overschreven. Een zekere manier om een toepassing te breken, is door willekeurige gegevens naar de gegevensruimte te kopiëren.
Om dit probleem op te lossen is er in Windows 95 een slimme oplossing gevonden voor het probleem van het ondersteunen van lange bestandsnamen terwijl de compatibiliteit met eerdere versies van DOS- en Windows-applicaties behouden blijft.
Als de meeste toepassingen (behalve voor schijfhulpprogramma's op laag niveau zoals Norton Disk Doctor) het systeem vragen naar bestands- en subdirectorynamen, doen ze dit niet door directory-items rechtstreeks van de schijf te lezen, maar door gebruik te maken van opsommingsfuncties die zijn ingebouwd in het besturingssysteem.
Zoals we weten, wordt een directory-item gemarkeerd met de combinatie van alleen-lezen, verborgen, systeem- en volumelabelattributen Bits. Waarschijnlijk, als de attribuutbyte van Directory Entry de waarde 0FH heeft, zullen de opsommingsfuncties die zijn ingebouwd in alle bestaande versies van DOS en alle Pre-Windows 95-versies van Windows die directory-ingang overslaan alsof het er niet was.
Vervolgens was de oplossing om twee namen op te slaan voor elk bestand en elke submap, een korte naam die zichtbaar is voor alle applicaties en een lange naam die alleen zichtbaar is voor Windows 95 (en later) applicaties en voor applicaties die zijn herschreven om ondersteuning toe te voegen. voor lange bestandsnamen. Korte bestandsnamen worden opgeslagen in 8.3-formaten in conventionele 32-byte directory-items.
We hebben al besproken dat Windows een korte bestandsnaam maakt van een lange door deze af te kappen tot zes hoofdletters en "~1" toe te voegen aan het einde van de basisbestandsnaam.
Als er al een andere bestandsnaam is met dezelfde eerste zes tekens, wordt het nummer verhoogd. De extensie blijft hetzelfde en elk teken dat illegaal was in eerdere versies van Windows en DOS wordt vervangen door een onderstrepingsteken.
De lange bestandsnamen worden opgeslagen in speciaal geformatteerde 32-Byte Long File Name (LFN) directoryvermeldingen gemarkeerd met attribuutbytes ingesteld op 0FH. Voor een bepaald bestand of een bepaalde submap gaat een groep van een of meer directory-items met een lange bestandsnaam onmiddellijk vooraf aan het enkele 8.3-directory-item op de schijf.
Elke vermelding in de directory Long File Name bevat maximaal 13 tekens van de lange bestandsnaam, en het besturingssysteem voegt er zoveel aan elkaar als nodig zijn om een volledige lange bestandsnaam te vormen.
Voor een vermelding in de directory Long File Name worden bestandsnamen opgeslagen in Unicode-indeling, waarvoor 2 bytes per teken nodig zijn in plaats van 1 byte ASCII. Tekens van bestandsnamen zijn verdeeld over drie afzonderlijke velden:
- De eerste 10 bytes (vijf tekens) lang,
- De tweede 12 Bytes (zes tekens),
- De derde 4 bytes (twee tekens).
- De laagste vijf bits van de eerste byte van directory-invoer bevatten een volgnummer dat de positie van directory-invoer identificeert ten opzichte van andere
- Lange bestandsnaam directory-items die aan hetzelfde bestand zijn gekoppeld.
Als een lange bestandsnaam drie LFN-directoryvermeldingen vereist, is het volgnummer van de eerste 1, dat van de tweede is 2, en het volgnummer van de derde is 3 en Bit 6 van de eerste byte van de derde invoer is ingesteld op 1 om aan te geven dat dit de laatste invoer in de reeks is.
Het attribuutveld verschijnt op dezelfde locatie in LFN directory-items als in 8.3 directory-items, omdat het bestandssysteem niet weet met welk type directory-item het te maken heeft totdat het de attribuutbyte heeft onderzocht. Het startclusternummerveld verschijnt ook op dezelfde locatie, maar in LFN-directoryvermeldingen is de waarde altijd 0. Het type-indicatorveld bevat ook 0 in elke lange bestandsnaam.
Een van de problemen met lange bestandsnamen is dat ze meer schijfruimte in beslag nemen dan korte. Dat is niet erg als lange namen in subdirectories worden opgeslagen, want zolang er schijfruimte beschikbaar is, kunnen subdirectories groeien om plaats te bieden aan toegevoegde directory-items, maar het maximale aantal directory-items dat beschikbaar is in de rootdirectory is vast, en lange bestandsnamen verspillen ruimte in de hoofdmap die beperkt is in grootte.
Bijvoorbeeld, als de hoofdmap van een harde schijf maximaal 512 directory-items bevat, omdat een naam van 128 tekens 11 items vereist, 10 voor de lange naam en 1 voor de korte naam, kunt u er slechts 46 maken bestanden en submappen in de hoofdmap als ze elk een naam van 128 tekens hebben gekregen.
Het probleem verdwijnt ook voor FAT32 omdat de hoofdmap onder FAT32 ook kan groeien, omdat in het FAT32-systeem de hoofdmap wordt behandeld als een bestand dat in omvang kan groeien.
Gegevensgebied (of Bestandsgebied)
Volgend op de hoofdmap begint het gegevensgebied (of het bestandsgebied). We kunnen eerder zeggen dat de rest van het volume na de rootdirectory het gegevensgebied is.
Het gegevensgebied bevat de daadwerkelijke gegevens die op het schijfoppervlak zijn opgeslagen. DOS gebruikt cluster nummer 2 voor de eerste sector van het gegevensgebied, daarom moeten we er bij het uitvoeren van verschillende berekeningen rekening mee houden dat het clusternummer moet beginnen bij 2.
Als we een harde schijf formatteren, vernietigt of overschrijft het FORMAT-commando van DOS de gegevens op het gegevensgebied niet. Het FORMAT-commando verwijdert alleen de directoryvermelding en FAT-vermeldingen en raakt het feitelijke gegevensgebied niet aan.
Dit maakt het mogelijk om een per ongeluk geformatteerde harde schijf te herstellen, wat niet in alle gevallen mogelijk is met een per ongeluk geformatteerde floppydisk. Net als bij volledig formaat door Windows wordt het gegevensgebied van Floppy gevuld met F6H-tekens en wordt alle informatie overschreven.
DOS gebruikt een 16-bits/32-bits aanwijzer, een "Laatst gebruikte cluster" (LCU) -aanwijzer om het laatst gebruikte clusternummer op te slaan. Aanvankelijk is deze pointerwaarde nul, wanneer informatie op een bepaald cluster wordt geschreven, wordt dat clusternummer opgeslagen in de LCU-pointer.
Hierna zoekt DOS, telkens als de nieuwe informatie moet worden geschreven, vanaf het LCU-nummer een vrij cluster. Dit dwingt nieuwe gegevens die op de schijf zijn geschreven, aaneengesloten te blijven terwijl de gegevens naar het nieuwe, ongebruikte gebied worden geschreven.
Het begrijpen van gegevens in het geval van een onbedoelde verwijdering zou nu veel gemakkelijker zijn omdat het bestand zich in een aaneengesloten gebied op de schijf bevindt. Zodra het einde van de schijf is bereikt of het systeem is gereset, wordt de LCU-pointerwaarde op nul gezet.
Maar het probleem blijft hier niet bestaan. Het is praktisch niet mogelijk dat u alleen nieuwe bestanden op uw schijf maakt en dat u nooit een bestand verwijdert of wijzigt van de eerder opgeslagen bestanden. Het gebruik van alleen LCU heeft de problemen als u veel bestanden maakt en verwijdert, omdat dit de nieuwe gegevens dwingt om steeds verder naar de binnenste sporen van de harde schijf te gaan.
Als een bestand dat op de schijf was opgeslagen, wordt verplaatst of verwijderd, worden de clusters in het gegevensgebied die door het bestand werden ingenomen, nu ingesteld als niet-toegewezen clusters die beschikbaar zijn in het gegevensgebied en klaar zijn om nieuwe gegevens te schrijven op hen. Hierdoor hoeft het besturingssysteem niet alle gegevens naar de binnenste sporen van de schijf te verplaatsen.
Maar bij veel verwijderen en aanmaken van bestanden worden de gegevens op de schijf gefragmenteerd en dit veroorzaakt de fragmentatie in de gegevens.
Gefragmenteerde en gedefragmenteerde gegevens
We hebben al besproken dat elk bestand op de schijf wordt opgeslagen als een gekoppelde lijst van clusters waarmee de gegevens die in een bestand zitten en zich overal op de schijf kunnen bevinden. Als u een bestand van 10 MB hebt opgeslagen op een schijf met clusters van 4.096 bytes, gebruikt het 2.560 clusters. Deze clusters kunnen zich op verschillende sporen, verschillende schijven van de schijf bevinden, in feite kunnen ze overal zijn.
Hoewel een bestand over de hele schijf kan worden verspreid, is dit verre van de gewenste situatie. De reden is de ongewenste trage prestaties. Harde schijven zijn relatief trage apparaten, vooral omdat ze mechanische onderdelen bevatten. Elke keer dat de harde schijf de koppen naar een ander spoor moet verplaatsen, kost het tijd die overeenkomt met duizenden en duizenden processorcycli.
Daarom willen we de mate waarin elk bestand op de schijf wordt verspreid, minimaliseren. In het ideale geval zou elk bestand in feite volledig aaneengesloten zijn. Dat betekent dat elk cluster dat het gebruikt, achter elkaar op de schijf staat. Dit zou het mogelijk maken om het hele bestand te lezen, indien nodig, zonder veel mechanische beweging van de harde schijf.
Eigenlijk begint het bestandssysteem met alle of de meeste van zijn bestanden aaneengesloten, maar als gevolg van het maken en verwijderen van bestanden in de loop van de tijd raken de gegevens op de schijf meer en meer gefragmenteerd.
Laten we een eenvoudig voorbeeld bekijken om de fragmentatie te begrijpen. Onderstaande tabel geeft het gebruik van de 12 clusters weer. Aanvankelijk is de tabel leeg:
cluster 1 |
cluster 2 |
cluster 3 |
cluster 4 |
cluster 5 |
cluster 6 |
cluster 7 |
cluster 8 |
cluster 9 |
cluster 10 |
cluster 11 |
cluster 12 |
Laten we nu aannemen dat we vier bestanden, Bestand A, B, C en D, op deze schijf maken. Bestand A heeft 1 cluster nodig, bestand B duurt 4, bestand C duurt 2 en bestand D duurt 3. We slaan ze op in de vrije beschikbare ruimte en ze beginnen allemaal aaneengesloten zoals weergegeven in de volgende afbeelding:
Na enige tijd laten we het bestand C verwijderen en door dit te doen, zijn beide clusters die werden bezet door bestand C, nu vrij of niet toegewezen. Hierdoor ziet de schijf eruit als de volgende afbeelding:
Nu maken we een nieuw bestand E dat 3 clusters nodig heeft. Maar aangezien er geen aaneengesloten blokken op de schijf meer zijn die 3 clusters lang zijn, moeten we E in twee fragmenten splitsen, waarbij we een deel van de ruimte gebruiken die voorheen door C werd ingenomen. Nu gaat onze schijf eruitzien als de figuur hiernaast :
Laten we na een stukje tijd de bestanden A en E verwijderen en bestand F maken dat 5 clusters in beslag neemt. De schijf ziet er nu uit als de onderstaande afbeelding:
Nu zien we dat het bestand F uiteindelijk in drie fragmenten wordt opgesplitst. Dit type gegevens op de schijf wordt de gefragmenteerde gegevens genoemd. Het bovenstaande voorbeeld is een zeer vereenvoudigd voorbeeld van fragmentatie, omdat de echte schijven duizenden bestanden en duizenden clusters hebben, dus het probleem daar wordt vergroot. Dit geeft je echter een algemeen idee van wat er gebeurt.
Wat een defragmentatieprogramma (zoals het DEFRAG-programma van Microsoft, Norton's SpeedDisk) doet, is de schijf herschikken om de bestanden weer in aaneengesloten vorm te krijgen. Na het uitvoeren van het hulpprogramma voor schijfdefragmentatie, zien de gedefragmenteerde gegevens op de schijf waar we het over hadden eruit als de onderstaande afbeelding:
De gefragmenteerde en gedefragmenteerde gegevens zijn in veel gevallen van groot belang tijdens het gegevensherstel.
Laten we bedenken dat we twee gecrashte schijven hebben voor gegevensherstel, één heeft gefragmenteerde gegevens en één is onlangs gedefragmenteerd. En u moet gegevensherstel uitvoeren door de gegevens van het oppervlak van zowel de schijven te verzamelen als de FAT- en root-informatie van de bestanden is beschadigd. In dergelijke gevallen is het herstelpercentage evenredig met de defragmentatie van de gegevens op de schijf.
Het is duidelijk dat het gegevensherstel van de gedefragmenteerde schijf gemakkelijk zal zijn en dat het percentage gegevensherstel ook hoog zal zijn, maar aan de andere kant zal het gegevensherstel van de gefragmenteerde schijf moeilijk en tijdrovend zijn, evenals het percentage van herstelde gegevens zullen ook teleurstellend zijn.
De oorzaak van gegevenscorruptie identificeren
Er zijn enkele specifieke stappen die, indien ze in volgorde worden gevolgd, ons kunnen helpen het gebied van corruptie te vinden. Deze stappen zijn met de herstelprocedure als volgt beschreven:
Start het systeem op met opstartbare diskette
Start uw systeem op met een opstartbare diskette of cd van het besturingssysteem dat u gebruikte. Probeer de logische schijven C: of D: of wat dan ook te lezen. Als de drive(s) toegankelijk zijn, kopieert u gewoon alle gegevens van de drive. Nu kunt u erachter komen waarom de schijf niet goed opstart, met minder stress.
Controleer de MBR-informatie
Het eerste en belangrijkste stuk data op de harde schijf is de MBR en de tabel die erin staat, de partitietabel. Het kleine gereedschap voor het bewerken van schijven met de naam “TTEDITOR.EXE” staat op de schijf die bij dit boek wordt geleverd. Of u kunt een ander programma gebruiken om de harde schijf te analyseren.
Diskedit is het meest geschikte programma om de schijf te analyseren voor gegevenshersteldoeleinden. Welnu, welk programma u ook gemakkelijk kunt gebruiken, het is aan u. Probeer MBR te lezen en vooral de partitietabel.
Zoals je hebt gezien in de beschrijving van MBR, besproken in dit hoofdstuk, is er in de tweede helft van MBR wat leesbare tekst die hierdoor als foutmelding wordt weergegeven als er iets mis mee is. Deze sms-berichten worden ongeveer als volgt weergegeven:
“Invalid partition table, Setup can not continue”
“Error loading operating system, Setup can not continue”
Als deze foutmeldingen niet beschikbaar zijn, duidt dit op de corruptie van MBR. Er kan ook een illegaal bericht in plaats van dit zijn, zoals "Je systeem is gehackt door ..." of een ander onverwacht bericht. Het geeft aan dat er iets ernstig mis is met de MBR, en hoogstwaarschijnlijk is dit te wijten aan een of andere VIRAL-infectie
Controleer nu de partitietabel van MBR na de eerste 446 bytes. Als de partitietabel leeg is, ziet u geen foutmelding tijdens het opstarten. DOS negeert een niet-gepartitioneerde schijf. Als er geen opstartbare diskette in drive A: is, zal het systeem vragen om een opstartbare diskette in drive A: te plaatsen.
Het belangrijkste dat hier moet worden opgemerkt, is dat de partitietabel niet leeg mag zijn op een schijf die eerder werkte, dus iets heeft hem gewist. Als de partitietabel leeg is, herstel dan de MBR vanaf de back-up.
Als de back-up niet werkt, zelfs nadat het herstelproces met succes is voltooid, is er fysieke schade aan deze sector. Probeer de programmeertechnieken van gegevensherstel, die in de volgende hoofdstukken worden gegeven, om de gegevens te herstellen. Als u helemaal geen programmeur bent, kunt u beter naar een goed gegevensherstelcentrum gaan.
Als je geen back-up van MBR hebt, probeer dan de partitietabel handmatig te schrijven met een schijfbewerkingsprogramma, zoals Diskedit, hoewel het in sommige gevallen erg moeilijk is om dit te doen.
Voor die gebruikers die niet de programmeurs zijn en ook geen back-up hebben, kunnen de methode gebruiken die ik heb gebruikt sinds de ontwikkelingstijd van mijn gegevensherstelproject, in mijn studententijd.
Wat u moet doen, is zoeken op de computer bij u in de buurt, die bijna dezelfde schijfgrootte heeft, met hetzelfde aantal partities en het belangrijkste is hetzelfde besturingssysteem als op uw computer.
Het werkt echter meestal volledig. Maar zo niet, dan kan het u in ieder geval helpen om toegang te krijgen tot de eerste partitie van uw schijf. Zelfs uw besturingssysteem zal ook normaal opstarten, als het in de eerste partitie was geïnstalleerd en als de andere informatie niet beschadigd is.
Als MBR in orde is, controleer dan DBR
Als de MBR in orde is, controleer dan de DBR (DOS Boot Record). Zoals we al hebben besproken, is dit de eerste sector in de DOS-partitie en bevat deze een klein programma dat de verborgen bestanden laadt en het besturingssysteem opstart.
De DBR bevat ook veel belangrijke informatie over de FAT, root directory-clusters en de grootte van de partitie enz. Gebruik een Diskedit-achtig hulpprogramma om de DBR-informatie te lezen als de DBR beschadigd is of illegale informatie heeft, herstel de DBR vanaf de back-up .
Alle professionele software voor gegevensherstel is in staat om de DBR te herschrijven. We zullen in de volgende hoofdstukken van het boek bespreken hoe we de DBR van de partitie kunnen herschrijven met programmeren.
Je kunt de DBR van de partitie ook herschrijven met behulp van Diskedit door de juiste informatie te verstrekken.
Er is ook een zeer gemakkelijke manier om het gebied van corruptie te achterhalen. De foutmeldingen die op het scherm worden weergegeven, hebben een specifieke reden om weergegeven te worden. De beschrijving van enkele belangrijke foutmeldingen is als volgt:
Message |
Description |
“Sector not found reading drive” |
This message can appear during any DOS operation. Generally, it is caused either by fading or the loss of a sector ID. |
“Data error reading drive” |
This message can appear during any DOS operation. It is caused by failing the data check – CRC (Cyclic Redundancy Check) or ECC (Error Correction Code). This “Data check” refers to the mechanism used to check whether the data read from the disk is reliable. |
“ 0 hard disk(s) found" |
It is displayed if the hard disk is not detected by the BIOS of the computer. Check the power and data cable connections of the hard disk. If connections are all right, the problem may be due to some hardware error of hard disk. |
“Hard Drive failure, press F1 to continue” |
Same as above |
“Invalid drive specification” |
It is displayed in the condition when either the system does not recognize the hardware, or there is no partition information, or the device driver of the drive is missing. |
“Invalid configuration press F1 to continue” |
If the hard disk is available, Either the battery in the motherboard is dead, and the system has lost its configuration SETUP information or the disk is not responding. |
“Invalid partition table” |
This is the MBR error message. It is displayed when the partition table of the MBR does not have the valid partition information. |
“Error loading operating system” |
This is the MBR error message. It is displayed due to any type of MBR information corruption. |
“Missing operating system” |
Same as above. |
“Disk boot failure” |
It is the DBR error message. Normally, The Hard drive should be accessible if you boot from the floppy. Though it is not bootable but that should not affect the access to the data of the drive. |
“non system disk or disk error” |
Same as above. |
“Bad or missing command interpreter” |
This message is displayed due to Bad or Missing Command Interpreter. For example if the operating do not find the command.com in current path or the command.com is corrupted. |
Pagina aangepast op: 05/01/2022