Lemez szerkezet

Lemez partíciós tábla

A merevlemez kezdeti szektorja tartalmazza a fő gyökér rekordot, amely a memóriába töltődik és végrehajtásra kerül.

Az ágazat utolsó része tartalmaz egy partíciós táblát - egy 4-elemes táblát, 16 bájtos elemekkel. Ezt a táblázatot manipulálja az FDISK program (vagy egy ezzel egyenértékű segédprogram egy másik operációs rendszerben).

A rendszerindításkor a ROM-BIOS betölti a fő gyökér rekordot, és átvezeti a vezérlést a kódjára. Ez a kód elolvassa a partíciós táblát, hogy meghatározza az aktívként megjelölt partíciót. Ezután a helyes gyökérszektor a memóriába kerül és végrehajtásra kerül.

1. táblázat: A fő gyökérrekord és a partíciós tábla felépítése

A gyökér rekord (MSB)

Az 1. szakasz leírása (lásd a 2. táblázatot)

2. szakasz Leíró

3. szakasz Leíró

4. szakasz Leíró

Aláírt partíciós tábla (AA55h érték)

2. táblázat: A szelvény fogantyújának szerkezete

A partíció aktivitásának jele (0 - nem aktív, 80h - aktív)

A lemez felszíni száma, ahonnan a partíció indul

A henger számát és az ágaszámot, ahonnan kezdődik a szakasz

A szakasz kódja (lásd a 3. táblázatot)

A lemez azon felülete, amelyen a partíció befejeződik

A henger számát és az ágaszámot, amelyen a szekció véget ér

A partíció kezdeti ágának abszolút (logikai) száma

Szekcióméret (szektorok száma)

A partíciós kódot használják az elsődleges és kiterjesztett partíciók jelenlétének és pozíciójának meghatározására a lemezen. Miután megtaláltuk a kívánt partíciót, méretét és koordinátáit kivonhatjuk a megfelelő leíró mezőkből. Ha 0 a szekciókód mezőben van írva, akkor a fogantyú üresnek tekinthető, vagyis nem határoz meg semmilyen partíciót a lemezen.

3. táblázat Microsoft operációs rendszer partíciókódjai


Ezek úgy vannak elrendezve, hogy amikor a CX-et 16 bites értékkel terheli, készen áll az INT 13h interrupt meghívására, hogy elolvassa a lemez kívánt részét. Így, miután elolvasta a fő boot rekordot a sect_buf memóriaterületen. kód

ellenőrzi, hogy az első partíció aktív-e és a kód

betölti a CX-t az INT 13h meghívására az 1. partíció gyökér szektorának olvasásához.

A szakaszok egyenletes henger számmal kezdődnek, kivéve az első szekciót, amely a 0 hengerrel, a 0 fejjel, a 2. szektorral kezdődik (mivel az 1. szektor a Master boot rekord elfoglalása).

Amikor a partíció gyökere megkapja a vezérlést, a DS: SI a megfelelő partíciós tábla bejegyzésre mutat.

A gyökérszektor felépítése

4. táblázat: Hajlékonylemez vagy merevlemez-partíció gyökérszektorának formátuma

NEAR-átmenet a letöltési kódra

Az OEM-cég neve és a rendszer verziója

a bájtok száma az ágazatban (mindig 512)

a klaszterben lévő ágazatok száma

a tartalék szektorok száma (a FAT # 1 előtt)

a FAT táblák száma

a gyökérkönyvtár 32 bájtos elemeinek száma (FAT32 - 0 esetén)

a szektorok teljes száma a médián (DOS partíció)

a média típusa (ugyanaz, mint a FAT első bájtja)

az ágazatok száma egy FAT-ban

szektorok száma pályánként

a rejtett szektorok száma (a szétválasztási rendszerekben használatos)

minden szektorban, ha a mérete> 32 MB

Kötetszám (sorozatszám)

Fájlrendszerazonosító (FAT12)

a letöltési kód és adatok megkezdése

megjegyzések:

  1. Médiatípusok:
    • F0h - hajlékonylemez, 2 oldal, 18 ágazat a pályán;
    • F8h - merevlemez;
    • F9h - hajlékonylemez, 2 oldal, 15 ágazat a pályán;
    • FCh - hajlékonylemez, 1 oldal, 9 szektor per track;
    • FDh - hajlékonylemez, 2 oldal, 9 szektor a pályán;
    • FEh - hajlékonylemez, 1 oldal, 8 szektor per track;
    • FFh - hajlékonylemez, 2 oldal, 8 szektor per track.
  • BPB (BIOS Parameter Block) - a gyökérszektorban található adatok egy részhalmaza. A "Build BPB" illesztőprogram megkövetelése megkívánja, hogy a vezető kitöltse a fenti blokkot. Hosszúság BPB = 13 bájt
  • Floppy paramétertáblázat

    5. táblázat: A hajlékonylemez paraméterek táblázata

    Az első bájtos specifikáció:
    bitek 0-3 - a fejek betöltési ideje;
    4-7 bitek - a fejek hossza

    Fájlosztási táblázat (FAT)

    A fájl mérete idővel változhat. Ha feltesszük a fájlt tároló csak a kapcsolódó ágazatokban, ahol nőtt az operációs rendszer fájl mérete teljesen átírni más alkalmas mennyiség (ingyenes) a korongon. Egyszerűsítése és felgyorsítása működésének hozzá új adatokat egy fájlt, a használt operációs rendszer a modern fájlallokációs tábla (File Allocation Table, rövidítve FAT), amely lehetővé teszi, hogy tárolja a fájlt nem folyamatos.

    A FAT használatakor a logikai lemez adatterülete azonos méretű szakaszokra oszlik - klaszterek. A klaszter egy vagy több szekvenciából állhat egymás után egy lemezen. A fürtben lévő szektorok száma 2 N többszöröse lehet, és értéke 1-től 64-ig terjedhet (a fürtméret függ a használt FAT típusától és a logikai lemez hangerősségétől).

    Minden egyes csoporthoz hozzárendeljük a saját elemét a FAT táblahoz. Az első két FAT elem fenntartva - ha a lemezen K adat fürtök vannak, a FAT elemek száma K + 2 lesz. A FAT-típust a K. érték határozza meg.
    1. ha K <4085 - используется FAT12;
    2. ha 4084> K <65525 - используется FAT16;
    3. ha 65524> K-t használ a FAT32.

    A FAT típusok neve az elem méretétől függ. Így a FAT12 elem 12 bit méretű, FAT16 - 16 bit, FAT32 - 32 bit. Tartsuk szem előtt, hogy a FAT32 felső négy bit van fenntartva, és figyelmen kívül hagyja az OS működését (azaz, amelyek érdemi csak hét junior hexadecimális számjegy elem).

    A FAT olyan koherens lista, amelyet az operációs rendszer a lemezen található fizikai helymeghatározás nyomon követésére és az új fájlok szabad memóriájának keresésére használ.

    Az egyes fájlok fájlkönyvtára (tartalomjegyzék) tartalmazza a kezdeti elem számát a FAT táblában, amely megfelel az első fürtnek a fájlelosztási láncban. A megfelelő FAT elem vagy a lánc végét jelzi, vagy a következő elemre utal, stb. például:

    Ez a diagram a FAT alapvető fogalmát szemlélteti. Ez azt mutatja, hogy:
    1. A MYFILE.TXT 10 klasztert foglal el. Az első klaszter a 08 klaszter, az utolsó klaszter 1Bh. A klaszterek láncolata: 08h, 09h, 0Ah, 0Bh, 15h, 16h, 17h, 19h, 1Ah, 1Bh. Minden egyes elem a lánc következő elemére mutat, és az utolsó elem egy speciális kódot tartalmaz (lásd a 7. táblázatot).
    2. A 18h klaszter hibás, és nem lép be az elosztási láncba.
    3. A 06h, 07h, 0Ch-14h és az 1Ch-1Fh klaszterek üresek és eloszlásra rendelkezésre állnak.
    4. Egy másik lánc kezdődik a 02h klaszterrel és a 05h klaszterrel fejeződik be. A fájl nevének megismeréséhez meg kell találnia a tartalomjegyzéket a 02h kezdeti fürtszámmal.

    7. táblázat: A FAT elemek értékei

    A következő elem klaszterszáma a láncban

    A FAT általában a DOS-partíció 1. logikai szektorával kezdődik (azaz INT 25h-nál DX = 1-el olvasható). Általában el kell olvasnod a root_ectort (DX = 0), és el kell vetned a 0Eh eltolást. Azt jelzi, hogy hány gyökér- és tartalékszektor van a FAT-szal szemben. Ezután használja ezt a számot (általában 1) a DX tartalmaként. A FAT olvasása az INT 25h-n keresztül.

    Több példány is lehet a FAT-ból. Általában két azonos másolat támogatott. Ezekben az esetekben az összes példány közvetlenül egymás mellett helyezkedik el.

    megjegyzés:

    • Általános tévhit alapján úgy gondolják, hogy egy 16 bites FAT nem teszi lehetővé a DOS számára, hogy 32 megabájtnál nagyobb lemezeken dolgozzon. Tény, hogy a határértékeket, hogy az INT 25h / 26h képtelen együttműködni a szektor, amely több mint 65.535 szoba Mivel a méret az ágazat általában 512 byte, kilobyte, vagy fél, hogy diktálja a 32 MB-os határt. Másrészről, semmi sem tiltja, hogy nagyobb szektorok legyenek, így elméletileg a DOS bármilyen lemezt használhat.

    megjegyzés:

    • A 12 bites elem átlépheti a két szektor határait, ezért legyen óvatos, ha a FAT egyik szektort olvas.
      A 16 bites elemek egyszerűbbek - mindegyik elem tartalmaz egy 16 bites eltolást (a FAT kezdetétől) a lánc következő elemében.
      32 bites elemek - mindegyik elem tartalmazza a lánc következő elemének 32 bites eltolását.

    Programok írt assembly nyelven végző szorzás helyett 3 MUL parancsokat gyakran használt algoritmus „shift és kívül”: iskhrodnoe számot másolja a kópiaszám végezzük balra léptetés egy kicsit (szorzás 2), majd a két szám van kialakítva (x + 2x = 3x). A DIV parancs helyett egy jobb oldali eltolódást használunk.

    A hajlékonylemez (vagy merevlemez-partíció) a következőképpen van felépítve:
    1. gyökér- és tartalékágazatok;
    2. FAT # 1;
    3. FAT # 2;
    4. gyökérkönyvtár (nem létezik a FAT32-ben);
    5. adatterület.

    A struktúra minden egyes szakaszában változó hosszúságú, és a fürtszám megfelelő átalakításához a szektorszámhoz ismerni kell az egyes szakaszok hosszát.

    Ahhoz, hogy a start szektor számát a klaszter klaszter szám ClustNum (olvasni a megfelelő mezőt a címtárbejegyzésre a FAT lánc), akkor nem dokumentált 32h OS funkció, vagy olvassa el a gyökér szektor és az alábbi képletet alkalmazza:

    kornevyh_sektorov = (RootSiz * 32) / 512 nachalo_dannyh = ResSecs + (FatSize * FatCnt) + = kornevyh_sektorov nach_sektor nachalo_dannyh + ((ClustNum - 2) * ClustSiz).

    ahol a változók értékei: RootSiz. ResSecs. FatSize. FatCnt. A ClustSiz-t kivágják a gyökérszektorból vagy a BPB-ből (lásd a 4. táblázatot).

    Állítsa be a DX = start_ector értéket az INT 25h vagy az INT 26h olvasása előtt.

    Fájlkönyvtárak

    A fájlok könyvtára egy 32 bájtos elem - fájlleíró. Az operációs rendszer szempontjából minden könyvtár (a FAT12 és a FAT16 rendszer gyökérkönyvtárának kivételével) úgy néz ki, mint a fájlok, és tetszőleges számú rekordot tartalmazhat.

    A gyökérkönyvtár (gyökérkönyvtár) a meghajtó fő könyvtára, ahonnan kezdődik az alkönyvtárak fája. A logikai lemez rendszerterületén a FAT12 és a FAT16 gyökérkönyvtárában egy 512 elem tárolására tervezett, fix méretű (16 KB) speciális hely van elosztva. A FAT32 rendszerben a gyökérkönyvtár tetszőleges méretű fájl.

    8. táblázat: A címtár szerkezete

    Fájlok létrehozásakor a dátumok az MS-DOS-korszak kezdetétől számolódnak, azaz. 1980. január 1-jétől. A 9-15 bitek tartalmazzák az 1980-as évszámot (az érték 0 és 127 között van).

    Hosszú fájlnevek

    Kezdve a Windows 95-vel, a fájl hozzárendelhető (a rövid név mellett) egy úgynevezett hosszú név. Hosszú név tárolásához üres könyvtári bejegyzéseket használnak, a főelem mellett - a fájlleírót. A 0-3 byte attribútumok bitjeinek jelenléte azt jelzi, hogy a könyvtár szabad eleme egy hosszú fájlnév egy szakaszának tárolására szolgál (a fájlkezelők és könyvtárak ilyen kombinációja lehetetlen). A rövid és hosszú fájlnevek egyediek; Ne találkozz kétszer ugyanabban a könyvtárban.

    A hosszú név nem ASCII karakterekben íródott, hanem Unicode formátumban, ahol minden nemzeti ábécé egy kódkészletnek felel meg. A Unicode sokoldalúságának költsége az információ tárolási sűrűségének csökkenése - minden karakter két bájtot (16 bites szó) foglal el. Az üres könyvtárbejegyzésekben egy hosszú név kerül megírásra a darabokban darabolt formában (lásd a 9. táblázatot).

    9. Táblázat A könyvtárelem struktúrája, amely egy hosszú fájlnév töredékét tárolja

    A névtöredék első része

    Rövid név ellenőrző összege

    A név töredékének második része

    Az első klaszter számának (0-nak kell lennie)

    A név töredékének harmadik szegmense

    A hosszú nevet először a könyvtárba írják, és a töredékeket sorrendben rendezzük el, az utolsótól kezdve:

    A hosszú név utolsó töredéke

    A hosszú név második töredéke

    A hosszú név első töredéke

    Szabványos fájlleíró

    A lemezinformációs blokkot a DOS 32h UNDOCUMENTED funkciója alkotja.

    10. táblázat: A lemezinformációs blokk diagramja

    A lemez száma (0 = A, 1 = B, stb.)

    Eszköz eszköz száma az eszköz fejlécéből (egy illesztőprogram kezelhet több lemezt)

    Az ágazat mérete bájtban

    Az 1-es klaszterenkénti ágazatok száma (a klaszter maximális szektora)

    A klaszter eltolódása az ágazathoz (klaszter = 2 szektor) (szektorok klaszterenként 2: 2 arányban 4, 3 8 esetében)

    A tartalékszektorok száma (gyökér, a gyökér og. Kezdete) (a FAT első szektorának N-je)

    A FAT táblák száma

    Kapcsolódó cikkek