FAT fayl tizimini loyihalash - Design of the FAT file system

Yog '
Tuzuvchi (lar)Microsoft, SCP, IBM, Compaq, Raqamli tadqiqotlar, Novell, Kaldera
To'liq ismFayllarni ajratish jadvali:
FAT12 (12-bitli versiya),
FAT16 (16-bitli versiyalar),
FAT32 (32 bitli versiya, 28 bit ishlatilgan),
exFAT (64-bitli versiyalar)
Tanishtirdi1977 (BASIC-80 mustaqil disk )
FAT12: 1980 yil avgust (SCP)QDOS )
FAT16: 1984 yil avgust (IBM.)Kompyuter DOS 3.0)
FAT16B: 1987 yil noyabr (Compaq MS-DOS 3.31)
FAT32: 1996 yil avgust (Windows 95 OSR2 )
exFAT: 2006 yil noyabr (Windows o'rnatilgan CE 6.0 )
Bo'lim identifikatoriMBR /EBR:
FAT120x01 e.a.
FAT160x040x060x0E e.a.
FAT320x0B0x0C e.a.
exFAT0x07 e.a.
BDP:
EBD0A0A2-B9E5-443387C0-68B6B72699C7
Tuzilmalar
Katalog tarkibiJadval
Fayl ajratishBog'langan ro'yxat
Yomon bloklarKlasterni belgilash
Cheklovlar
Maks. tovush hajmiFAT12: 32MB (256 MB 64 uchunKB klasterlar)
FAT16: 2GB (4 GB 64 uchunKB klasterlar)
FAT32: 2Sil kasalligi (16 Sil kasalligi uchun KB sektorlar )
Maks. fayl hajmi4 294 967 295 bayt (4GB - 1) FAT16B va FAT32 bilan[1]
Maks. fayllar soniFAT12: 8 uchun 4,068KB klasterlar
FAT16: 32 uchun 65,460KB klasterlar
FAT32: 32 uchun 268,173,300KB klasterlar
Maks. fayl nomi uzunligi8.3 fayl nomi yoki 255 UCS-2 foydalanishda belgilar LFN
Xususiyatlari
Yozilgan sanalarO'zgartirilgan sana / vaqt, yaratilgan sana / vaqt (faqat DOS 7.0 va undan yuqori versiyalari), kirish sanasi (faqat mavjud bo'lgan holda) ACCDAT yoqilgan),[2] o'chirish sanasi / vaqti (faqat DELWATCH 2 bilan)
Sana oralig'i1980-01-01 ga 2099-12-31 (2107-12-31 )
Sana rezolyutsiyasiOxirgi o'zgartirilgan vaqt uchun 2 soniya,
Yaratilish vaqti uchun 10 ms,
Kirish sanasi uchun 1 kun,
O'chirish vaqti uchun 2 soniya
VilkalarTabiatan emas
XususiyatlarFaqat o'qish, Yashirin, Tizim, Tovush, Katalog, Arxiv
Fayl tizimining ruxsatlariFAT12 / FAT16: Fayl, katalog va hajmga kirish huquqlari O'qing, Yozing, Ijro eting, O'chirish faqat bilan DR-DOS, PalmDOS, Novell DOS, OpenDOS, FlexOS, 4680 operatsion tizim, 4690 operatsion tizimi, Bir vaqtning o'zida DOS, Multiuser DOS, Tizim menejeri, REAL / 32 (Huquqni faqat FlexOS, 4680 OS, 4690 OS bilan bajaring; shaxsiy fayl / katalog parollari FlexOS, 4680 OS, 4690 OS bilan ishlamaydi; Dunyo /Guruh /Egasi ruxsat berish darslari faqat ko'p foydalanuvchi xavfsizligi yuklangan holda)
FAT32: Qisman, faqat DR-DOS, REAL / 32 va 4690 OS bilan
Shaffof siqilishFAT12 / FAT16: jildga, SuperStor, Staker, DoubleSpace, DriveSpace
FAT32: Yo'q
Shaffof shifrlashFAT12 / FAT16: Faqat jild uchun DR-DOS
FAT32: Yo'q

A FAT fayl tizimi bu ma'lum bir kompyuter turi fayl tizimi arxitektura va undan foydalanadigan sanoat standartidagi fayl tizimlari oilasi.

FAT fayl tizimi oddiy va mustahkam bo'lgan eski fayl tizimidir.[3] Bu juda engil dasturlarda ham yaxshi ishlashni taklif qiladi, ammo ba'zi zamonaviy fayl tizimlari kabi ishlash, ishonchlilik va o'lchovni ta'minlay olmaydi. Shu bilan birga, deyarli hozirda ishlab chiqilganlarning barchasi uni muvofiqligi sababli qo'llab-quvvatlamoqda operatsion tizimlar uchun shaxsiy kompyuterlar va ko'p uy kompyuterlari, mobil qurilmalar va o'rnatilgan tizimlar Shunday qilib, 1981 yildan to hozirgi kungacha deyarli har qanday turdagi va har xil turdagi kompyuterlar va qurilmalar o'rtasida ma'lumotlar almashinuvi uchun juda mos format mavjud.

Dastlab 1977 yilda foydalanish uchun mo'ljallangan floppi, FAT tez orada moslashtirildi va deyarli universal tarzda ishlatildi qattiq disklar davomida DOS va Windows 9x ikki o'n yillik davrlar. Bugungi kunda FAT fayl tizimlari hanuzgacha disketalarda uchraydi, USB-karta, miltillovchi va boshqalar qattiq holat xotira kartalari va modullar va ko'plab ko'chma va ko'milgan qurilmalar. DCF uchun standart fayl tizimi sifatida FATni amalga oshiradi raqamli kameralar 1998 yildan beri.[4] FAT shuningdek, uchun ishlatiladi EFI tizim bo'limi (bo'lim turi 0xEF) ning yuklash bosqichida EFI -muvofiq kompyuterlar.

Disketlar uchun FAT standartlashtirildi ECMA -107[5] va ISO /IEC  9293:1994[6] (ISO 9293: 1987 o'rnini bosadi[7]). Ushbu standartlar FAT12 va FAT16-ni faqat qisqa muddat bilan qamrab oladi 8.3 fayl nomi qo'llab-quvvatlash; uzun fayl nomlari bilan VFAT bor qisman patentlangan.[8] Google Patents-ga ko'ra "Uzoq va qisqa fayl nomlari uchun umumiy ism maydoni" (US5758352A) 2019 yilda tugagan, bu patentning amal qilish muddati to'liq tugaganligini anglatishi mumkin.[9]

Texnik nuqtai

Fayl tizimining nomi fayl tizimining eng yaxshi indeks jadvalidan foydalanishidan kelib chiqadi Fayllarni ajratish jadvali, formatlash vaqtida statik ravishda ajratilgan. Jadvalda har biri uchun yozuvlar mavjud klaster, diskni saqlashning tutashgan maydoni. Har bir yozuvda faylning keyingi klasterining raqami yoki faylning oxiri, foydalanilmagan disk maydoni yoki diskning alohida ajratilgan joylari ko'rsatilgan marker mavjud. The ildiz katalogi diskda ushbu katalogdagi har bir faylning birinchi klasterining raqami mavjud; operatsion tizim keyinchalik FAT jadvalidan o'tishi mumkin, disk faylining har bir ketma-ket qismining klaster raqamini klaster zanjiri fayl tugaguniga qadar. Xuddi shu tarzda, pastki kataloglar o'z ichiga olgan maxsus fayllar sifatida amalga oshiriladi katalog yozuvlari ularning tegishli fayllari.

Dastlab 8-bitli fayl tizimi sifatida ishlab chiqilgan, disk drayvlar rivojlanib borishi bilan klasterlarning maksimal soni sezilarli darajada oshirildi va shuning uchun har bir klasterni aniqlash uchun ishlatiladigan bitlar soni ortdi. FAT formatining ketma-ket asosiy versiyalari jadval elementlari sonining nomi bilan nomlanadi: 12 (FAT12 ), 16 (FAT16 ) va 32 (FAT32 ). Asl nusxadan tashqari 8-bitli FAT prekursor, ushbu variantlarning har biri hali ham qo'llanilmoqda. FAT standarti boshqa yo'llar bilan kengaytirildi va umuman mavjud dasturiy ta'minot bilan orqaga qarab muvofiqligini saqlab qoldi.

Maket

FAT bo'limidagi yoki diskdagi tuzilmalar tartibiga umumiy nuqtai
MintaqaSektorlarda hajmiMundarija
Himoyalangan sektorlar(soni ajratilgan sektorlar )Yuklash sektori
FS ma'lumot sektori (Faqat FAT32)
Ko'proq ajratilgan sektorlar (ixtiyoriy)
FAT mintaqasi(FAT soni) * (bir FATga to'g'ri keladigan sektorlar)Fayllarni ajratish jadvali #1
Fayllarni ajratish jadvali №2 ... (ixtiyoriy)
Ildiz katalogi mintaqasi(asosiy yozuvlar soni * 32) / (har bir tarmoq uchun bayt)Ildiz Katalog (Faqat FAT12 va FAT16)
Ma'lumotlar mintaqasi(klasterlar soni) * (har bir klaster uchun sektorlar)Ma'lumotlar mintaqasi (fayllar va kataloglar uchun) ... (bo'lim yoki disk oxirigacha)

FAT fayl tizimi to'rt mintaqadan iborat:

Himoyalangan sektorlar
Birinchi ajratilgan sektor (mantiqiy sektor 0) bu Yuklash sektori (shuningdek, deyiladi Volume Boot Record yoki oddiygina VBR). Bu maydonni o'z ichiga oladi BIOS parametr bloklari (BPB) ba'zi bir asosiy fayl tizimlari ma'lumotlarini, xususan uning turini va boshqa bo'limlarning joylashuviga ko'rsatgichlarni o'z ichiga oladi va odatda operatsion tizimni o'z ichiga oladi. yuklash moslamasi kod.
Boot Sector-dan muhim ma'lumotlarga operatsion tizim strukturasi orqali kirish mumkin Parametrlarni blokirovka qilish (DPB) DOS va OS / 2 da.
Zaxira qilingan tarmoqlarning umumiy soni Boot Sector ichidagi maydon bilan ko'rsatiladi va odatda FAT32 fayl tizimlarida 32 ga teng.[10]
FAT32 fayl tizimlari uchun ajratilgan sektorlar quyidagilarni o'z ichiga oladi Fayl tizimi haqida ma'lumot sektori mantiqiy sektorda 1 va a Zaxira yuklash sektori mantiqiy sektorda 6.
Ko'pgina boshqa sotuvchilar bootstrap loader uchun bitta sektorli o'rnatishni (faqat mantiqiy sektor 0) ishlatishda davom etishgan bo'lsa-da, Microsoft-ning yuklash sektori kodi FAT32 joriy qilinganidan beri 0 va 2 mantiqiy tarmoqlarga tarqaldi, mantiqiy sektor 0 ga bog'liq mantiqiy sektorda sub-routines 2. Backup Boot Sector uch mantiqiy 6, 7 va 8 sektorlardan iborat. Ba'zi hollarda, Microsoft kengaytirilgan yuklash yuklagichi uchun ajratilgan tarmoqlar maydonining 12-sektoridan ham foydalanadi.
FAT mintaqasi
Bu odatda ikkita nusxasini o'z ichiga oladi Fayllarni ajratish jadvali ishdan bo'shatishni tekshirish uchun, hatto kamdan-kam hollarda, hatto diskni ta'mirlash dasturlari tomonidan ham qo'llaniladi.
Bu ma'lumotlar mintaqasi xaritalari, qaysi klasterlar fayllar va kataloglar tomonidan ishlatilishini bildiradi. FAT12 va FAT16 da ular zaxira qilingan tarmoqlarni darhol kuzatib boradilar.
Odatda qo'shimcha nusxalar yozuvlarda qattiq sinxronlashda saqlanadi va o'qishda ular faqat birinchi FATda xatolar yuz berganda qo'llaniladi.
Birinchi ikkita klaster (klaster) 0 va 1 ) xaritada maxsus qiymatlar mavjud.
Ildiz katalogi mintaqasi
Bu Katalog jadvali ildiz katalogida joylashgan fayllar va kataloglar haqidagi ma'lumotlarni saqlaydigan. U faqat FAT12 va FAT16 bilan ishlatiladi va ildiz katalogiga ushbu jildni yaratishda oldindan ajratilgan maksimal maksimal hajmni yuklaydi. FAT32 ma'lumotlar katalogidagi ildiz katalogini fayllar va boshqa kataloglar bilan birga saqlaydi, bu esa bunday cheklovsiz o'sishiga imkon beradi. Shunday qilib, FAT32 uchun ma'lumotlar mintaqasi bu erda boshlanadi.
Ma'lumotlar mintaqasi
Bu erda haqiqiy fayl va katalog ma'lumotlari saqlanadi va bo'limning katta qismini oladi. An'anaviy ravishda ma'lumotlar mintaqasining foydalanilmagan qismlari to'ldiruvchi qiymati bilan initsializatsiya qilinadi 0xF6 INT 1Eh bo'yicha Disk parametrlari jadvali (DPT) IBM mos mashinalarida formatlash paytida, lekin Atari portfeli. 8 dyuymli CP / M floppi odatda qiymati bilan oldindan formatlangan holda keladi 0xE5;[11] Raqamli tadqiqotlar yo'li bilan[12] bu qiymat ham ishlatilgan Atari ST formatlangan disketalar.[nb 1] Amstrad ishlatilgan 0xF4 o'rniga. Ba'zi zamonaviy formatlashtiruvchilar qattiq disklarni qiymati bilan artib tashlashadi 0x00, ammo qiymati 0xFF, dasturlashtirilmagan flesh-blokning standart qiymati, kamaytirish uchun flesh-disklarda ishlatiladi kiyish. Oxirgi qiymat odatda ROM disklarida ham qo'llaniladi. (Ba'zi rivojlangan formatlash vositalari format to'ldiruvchi baytni sozlash imkonini beradi.[nb 2])
Fayl zanjiriga FAT-da ko'proq havolalar qo'shish orqali fayllar va kichik kataloglar hajmini o'zboshimchalik bilan (erkin klasterlar mavjud bo'lganda) oshirish mumkin. Fayllar klasterlar birligida ajratiladi, shuning uchun a 1 KB fayl a da joylashgan 32 KB klaster, 31 KB isrof qilinmoqda.
FAT32 odatda Ildiz kataloglari jadvalini 2-sonli klasterda boshlaydi: ma'lumotlar mintaqasining birinchi klasteri.

FAT foydalanadi ozgina endian sarlavhadagi barcha yozuvlar uchun format (Atari ST yuklash tarmoqlaridagi ba'zi yozuvlar bundan mustasno, agar aniq ko'rsatilgan bo'lsa) va FAT (lar).[12] Klasterlar soniga kerak bo'lgandan ko'ra ko'proq FAT sektorlarini ajratish mumkin. Har qanday FAT nusxasining oxirgi sektorining oxirini mos klasterlar mavjud bo'lmagan taqdirda ishlatib bo'lmaydi. Sektorlarning umumiy soni (yuklash yozuvida ta'kidlanganidek) ma'lumotlar foydalanadigan tarmoqlar sonidan (klasterlar uchun xastaliklar × klasterlar), FATs (FAT x FAT bo'yicha xatlar soni), ildiz katalogidan (n / a) ko'p bo'lishi mumkin. va FAT32 uchun) va yuklash sektorini o'z ichiga olgan yashirin sektorlar: bu hajm oxirida foydalanilmaydigan tarmoqlarga olib keladi. Agar bo'lim fayl tizimida ishlagan tarmoqlarning umumiy sonidan ko'p sonli tarmoqlarni o'z ichiga olsa, bu bo'limning oxirida, hajmdan keyin foydalanilmaydigan tarmoqlarga olib keladi.

Himoyalangan sektorlar maydoni

Yuklash sektori

Kabi bo'linmagan qurilmalarda floppi, Yuklash sektori (VBR ) birinchi sektor (jismoniy CHS manzili 0/0/1 yoki LBA manzili 0 bo'lgan mantiqiy sektor 0). Qattiq disklar kabi bo'linadigan qurilmalar uchun birinchi sektor bu Master Boot Record bo'limlarni aniqlash, FAT fayl tizimi bilan formatlangan bo'limlarning birinchi sektori yana Boot Sector.

DOS 2.0 dan beri IBM mos keladigan x86-mashinalari uchun ko'pgina FAT versiyalari tomonidan qo'llaniladigan dastlabki 11 baytning umumiy tuzilishi quyidagilardir:

Bayt ofsetUzunlik (bayt)Mundarija
0x0003O'tish ko'rsatmasi. Agar yuklash sektorida tegishli imzo bo'lsa oxirgi ikki bayt yuklash sektori (tizim BIOS-da yoki MBR-da yashovchi ko'plab yuklash yuklovchilari tomonidan sinovdan o'tgan) va ushbu hajm ishga tushirilgan bo'lsa, oldingi yuklash o'rnatuvchisi ushbu kirish nuqtasiga ma'lum registr qiymatlari bilan bajarilishini amalga oshiradi va sakrash buyrug'i keyin o'tib ketadi qolgan (bajarilmaydigan) sarlavha. Qarang Volume Boot Record.

DOS 2.0 dan boshlab, yaroqli x86 yuklanadigan disklar qisqa sakrashdan keyin NOP (vaburilish ketma-ketlik 0xEB 0x ?? 0x90[13][14] DOS 3.0 dan beri ko'rilgan[nb 3]- va DOS 1.1 da[15][16]) yoki yaqinga sakrash (0xE9 0x ?? 0x ??[13][14] ko'pchilikda ko'rinib turganidek (Compaq, TeleVideo ) DOS 2.x formatlangan disklar, shuningdek ba'zi birlarida (Epson, Olivetti ) DOS 3.1 disklari). Orqaga muvofiqligi uchun MS-DOS, PC DOS va DR-DOS ham sakrashni qabul qiladi (0x69 0x ?? 0x ??)[13][14][17] olinadigan disklarda. Qattiq disklarda DR DOS qo'shimcha ravishda NOP bilan boshlangan almashtirilgan JMPS ketma-ketligini qabul qiladi (0x90 0xEB 0x ??),[17] MS-DOS / PC DOS esa yo'q. (Atari ST-ning muvofiqligi uchun quyida ko'ring.) Ushbu strstring naqshlaridan birining mavjudligi (ofsetda yaroqli media-descriptor qiymati uchun sinov bilan birgalikda 0x015) DOS 3.3 va undan yuqoriroq ko'rsatkichlarga xizmat qiladi, qandaydir BPB mavjud (garchi aniq o'lchov o'tish sathidan aniqlanmasligi kerak, chunki ba'zi yuklash tarmoqlarida BPB dan keyin shaxsiy yuklash yuklagichi ma'lumotlari mavjud), DOS 1.x uchun esa ( va ba'zi DOS 3.0) hajmlari, ular formatni FAT-dagi media bayt orqali aniqlash uchun DOS 1.x uslubiga qaytishlari kerak (mantiqan to'g'ri keladi) 1-sektor ).

0x0038OEM nomi (bo'shliqlar bilan to'ldirilgan 0x20). Ushbu qiymat disk qaysi tizimda formatlanganligini aniqlaydi.

Rasmiy ravishda OEM foydalanish uchun bepul deb hujjatlashtirilgan bo'lsa-da, MS-DOS / PC DOS (3.1 dan beri), Windows 95/98 / SE / ME va OS / 2 yuklash yozuvining qaysi qismlariga va qanday qilib ishonish mumkinligini aniqlash uchun ushbu maydonni tekshiradi. ularni talqin qilish. Shuning uchun OEM yorlig'ini o'zboshimchalik bilan yoki soxta qiymatlarga o'rnatish MS-DOS, PC DOS va OS / 2 hajmini to'g'ri tan olmasligi va yozuvlarda buzilishlarni keltirib chiqarishi mumkin.[18][19][20] Umumiy misollar "IBM␠␠3.3", "MSDOS5.0", "MSWIN4.1", "IBM␠␠7.1", "mkdosfs␠", va"FreeDOS␠".

Ba'zi sotuvchilar ushbu yozuvda litsenziyalash ma'lumotlari yoki kirish kalitlarini saqlaydilar.

Windows 95/98 / SE / ME-dagi Ovoz balandligini kuzatuvchisi "bilan OEM yorlig'ini ustiga yozadi????? IHC"imzolar (chapdan")ACOGACIHC" uchun "Chikago ") faqat o'qish uchun ko'rinadigan diskka kirishda (masalan DIR A:) agar vosita yozishdan himoyalanmagan bo'lsa. Yuqorida tushuntirilgan ba'zi bir qiymatlarga bog'liqlikni hisobga olgan holda, bu BPB formatiga va tarkibiga qarab, MS-DOS / PC DOS va OS / 2 vositalarini endi tanimasligi va vosita bo'lmasligiga qaramay xato xabarlarini yuborishi mumkin. nuqsonli va boshqa operatsion tizimlarda muammosiz o'qish mumkin. Windows 9x o'z-o'zini belgilab qo'yilgan disklarni muammosiz o'qiydi, ammo ma'nosiz parametrlar uchun g'alati qiymatlarni beradi, ular mavjud emas yoki disk eski BPB spetsifikatsiyasi bilan formatlanganida ishlatilmaydi, masalan. diskning seriya raqami (faqat DOS 5.0 yoki undan keyingi versiyada formatlangan disklar uchun mavjud va hokazo Windows 9x bilan OEM yorlig'i ustiga yozgandan so'ng ????? IHC kabi xabar beradi 0000-0000 yoki boshqa tizimda formatlangan diskdan foydalanganda diskning seriya raqami maydonida saqlanadigan boshqa qiymat).[21] Bu faqat olinadigan disk disklariga tegishli.

Ba'zi yuklash moslamalari bu erda aniqlangan ba'zi bir qiymatlarga qarab (masalan, NEWLDR ofset) sozlashni amalga oshiradi yoki yuklashni yuklash sektoriga o'tkazishni rad etadi. 0x018).

Ning yuklash ROM-i Wang Professional Kompyuter faqat OEM yorlig'ining dastlabki to'rtta belgisi bo'lsa, diskni bootable sifatida ko'rib chiqadi "Vang"Xuddi shunday, ROM BIOS-ning Flibs: Ha faqat OEM yorlig'ining dastlabki to'rtta belgisi bo'lsa, diskdan yuklanadi ": HA".

Agar bo'lsa FAT32 EBPB, sektor ofsetidagi imzo 0x042 bu 0x29 va ikkala sektorning umumiy yozuvlari 0 ga teng, fayl tizimidagi yozuv 64-bitli jami sektorni hisoblash uchun xizmat qilishi mumkin va OEM yorlig'i yozuvi ofsetda normal yozuv o'rniga muqobil fayl tizimi turi sifatida ishlatilishi mumkin 0x052.

Xuddi shunga o'xshash tarzda, agar bu yozuv "EXFAT␠␠␠", bu an ishlatilishini bildiradi exFAT BPB sektor ofsetida joylashgan 0x040 ga 0x077, aksincha NTFS jildlardan foydalanish "NTFS␠␠␠␠"[22] ishora qilish uchun NTFS BPB.

0x00Bfarq qiladiBIOS parametr bloklari (13, 19, 21 yoki 25 bayt), Kengaytirilgan BIOS parametr bloklari (32 yoki 51 bayt) yoki FAT32 kengaytirilgan BIOS parametrlari bloki (60 yoki 79 bayt); hajmi va tarkibi operatsion tizimlar va versiyalar o'rtasida farq qiladi, quyida ko'rib chiqing
farq qiladifarq qiladiFayl tizimi va operatsion tizimning o'ziga xos yuklash kodi; ko'pincha [E] BPB orqasidan darhol boshlanadi, lekin ba'zida qo'shimcha "xususiy" yuklash ma'lumotlari [E] BPB tugashi bilan yuklash kodi boshlanishi orasida saqlanadi; shuning uchun ofsetda sakrash 0x001 dan aniq [E] BPB formatini ishonchli olish uchun foydalanib bo'lmaydi.

(Kamida a. Bilan birgalikda DOS 3.31 BPB biroz GPT boot loaders (shunga o'xshash) BootDuet) foydalanish 0x1FA0x1FD ning yuqori 4 baytini saqlash uchun yashirin sektorlar birinchi 2 dan tashqarida joylashgan hajmlar uchun32-1 sektorlar. Ushbu joylashuv boshqa yuklash tarmoqlaridagi kod yoki boshqa ma'lumotlarni o'z ichiga olishi mumkinligi sababli, qachon yozilishi mumkin emas 0x1F90x1FD barchasi nolga teng emas.)

0x1FD1Jismoniy disk raqami (faqat DOS 3.2 dan 3.31 gacha yuklash sektorlarida). OS / 2 1.0 va DOS 4.0 bilan ushbu yozuv sektor ofsetiga o'tkazildi 0x024 (ofsetda) 0x19 ichida EBPB ). Ko'pgina Microsoft va IBM yuklash sektorlari qiymatlarini saqlab qolishadi 0x00 ofsetda 0x1FC va 0x1FD o'shandan beri, garchi ular imzoning bir qismi emas 0x1FE.

Agar bu yuklash hajmiga tegishli bo'lsa, DR-DOS 7.07 kengaytirilgan MBR-ni sozlash mumkin (qarang: NEWLDR ofset 0x014) ushbu yozuvni yuklash vaqtida berilgan DL qiymatiga yoki bo'lim jadvalida saqlanadigan qiymatga dinamik ravishda yangilash uchun. Bu muqobil disklarni o'chirishga imkon beradi, hatto VBR kod DL qiymatini e'tiborsiz qoldiradi.

0x1FE2Yuklash sektori imzosi (0x55 0xAA).[10][nb 4] Ushbu imzo IBM PC-ga mos keladigan yuklash kodini bildiradi va tizim BIOS-da yoki MBR-da ishlaydigan ko'plab yuklash dasturlari tomonidan yuklash sektorining yuklash kodiga o'tishdan oldin sinovdan o'tkaziladi (lekin, masalan, asl IBM PC ROM-BIOS tomonidan emas)[23]). Ushbu imzo ma'lum bir fayl tizimini yoki operatsion tizimni bildirmaydi. Ushbu imzo barcha FAT formatlangan disklarda mavjud emasligi sababli (masalan, DOS 1.x da emas)[15][16] yoki x86-bootable bo'lmagan FAT hajmlari), operatsion tizimlar jildlarga kirishda ushbu imzoga ishonmasliklari kerak (MS-DOS / PC DOS-ning eski nashrlari 3.3 ga qadar ushbu imzoni tekshirgan, ammo yangi muammolar, shuningdek DR- DOS yo'q). Formatlash vositalari, agar yozilgan yuklash sektorida kamida x86 mos keladigan qo'g'irchoq yuklash yuklovchisi stubi bo'lmasa, ushbu imzoni yozmasligi kerak; hech bo'lmaganda, u protsessorni cheksiz pastadirda to'xtatishi kerak (0xF4 0xEB 0xFD) yoki chiqaring INT 19 soat va RETF (0xCD 0x19 0xCB). Ushbu iplar sektorni qoplashda ishlatilmasligi kerak 0x000ammo, chunki DOS imzo sifatida boshqa opkodlarni sinab ko'radi. Ko'p MSX-DOS 2 disketalaridan foydalaniladi 0xEB 0xFE 0x90 sektor ofsetida 0x000 MS-DOS / PC DOS tomonidan tanilgan opcode naqshini saqlab, protsessorni qattiq tsiklda ushlab turish.

Ushbu imzo belgilangan sektor ofsetida joylashgan bo'lishi kerak 0x1FE 512 yoki undan yuqori sektor o'lchamlari uchun. Agar jismoniy sektor hajmi kattaroq bo'lsa, u jismoniy sektor oxirida takrorlanishi mumkin.

Atari ST diskni Atari deb qabul qiladi 68000 nazorat summasi 256 dan yuqori bo'lsa, bootable katta endian yuklash sektorining so'zlari teng 0x1234.[24][nb 5] Agar yuklash yuklagichining kodi IBM bilan mos keladigan bo'lsa, yuklash sektori bo'yicha nazorat summasi ushbu summa bilan tasodifan mos kelmasligini ta'minlash kerak. Agar shunday bo'ladigan bo'lsa, foydalanilmagan bitni o'zgartirish (masalan, yuklash kodi maydonidan oldin yoki keyin) ushbu shart bajarilmasligini ta'minlash uchun ishlatilishi mumkin.

Kamdan kam hollarda teskari imzo 0xAA 0x55 diskdagi tasvirlarda kuzatilgan. Bu noto'g'ri hujjatlarga asoslangan formatlash vositasida noto'g'ri bajarilish natijasi bo'lishi mumkin,[nb 4] shuningdek, bu disk tasvirining almashtirilgan bayt tartibini ko'rsatishi mumkin, bu boshqa platformalar yordamida platformalar o'rtasida o'tkazishda sodir bo'lishi mumkin. endianness. BPB qiymatlari va FAT12, FAT16 va FAT32 fayl tizimlari foydalanishga mo'ljallangan ozgina endian faqat vakillik va ulardan foydalanilgan variantlarning ma'lum bajarilishi mavjud emas katta endian o'rniga qiymatlar.

FAT formatlangan Atari ST floppi juda o'xshash yuklash sektori tartibiga ega:

Bayt ofsetUzunlik (bayt)Mundarija
0x0002O'tish ko'rsatmasi. Original Atari ST yuklash sektorlari a bilan boshlanadi 68000 BRA.S ko'rsatmasi (0x60 0x ??).[12] Shaxsiy kompyuter operatsion tizimlariga mos kelish uchun Atari ST formatlangan disklar TOS 1.4 bilan boshlang 0xE9 0x ?? o'rniga.
0x0026OEM nomi (bo'shliqlar bilan to'ldirilgan 0x20), masalan, "Yuklovchi" (0x4C 0x6F 0x61 0x64 0x65 0x72) Atari ST yuklash moslamasini o'z ichiga olgan hajmlarda. Yuqoridagi kompyuter formatidagi disklar uchun OEM Name ehtiyot choralarini ko'ring. Ushbu yozuvning ofset va uzunligi kompyuter formatidagi disklardagi yozuv bilan taqqoslaganda farq qiladi.
0x0083Diskning seriya raqami[12] (standart: 0x00 0x00 0x00), Atari ST tomonidan disk o'zgarishini aniqlash uchun ishlatiladi. (Windows 9x Volume Tracker har doim saqlaydi "IHC"bu erda yozishdan himoyalanmaydigan floppi-disklarda; yuqoriga qarang.) Agar diskdagi tarkib o'zgargan bo'lsa, bu qiymat o'zgarishi kerak, aks holda Atari STlar qayta kiritishda o'zgarishni tan olmasligi mumkin. Ushbu yozuv kompyuterdagi OEM Name maydoniga to'g'ri keladi. formatlangan disklar. Maksimal moslik uchun bu erda ba'zi bir naqshlarni moslashtirish kerak bo'lishi mumkin; yuqoriga qarang.
0x00B19DOS 3.0 BIOS parametrlari bloki (ozgina endian format)
0x01Efarq qiladiXususiy yuklash sektori ma'lumotlari (aralash katta endian va ozgina endian format)
farq qiladifarq qiladiFayl tizimi va operatsion tizimga xos Atari ST yuklash kodi. Kodning yuk holatiga nisbatan hech qanday taxminlar qilinmasligi kerak, bu esa boshqa joyga ko'chirilishi kerak. Agar operatsion tizim yuklansa (TOS.IMG.)[12]) bajarilmasa, kod Atari ST BIOS-ga 68000 RTS bilan qaytishi mumkin (opkod 0x4E75 bilan katta endian bayt ketma-ketligi 0x4E 0x75[nb 4]) ko'rsatma va barcha registrlar o'zgartirilmagan.
0x1FE2Tekshirish summasi. 16-bit summa 256 dan ortiq katta endian 512 bayt yuklash sektoridagi so'zlar, shu jumladan ushbu so'z bilan mos kelishi kerak sehrli qiymat 0x1234 Atari ST 68000 bajariladigan yuklash sektori kodini ko'rsatish uchun.[24] Ushbu summani kiritish, soliq summasini mos ravishda moslashtirish uchun ishlatilishi mumkin.[nb 5]

Agar mantiqiy sektor hajmi 512 baytdan katta bo'lsa, qoldiq summa tarkibiga kiritilmaydi va odatda nol bilan to'ldiriladi.[24]Ba'zi bir kompyuter operatsion tizimlari noto'g'ri bo'lsa, FAT formatlangan disketalarni qabul qilmaydi 0x55 0xAA[nb 4] imzo bu erda mavjud emas, uni joylashtirish tavsiya etiladi 0x55 0xAA ushbu joyda (va IBM bilan mos keladigan yuklovchi yoki stubni qo'shing) va shaxsiy summada yoki yuklash kodi maydonida yoki seriya raqamida foydalanilmagan so'zdan foydalaning. 0x1234[nb 5] mos kelmaydi (umumiy foydalanilmasa) yog 'kodi bir vaqtning o'zida ham IBM PC, ham Atari ST bajarilishi mumkin).

FAT12 formatida MSX-DOS jildlar juda o'xshash yuklash sektori tartibiga ega:

Bayt ofsetUzunlik (bayt)Mundarija
0x0003Dummy jump ko'rsatmasi (masalan, 0xEB 0xFE 0x90).
0x0038OEM nomi (bo'shliqlar bilan to'ldirilgan 0x20).
0x00B19DOS 3.0 BPB
0x01Eturlicha (2)MS80 yuklash kodiga Z80 protsessorlari uchun MSX-DOS 1 kod kirish nuqtasi. MSX-DOS 1 mashinalari boshqaruvni yuklash sektoriga o'tkazishda sakrab o'tadigan joy. Bu joy BPB formatlari bilan DOS 3.2 yoki IBM PC mos yuklash tarmoqlarining x86 mos yuklash sektori kodlari bilan bir-biriga to'g'ri keladi va bu erda maxsus ehtiyot choralari ko'rilmasa, MSX mashinasida ishlamay qolishiga olib keladi (bu erda tor 0x18 0xFE JR uchun 0x01E).
0x0206 MSX-DOS 2 jildli imzo "VOL_ID".
0x0261MSX-DOS 2 o'chirib tashlangan bayroq (standart: 0x00. Agar "VOL_ID"imzo sektor ofsetida mavjud 0x020, ushbu bayroq, agar o'chirilishi mumkin bo'lgan o'chirilgan fayllarni saqlasa (ofsetga qarang) 0x0C katalog yozuvlarida).
0x0274MSX-DOS 2 disk seriya raqami (standart: 0x00000000). Agar "VOL_ID"imzo sektor ofsetida mavjud 0x020, MSX-DOS 2 ommaviy axborot vositalarining o'zgarishini aniqlash uchun bu erda hajmning seriya raqamini saqlaydi.
0x02B5himoyalangan
0x030turlicha (2)MSX yuklash kodiga Z80 protsessorlari uchun MSX-DOS 2 kod kirish nuqtasi. MSX-DOS 2 mashinalari boshqaruvni yuklash sektoriga o'tkazishda sakrab o'tadigan joy. Bu joy EBPB formatlari bilan DOS 4.0 / OS / 2 1.2 yoki x86 mos keladigan yuklash sektori kodi IBM PC mos yuklash tarmoqlari bilan mos keladi va MSX mashinasida avariyaga olib keladi, agar maxsus choralar ko'rilmagan bo'lsa, masalan, protsessorni bu erda tor halqa (opstring 0x18 0xFE JR uchun 0x030).
0x1FE2Imzo

BIOS parametr bloklari

Dastlabki 25 baytning umumiy tuzilishi BIOS parametr bloklari DOS 2.0 dan beri FAT versiyalari tomonidan ishlatiladigan (BPB) (sektor ofsetida bayt) 0x00B ga 0x017 DOS 2.0 dan beri saqlanadi, lekin DOS 3.2 dan oldin har doim ham foydalanilmaydi, qiymatlari at 0x018 ga 0x01B DOS 3.0 dan beri ishlatiladi):

Sektorni ofsetlashBPB ofsetUzunlik (bayt)Mundarija
0x00B0x002Mantiqiy sektor bo'yicha baytlar ikkitadan; eng keng tarqalgan qiymati - 512. Ba'zi operatsion tizimlar boshqa sektor o'lchamlarini qo'llab-quvvatlamaydi. Oddiylik va maksimal ishlash uchun mantiqiy sektor hajmi ko'pincha diskning fizik sektori bilan bir xil bo'ladi, lekin ba'zi stsenariylarda kattaroq yoki kichikroq bo'lishi mumkin.

Mantiqiy sektori 65535 gacha bo'lgan yuklanmaydigan FAT12 / FAT16 jildlari uchun ruxsat etilgan minimal qiymat 32 baytni yoki 65535 dan ortiq mantiqiy sektorlar uchun 64 baytni tashkil qiladi. Minimal amaliy qiymat 128 ga teng. DOS-ning ba'zi DOS 3.31 OEM versiyalarida mantiqiy sektor hajmi 8192 baytgacha ishlatilgan. mantiqiy sektorli yog'lar. Atari ST GEMDOS 512 dan 4096 gacha bo'lgan mantiqiy sektor o'lchamlarini qo'llab-quvvatlaydi.[24] DR-DOS FAT12 / FAT16 hajmlarini 32 KB gacha bo'lgan mantiqiy sektor o'lchamlari va 1024 bayt / sektorgacha jismoniy sektorlarni qo'llab-quvvatlovchi INT 13h dasturlarini qo'llab-quvvatlaydi.[nb 6]FAT32 standart jildlari uchun minimal mantiqiy sektor hajmi 512 baytni tashkil etadi, uni qo'llab-quvvatlamasdan 128 baytgacha kamaytirish mumkin. FS ma'lumot sektori.

Disket-drayvlar va kontrollerlar fizik sektorning o'lchamlari 128, 256, 512 va 1024 baytdan foydalanadi (masalan, PC / AX). The Atari portfeli 64 KB dan katta hajmlar uchun 512, 32 KB dan katta hajmlar uchun 256 bayt va kichik hajmlar uchun 128 bayt hajmdagi sektor hajmini qo'llab-quvvatlaydi. Magneto-optik disklar 512, 1024 va 2048 bayt hajmdagi ishlatilgan sektor o'lchamlari. 2005 yilda ba'zi Seagate odatiy qattiq disklarda standart 512 bayt o'rniga 1024 baytlik sektor hajmi ishlatilgan.[25] Kengaytirilgan format qattiq disklar har bir sektor uchun 4096 baytdan foydalanadi (4Kn ) 2010 yildan beri, lekin 512 baytli sektorni taqlid qilish imkoniyatiga ega bo'ladi (512e ) o'tish davri uchun.

Linux va Android kengaytmasi bilan mantiqiy sektor hajmi ancha kattaroq bo'lib, rasmiy ravishda Manb sahifasida fayl tizimining yordam dasturlari uchun 32 KBgacha rasmiylashtirildi.

0x00D0x021Klaster bo'yicha mantiqiy tarmoqlar. Ruxsat berilgan qiymatlar 1, 2, 4, 8, 16, 32, 64 va 128. Ba'zi MS-DOS 3.x versiyalari maksimal 4 KB hajmdagi klaster hajmini qo'llab-quvvatlaydi, zamonaviy MS-DOS / PC DOS va Windows 95 esa maksimal klaster hajmi 32 KB. Windows 98 / SE / ME 64 KB hajmdagi klasterni qisman qo'llab-quvvatlaydi, ammo ba'zi FCB xizmatlari bunday disklarda mavjud emas va turli dasturlar ishlamay qoladi. The Windows NT kabi ba'zi bir muqobil DOS versiyalari PTS-DOS 64 KB klasterlarni to'liq qo'llab-quvvatlaydi.

DOS-ga asoslangan aksariyat operatsion tizimlar uchun 512 baytdan kattaroq sektor o'lchamlari uchun ham klasterning maksimal hajmi 32 KB (yoki 64 KB) bo'lib qoladi.

Mantiqiy sektorning 1 KB, 2 KB va 4 KB o'lchamlari uchun Windows NT 4.0 128 KB hajmdagi klasterlarni qo'llab-quvvatlaydi, 2 KB va 4 KB sektorlari uchun klaster hajmi 256 KB ga etishi mumkin.

DR-DOS ning ba'zi versiyalari 0 KB bo'lgan sektorlar / klaster qiymatidan foydalangan holda 512 bayt / sektori bo'lgan 128 KB klasterlarni cheklangan qo'llab-quvvatlashni ta'minlaydi.

MS-DOS / PC DOS ishga tushiriladi, agar bu qiymat 0 deb noto'g'ri ko'rsatilgan bo'lsa.[26]

0x00E0x032Soni himoyalangan mantiqiy sektorlar. Fayl tizimi tasviridagi birinchi FATdan oldingi mantiqiy sektorlar soni. Ushbu sektor uchun kamida 1, odatda FAT32 uchun 32 (kengaytirilgan yuklash sektori, FS ma'lumot sektori va zaxira yuklash sektorlarini ushlab turish uchun).

DR-DOS 7.0x FAT32 formatlangan jildlari bir sektorli yuklash sektori, FS ma'lumot sektori va zaxira sektoridan foydalanganligi sababli, DR-DOS ostida formatlangan ba'zi jildlar bu erda 4 qiymatidan foydalanadi.

0x0100x051Fayllarni ajratish jadvallari soni. Deyarli har doim 2; RAM disklari MS-DOS / PC DOS-ning aksariyat versiyalari 2 dan ortiq FAT-ni qo'llab-quvvatlamaydi. Ba'zi DOS operatsion tizimlari o'rnatilgan disk drayverida faqat ikkita FATni qo'llab-quvvatlaydi, ammo keyinchalik yuklangan blokirovka qiluvchi qurilmalar uchun boshqa FAT hisoblashni qo'llab-quvvatlaydi.

Ushbu yozuvda 2 ta FATni e'lon qiladigan hajmlar hech qachon qabul qilinmaydi TFAT jildlar. Agar qiymat 2 dan farq qiladigan bo'lsa, ba'zi Microsoft operatsion tizimlari ovoz balandligini TFAT hajmi sifatida o'rnatishga urinishlari va ikkinchi klasterdan foydalanishlari mumkin (1-klaster ) TFAT holatini aniqlash uchun birinchi FAT.

0x0110x062FAT12 yoki FAT16 ildiz kataloglari yozuvlarining maksimal soni. Oddiy ma'lumotlar klasterlarida ildiz katalogi saqlanadigan FAT32 uchun 0; ofsetga qarang 0x02C FAT32 EBPB-larida.

A qiymati 0 ga teng FAT32 EBPB (imzo yo'q 0x29 yoki 0x28 ofsetda 0x042) ba'zi bir nostandart FAT12 va FAT16 dasturlarida o'zgaruvchan kattalikdagi ildiz katalogini ko'rsatishi mumkin, ular ildiz katalogini boshlash klasterini saqlaydi 1-klaster FATga kirish.[27] Ammo ushbu kengaytmani asosiy operatsion tizimlar qo'llab-quvvatlamaydi,[27] chunki parvarishlash bayroqlari, zanjirning oxiridagi marker yoki 1-klaster yozuvining boshqa ishlatilishlariga zid bo'lishi mumkin TFAT kengaytmalar.

Ushbu qiymat katalog yozuvlari doimo to'liq mantiqiy tarmoqlarni iste'mol qiladigan qilib sozlanishi kerak, bunda har biri katalogga kirish 32 baytni oladi. MS-DOS / PC DOS bu qiymatni 16 ga ko'paytirilishini talab qiladi. Disketalarda qo'llab-quvvatlanadigan maksimal qiymat 240,[13] qattiq disklarda MS-DOS / PC DOS tomonidan qo'llab-quvvatlanadigan maksimal qiymat 512 ga teng.[13] DR-DOS, agar yuklash fayli birinchi 2048 ildiz katalogi yozuvlarida joylashgan bo'lsa, FAT12 / FAT16 jildlarini yuklashni qo'llab-quvvatlaydi.

0x0130x082Jami mantiqiy sektorlar. FAT32 uchun 0. (Agar nol bo'lsa, ofsetda 4 bayt qiymatidan foydalaning 0x020)
0x0150x0A1Media tavsiflovchi (taqqoslash: FAT identifikatori ):[28][29][30][nb 3]
0xE5
  • 8 dyuymli (200 mm) bir tomonlama, har bir tomon uchun 77 ta yo'l, bitta yo'l uchun 26 ta sektor, har bir tarmoq uchun 128 bayt (250,25 KB) (faqat DR-DOS)
0xED
  • 5,25 dyuymli (130 mm) ikki tomonlama, har tomondan 80 ta yo'l, 9 sektor, 720 KB (Tendi 2000 yil faqat)[20]
0xEE
  • Nostandart maxsus bo'limlar uchun mo'ljallangan (nostandart BPB formatidan foydalangan holda yoki 48- / 64-bitli adreslash kabi maxsus ommaviy axborot vositalariga kirishni talab qiladigan); bilan mos keladi 0xF8, lekin dizayni bilan bilmagan tizimlar tomonidan tan olinmagan; qiymati FAT identifikatori bilan bir xil bo'lishi shart emas, hech qachon zanjirning oxiridagi marker sifatida ishlatilmaydi (DR-DOS uchun ajratilgan)
0xEF
  • Nostandart odat uchun mo'ljallangan superfloppy formatlar; bilan mos keladi 0xF0, lekin dizayni bilan bilmagan tizimlar tomonidan tan olinmagan; qiymati FAT identifikatori bilan bir xil bo'lishi shart emas, hech qachon zanjirning oxiridagi marker sifatida ishlatilmaydi (DR-DOS uchun ajratilgan)
0xF0[5][6][7]
  • 3,5 dyuymli (90 mm) ikki tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 18 yoki 36 ta sektor (1440 KB, "1,44 MB" deb nomlanuvchi; yoki 2880 KB, "2,88 MB" deb nomlanuvchi).
  • Geometriyasi BPB-da aniqlangan maxsus floppi va superfloppy formatlarida foydalanish uchun mo'ljallangan.
  • Lenta kabi boshqa ommaviy axborot vositalari turlari uchun ham ishlatiladi.[31]
0xF4
0xF5
0xF8
  • Ruxsat etilgan disk (ya'ni odatda qattiq diskdagi bo'lim). (DOS 2.0 dan beri)[33][34]
  • Geometriya BPB-da aniqlangan har qanday bo'linadigan sobit yoki olinadigan ommaviy axborot vositalarida foydalanishga mo'ljallangan.
  • 3,5 dyuymli bir tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 9 ta sektor (360 KB) (MS-DOS 3.1[14] va MSX-DOS)
  • 5,25 dyuymli ikki tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 9 ta sektor (720 KB) (Sanyo 55x DS-DOS 2.11 faqat)[20]
  • Bir tomonlama (Altos MS-DOS 2.11 faqat)[32]
0xF9[5][6][7]
  • 3,5 dyuymli ikki tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 9 ta sektor (720 KB) (DOS 3.2 dan beri)[33]
  • 3,5 dyuymli ikki tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 18 ta sektor (1440 KB) (faqat DOS 3.2)[33]
  • 5,25 dyuymli ikki tomonlama, har bir tomon uchun 80 ta trek, bitta yo'l uchun 15 ta sektor (1200 KB, "1,2 MB" deb nomlanuvchi) (DOS 3.0 dan beri)[33]
  • Bir tomonlama (Altos MS-DOS 2.11 faqat)[32]
0xFA
  • 3,5 dyuym va 5,25 dyuymli bir tomonlama, har tomondan 80 ta trek, bitta trekka 8 ta sektor (320 KB)
  • RAM disklari va ROM disklari uchun ham ishlatiladi (masalan, yoqilgan Columbia Data Products[35] va boshqalar HP 200LX )
  • Qattiq disk (Tendi Faqat MS-DOS)
0xFB
  • 3,5 dyuym va 5,25 dyuymli ikki tomonlama, har tomondan 80 ta trek, bitta yo'l uchun 8 ta sektor (640 KB)
0xFC
  • 5,25 dyuymli bir tomonlama, har tomondan 40 ta trek, bitta yo'l uchun 9 ta sektor (180 KB) (DOS 2.0 dan beri)[33]
0xFD
  • 5,25 dyuymli ikki tomonlama, har tomondan 40 ta trek, bitta yo'l uchun 9 ta sektor (360 KB) (DOS 2.0 dan beri)[33]
  • 8 dyuymli ikki tomonlama, har bir tomon uchun 77 ta trek, bitta trek uchun 26 ta sektor, har bir tarmoq uchun 128 bayt (500,5 KB)
  • (8 dyuymli ikki tomonlama, (bitta va) ikki tomonlama zichlik (DOS 1)[33])
0xFE
  • 5.25 dyuymli bir tomonlama, har tomondan 40 ta trek, bitta yo'l uchun 8 ta tarmoq (160 KB) (DOS 1.0 dan beri)[33][36]
  • 8 dyuymli bir tomonlama, har bir tomon uchun 77 ta trek, bitta trek uchun 26 ta sektor, har bir tarmoq uchun 128 bayt (250,25 KB)[32][36]
  • 8 dyuymli ikki tomonlama, har bir tomon uchun 77 ta trek, bitta yo'l uchun 8 ta sektor, har bir sektor uchun 1024 bayt (1232 KB)[36]
  • (8 dyuymli bir tomonlama, (bitta va) ikki marta zichlik (DOS 1)[33])
0xFF
  • 5,25 dyuymli ikki tomonlama, har tomondan 40 ta trek, bitta yo'l uchun 8 ta sektor (320 KB) (DOS 1.1 dan beri)[33][36]
  • Qattiq disk (Sanyo 55x DS-DOS 2.11 faqat)[20]

Ushbu qiymat saqlangan media identifikatorini aks ettirishi kerak (for yozuvida 0-klaster FAT har bir nusxasining birinchi baytida. DOS 3.2 ga qadar ma'lum operatsion tizimlar (86-DOS, MS-DOS /Kompyuter DOS 1.x va MSX-DOS versiya 1.0) yuklash sektori parametrlarini umuman e'tiborsiz qoldiring va ichki oldindan belgilangan parametr shablonlari orasidan tanlash uchun FATning birinchi baytidan boshlab media-descriptor qiymatidan foydalaning. Katta yoki teng bo'lishi kerak 0xF0 DOS 4.0 dan beri.[13]

Olinadigan disklarda DR-DOS bu qiymat katta yoki teng bo'lsa, BPB mavjudligini qabul qiladi 0xF0,[13] holbuki sobit disklar uchun shunday bo'lishi kerak 0xF8 BPB mavjudligini taxmin qilish.

Dastlab, bu qiymatlar bit bayroqlari sifatida ishlatilishi kerak edi; taniqli BPB formatisiz va ikkalasining ham media tavsiflovchisiz olib tashlanadigan har qanday ommaviy axborot vositalari uchun 0xF8 yoki 0xFA ga 0xFF MS-DOS / PC DOS bit-8-sektor formatidan ko'ra trek formatiga 9-sektorni tanlash uchun bit 1-ni bayroq sifatida qabul qiladi va 0-bitni ikki tomonlama muhitni ko'rsatish uchun bayroq sifatida qabul qiladi.[14]Qiymatlar 0x00 ga 0xEF va 0xF1 ga 0xF7 zaxiralangan va ishlatilmasligi kerak.

0x0160x0B2FAT12 / FAT16 uchun fayllarni ajratish jadvalidagi mantiqiy tarmoqlar. FAT32 buni 0 ga o'rnatadi va 32-bit qiymatini ofsetda ishlatadi 0x024 o'rniga.

DOS 3.0 BPB:

Quyidagi kengaytmalar DOS 3.0 dan beri hujjatlashtirildi, ammo ular DOS 2.11-ning ba'zi nashrlari tomonidan qo'llab-quvvatlandi.[32] MS-DOS 3.10 hali ham DOS 2.0 formatini qo'llab-quvvatladi, ammo DOS 3.0 formatidan ham foydalanishi mumkin edi.

Sektorni ofsetlashBPB ofsetUzunlik (bayt)Mundarija
0x00B0x0013DOS 2.0 BPB
0x0180x0D2Disklar uchun bitta trekka jismoniy sektorlar INT 13 soat CHS geometriyasi,[10] Masalan, "1,20 MB" (1200 KB) floppi uchun 15 ta.

Nolinchi yozuv bu yozuv zaxiralanganligini, ammo ishlatilmayotganligini bildiradi.

0x01A0x0F2INT 13h CHS geometriyali disklar uchun boshlarning soni,[10] Masalan, ikki tomonlama floppi uchun 2 ta.

MS-DOS / PC DOS-ning barcha versiyalarida 7.10 gacha bo'lgan xato, ushbu operatsion tizimlarning 256 boshli CHS geometriyalari uchun ishdan chiqishiga olib keladi, shuning uchun deyarli barcha BIOS-lar faqat maksimal 255 boshni tanlashadi.

Nolinchi yozuv bu yozuv zaxiralanganligini, ammo ishlatilmayotganligini bildiradi.

0x01C0x112Ushbu FAT hajmini o'z ichiga olgan bo'lim oldidagi yashirin sektorlarning soni. Ushbu maydon har doim bo'linmagan ommaviy axborot vositalarida nolga teng bo'lishi kerak. Ushbu DOS 3.0 yozuvi ofsetdagi o'xshash yozuv bilan mos kelmaydi 0x01C DOS 3.31 dan beri BPB-larda.

Agar mantiqiy sektorlar ofsetga kirsa, uni ishlatmaslik kerak 0x013 nolga teng.

DOS 3.2 BPB:

Rasmiy ravishda MS-DOS 3.20 hali ham DOS 3.0 formatidan foydalangan, ammo SYS va FORMAT allaqachon 6 bayt uzunroq formatni qo'llab-quvvatlashga moslashtirildi (ularning hammasi ham ishlatilmagan).

Sektorni ofsetlashBPB ofsetUzunlik (bayt)Mundarija
0x00B0x0019DOS 3.0 BPB
0x01E0x132Jami mantiqiy sektorlar, shu jumladan yashirin sektorlar. Ushbu DOS 3.2 yozuvi ofsetdagi o'xshash yozuv bilan mos kelmaydi 0x020 DOS 3.31 dan beri BPB-larda.

Agar mantiqiy sektorlar ofsetga kirsa, uni ishlatmaslik kerak 0x013 nolga teng.

DOS 3.31 BPB:

Rasmiy ravishda DOS 3.31 bilan tanishtirilgan va DOS 3.2 tomonidan ishlatilmaydigan ba'zi DOS 3.2 yordam dasturlari ushbu yangi format haqida xabardor bo'lish uchun yaratilgan. Rasmiy hujjatlar ushbu qadriyatlarga faqat mantiqiy sektorlar kirib kelganda ishonishni tavsiya qiladi 0x013 nolga teng.

Sektorni ofsetlashBPB ofsetUzunlik (bayt)Mundarija
0x00B0x0013DOS 2.0 BPB
0x0180x0D2Disklar uchun bitta trekka jismoniy sektorlar INT 13 soat CHS geometriyasi,[10] masalan, "1,44 MB" (1440 KB) floppi uchun 18 ta. CHS-ga kirishni qo'llab-quvvatlamaydigan drayvlar uchun foydalanilmaydi. Mavjud yozuv bilan bir xil DOS 3.0 dan beri.

Nolinchi yozuv bu yozuv zahiralanganligini, ammo ishlatilmayotganligini bildiradi. 0 qiymati faqat LBA-ga kirishni bildirishi mumkin, ammo ba'zi yuklash yuklagichlarida bo'linishni nolga ajratish holatini keltirib chiqarishi mumkin, agar bu erda neytral qiymatni 1 saqlash kerak bo'lsa, agar hech qanday CHS geometriyasi oqilona taqlid qilinmasa.

0x01A0x0F2Number of heads for disks with INT 13h CHS geometry,[10] e.g., 2 for a double sided floppy. Unused for drives, which don't support CHS access any more. Identical to an entry available since DOS 3.0.

A bug in all versions of MS-DOS/PC DOS up to including 7.10 causes these operating systems to crash for CHS geometries with 256 heads, therefore almost all BIOSes choose a maximum of 255 heads only.

A zero entry indicates that this entry is reserved, but not used. A value of 0 may indicate LBA-only access, but may cause a divide-by-zero exception in some boot loaders, which can be avoided by storing a neutral value of 1 here, if no CHS geometry can be reasonably emulated.

0x01C0x114Count of hidden sectors preceding the partition that contains this FAT volume. This field should always be zero on media that are not partitioned.[5][6][7] This DOS 3.31 entry is incompatible with a similar entry at offset 0x01C in DOS 3.0-3.3 BPBs. At least, it can be trusted if it holds zero, or if the logical sectors entry at offset 0x013 nolga teng.

If this belongs to an Kengaytirilgan faol bo'lim (AAP) selected at boot time, the BPB entry will be dynamically updated by the enhanced MBR to reflect the "relative sectors" value in the partition table, stored at offset 0x1B6 in the AAP or NEWLDR MBR, so that it becomes possible to boot the operating system from EBRs.

(Biroz GPT boot loaders (like BootDuet) use boot sector offsets 0x1FA0x1FD to store the high 4 bytes of a 64-bit hidden sectors value for volumes located outside the first 232−1 sectors.)

0x0200x154Total logical sectors (if greater than 65535; otherwise, see offset 0x013). This DOS 3.31 entry is incompatible with a similar entry at offset 0x01E in DOS 3.2-3.3 BPBs. Officially, it must be used only if the logical sectors entry at offset 0x013 is zero, but some operating systems (some old versions of DR DOS) use this entry also for smaller disks.

For partitioned media, if this and the entry at 0x013 are both 0 (as seen on some DOS 3.x FAT16 volumes), many operating systems (including MS-DOS/PC DOS) will retrieve the value from the corresponding partition's entry (at offset 0xC) ichida MBR o'rniga.

If both of these entries are 0 on volumes using a FAT32 EBPB imzo bilan 0x29, values exceeding the 4,294,967,295 (232−1) limit (f.e. some DR-DOS volumes with 32-bit cluster entries) can use a 64-bit entry at offset 0x052 o'rniga.

A simple formula translates a volume's given cluster number CN to a logical sector number LSN:[5][6][7]

  1. Determine (once) SSA=RSC+FN×SF+ceil((32×RDE)/SS), where the reserved sector count RSC is stored at offset 0x00E, the number of FATsFN ofsetda 0x010, the sectors per FAT SF ofsetda 0x016 (FAT12/FAT16) or 0x024 (FAT32), the root directory entries RDE ofsetda 0x011, the sector size SS ofsetda 0x00Bva shift (x) rounds up to a whole number.
  2. Aniqlang LSN=SSA+(CN−2)×SC, where the sectors per cluster SC are stored at offset 0x00D.

On unpartitioned media the volume's number of hidden sectors is zero and therefore LSN va LBA addresses become the same for as long as a volume's logical sector size is identical to the underlying medium's physical sector size. Under these conditions, it is also simple to translate between CHS manzillar va LSNs shuningdek:

LSN=SPT×(HN+(NOS×TN))+SN−1, where the sectors per track SPT are stored at offset 0x018, and the number of sides NOS ofsetda 0x01A. Trek raqami TN, head number HN, and sector number SN mos keladi Silindr-bosh sektori: the formula gives the known CHS to LBA tarjima.

Kengaytirilgan BIOS parametr bloklari

Further structure used by FAT12 and FAT16 since OS/2 1.0 and DOS 4.0, also known as Kengaytirilgan BIOS parametr bloklari (EBPB) (bytes below sector offset 0x024 are the same as for the DOS 3.31 BPB):

Sektorni ofsetlashEBPB offsetUzunlik (bayt)Mundarija
0x00B0x0025DOS 3.31 BPB
0x0240x191Physical drive number (0x00 for (first) removable media, 0x80 for (first) fixed disk as per INT 13h ). Allowed values for possible physical drives depending on BIOS are 0x00-0x7E va 0x80-0xFE. Qiymatlar 0x7F va 0xFF are reserved for internal purposes such as remote or ROM boot and should never occur on disk. Some boot loaders such as the MS-DOS/PC DOS boot loader use this value when loading the operating system, others ignore it altogether or use the drive number provided in the DL registri tomonidan underlying boot loader (e.g., with many BIOSes and MBRs). The entry is sometimes changed by SYS tools or it can be dynamically fixed up by the prior bootstrap loader in order to force the boot sector code to load the operating system from alternative physical disks than the default.

A similar entry existed (only) in DOS 3.2 to 3.31 boot sectors at sector offset 0x1FD.

If this belongs to a boot volume, the DR-DOS 7.07 enhanced MBR can be configured (see NEWLDR offset 0x014) to dynamically update this EBPB entry to the DL value provided at boot time or the value stored in the partition table. This enables booting off alternative drives, even when the VBR code ignores the DL value.

0x0250x1A1Zaxira qilingan;
  • In some MS-DOS/PC DOS boot code used as a scratchpad for the INT 13h current head high byte for the assumed 16-bit word at offset 0x024. Some DR-DOS FAT12/FAT16 boot sectors use this entry as a scratchpad as well, but for different purposes.
  • VGACOPY stores a CRC over the system's ROM-BIOS in this location.
  • Some boot managers use this entry to communicate the desired drive letter under which the volume should occur to operating systems such as OS/2 by setting bit 7 and specifying the drive number in bits 6-0 (C: = value 0, D: = value 1, ...). Since this normally affects the in-memory image of the boot sector only, this does not cause compatibility problems with other uses;
  • In Windows NT used for CHKDSK flags (bits 7-2 always cleared, bit 1: disk I/O errors encountered, possible bad sectors, run surface scan on next boot, bit 0: volume is "dirty" and was not properly unmounted before shutdown, run CHKDSK on next boot).[34] Should be set to 0 by formatting tools.[5][6][7] See also: Bitflags in the second cluster entry in the FAT.
0x0260x1B1Extended boot signature. (Should be 0x29[5][6][7][28] to indicate that an EBPB with the following 3 entries exists (since OS/2 1.2 and DOS 4.0). Can be 0x28 on some OS/2 1.0-1.1 and PC DOS 3.4 disks indicating an earlier form of the EBPB format with only the serial number following. MS-DOS/PC DOS 4.0 and higher, OS/2 1.2 and higher as well as the Windows NT family recognize both signatures accordingly.)
0x0270x1C4Volume ID (serial number)

Typically the serial number "xxxx-xxxx" is created by a 16-bit addition of both DX values returned by INT 21h/AH=2Ah (get system date)[nb 7] and INT 21h/AH=2Ch (get system time)[nb 7] for the high word and another 16-bit addition of both CX values for the low word of the serial number.Alternatively, some DR-DOS disk utilities provide a /# option to generate a human-readable time stamp "mmdd-hhmm" build from BCD-encoded 8-bit values for the month, day, hour and minute instead of a serial number.

0x02B0x2011Partition Volume Label, padded with blanks (0x20), e.g., "NO␠NAME␠␠␠␠" Software changing the directory volume label in the file system should also update this entry, but not all software does. The partition volume label is typically displayed in partitioning tools since it is accessible without mounting the volume. Supported since OS/2 1.2 and MS-DOS 4.0 and higher.

Not available if the signature at 0x026 ga o'rnatildi 0x28.

This area was used by boot sectors of DOS 3.2 to 3.3 to store a private copy of the Disk parametrlari jadvali (DPT) instead of using the INT 1Eh pointer to retrieve the ROM table as in later issues of the boot sector. The re-usage of this location for the mostly cosmetical partition volume label minimized problems if some older system utilities would still attempt to patch the former DPT.

0x0360x2B8File system type, padded with blanks (0x20), e.g., "FAT12␠␠␠", "FAT16␠␠␠", "FAT␠␠␠␠␠"

This entry is meant for display purposes only and must not be used by the operating system to identify the type of the file system. Nevertheless, it is sometimes used for identification purposes by third-party software and therefore the values should not differ from those officially used. Supported since OS/2 1.2 and MS-DOS 4.0 and higher.

Not available if the signature at 0x026 ga o'rnatildi 0x28.

FAT32 Extended BIOS Parameter Block

In essence FAT32 inserts 28 bytes into the EBPB, followed by the remaining 26 (or sometimes only 7) EBPB bytes as shown above for FAT12 and FAT16. Microsoft and IBM operating systems determine the type of FAT file system used on a volume solely by the number of clusters, not by the used BPB format or the indicated file system type, that is, it is technically possible to use a "FAT32 EBPB" also for FAT12 and FAT16 volumes as well as a DOS 4.0 EBPB for small FAT32 volumes. Since such volumes were found to be created by Windows operating systems under some odd conditions,[nb 8] operating systems should be prepared to cope with these hybrid forms.

Sektorni ofsetlashFAT32 EBPB offsetUzunlik (bayt)Mundarija
0x00B0x0025DOS 3.31 BPB
0x0240x194Logical sectors per file allocation table (corresponds with the old entry at offset 0x0B in the DOS 2.0 BPB ).

The byte at offset 0x026 in this entry should never become 0x28 yoki 0x29 in order to avoid any misinterpretation with the EBPB format under non-FAT32 aware operating systems.

0x0280x1D2Drive description / mirroring flags (bits 3-0: zero-based number of active FAT, if bit 7 set.[10] If bit 7 is clear, all FATs are mirrored as usual. Other bits reserved and should be 0.)

DR-DOS 7.07 FAT32 boot sectors with dual LBA and CHS support utilize bits 15-8 to store an access flag and part of a message. These bits contain either bit pattern 0110:1111b (low-case letter 'o', bit 13 set for CHS access) or 0100:1111b (upper-case letter 'O', bit 13 cleared for LBA access). The byte is also used for the second character in a potential "No␠IBMBIO␠␠COM" error message (see offset 0x034), displayed either in mixed or upper case, thereby indicating which access type failed). Formatting tools or non-DR SYS-type tools may clear these bits, but other disk tools should leave bits 15-8 unchanged.

0x02A0x1F2Version (defined as 0.0). The high byte of the version number is stored at offset 0x02B, and the low byte at offset 0x02A.[10] FAT32 implementations should refuse to mount volumes with version numbers unknown by them.
0x02C0x214Cluster number of root directory start, typically 2 (first cluster[37]) if it contains no bad sector. (Microsoft's FAT32 implementation imposes an artificial limit of 65,535 entries per directory, whilst many third-party implementations do not.)

A cluster value of 0 is not officially allowed and can never indicate a valid root directory start cluster. Some non-standard FAT32 implementations may treat it as an indicator to search for a fixed-sized root directory where it would be expected on FAT16 volumes; see offset 0x011.

0x0300x252Logical sector number of FS Information Sector, typically 1, i.e., the second of the three FAT32 boot sectors.

Some FAT32 implementations support a slight variation of Microsoft's specification in making the FS Information Sector optional by specifying a value of 0xFFFF[26] (yoki 0x0000) in this entry. Since logical sector 0 can never be a valid FS Information Sector, but FS Information Sectors use the same signature as found on many boot sectors[iqtibos kerak ], file system implementations should never attempt to use logical sector 0 as FS Information sector and instead assume that the feature is unsupported on that particular volume. Without a FS Information Sector, the minimum allowed logical sector size of FAT32 volumes can be reduced downto 128 bytes for special purposes.

0x0320x272First logical sector number of a copy of the three FAT32 boot sectors, typically 6.[10]

Since DR-DOS 7.0x FAT32 formatted volumes use a single-sector boot sector, some volumes formatted under DR-DOS use a value of 2 here.

Ning qiymatlari 0x0000[10] (and/or 0xFFFF[26]) are reserved and indicate that no backup sector is available.

0x0340x2912Reserved (may be changed to format filler byte 0xF6[nb 2] as an artifact by MS-DOS FDISK, must be initialized to 0 by formatting tools, but must not be changed by file system implementations or disk tools later on.)

DR-DOS 7.07 FAT32 boot sectors use these 12 bytes to store the filename of the "IBMBIO␠␠COM"[nb 9] file to be loaded (up to the first 29,696 bytes or the actual file size, whatever is smaller) and executed by the boot sector, followed by a terminating NUL (0x00) character. This is also part of an error message, indicating the actual boot file name and access method (see offset 0x028).

0x0400x351Cf. 0x024 for FAT12/FAT16 (Physical Drive Number)

exFAT BPBs are located at sector offset 0x040 ga 0x077, overlapping all the remaining entries of a standard FAT32 EBPB including this one. They can be detected via their OEM label signature "EXFAT␠␠␠" at sector offset 0x003. In this case, the bytes at 0x00B ga 0x03F are normally set to 0x00.

0x0410x361Cf. 0x025 for FAT12/FAT16 (Used for various purposes; see FAT12/FAT16)

May hold format filler byte 0xF6[nb 2] artifacts after partitioning with MS-DOS FDISK, but not yet formatted.

0x0420x371Cf. 0x026 for FAT12/FAT16 (Extended boot signature, 0x29)

Most FAT32 file system implementations do not support an alternative signature of 0x28[22] to indicate a shortened form of the FAT32 EBPB with only the serial number following (and no Volume Label and File system type entries), but since these 19 mostly unused bytes might serve different purposes in some scenarios, implementations should accept 0x28 as an alternative signature and then fall back to use the directory volume label in the file system instead of in the EBPB for compatibility with potential extensions.

0x0430x384Cf. 0x027 for FAT12/FAT16 (Volume ID)
0x0470x3C11Cf. 0x02B for FAT12/FAT16 (Volume Label)

Not available if the signature at offset 0x042 ga o'rnatildi 0x28.

0x0520x478Cf. 0x036 for FAT12/FAT16 (File system type, padded with blanks (0x20), e.g., "FAT32␠␠␠").

Not available if the signature at 0x042 ga o'rnatildi 0x28.

If both total logical sectors entries at offset 0x020 va 0x013 are 0 on volumes using a FAT32 EBPB imzo bilan 0x29, volumes with more than 4,294,967,295 (232-1) sectors (f.e. some DR-DOS volumes with 32-bit cluster entries) can use this entry as 64-bit total logical sectors entry instead. In this case, the OEM label at sector offset 0x003 may be retrieved as new-style file system type o'rniga.

Istisnolar

Versions of DOS before 3.2 totally or partially relied on the media descriptor byte in the BPB or the FAT ID byte in cluster 0 of the first FAT in order to determine FAT12 diskette formats even if a BPB is present. Depending on the FAT ID found and the drive type detected they default to use one of the following BPB prototypes instead of using the values actually stored in the BPB.[nb 3]

Originally, the FAT ID was meant to be a bit flag with all bits set except for bit 2 cleared to indicate an 80 track (vs. 40 track) format, bit 1 cleared to indicate a 9 sector (vs. 8 sector) format, and bit 0 cleared to indicate a single-sided (vs. double-sided) format,[14] but this scheme was not followed by all OEMs and became obsolete with the introduction of hard disks and high-density formats. Also, the various 8-inch formats supported by 86-DOS and MS-DOS do not fit this scheme.

FAT ID (compare with media ID at BPB offset 0x0A)[29][30]0xFF0xFE0xFD0xFC0xFB0xFA0xF90xF80xF00xED0xE5
Hajmi8"5.25"8"8"5.25"8"8"5.25"5.25"5.25" / 3.5"5.25" / 3.5"5.25"3.5"3.5"5.25"5.25" / 3.5"3.5"3.5"3.5"5.25"8"
Zichlik?DD 48tpiSDDDDD 48tpiSDSDDD 48tpiDD 48tpi??HD 96tpiDD 135tpiHD 135tpiQD 96tpi?DDHD 135tpiEDQD 96tpiSD
Modulyatsiya?MFMFMMFMMFMFMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMMFMFM
Formatted capacity (KB)?320250 ("old")[32][36]1200160250 ("new")[32][36]5003601806403201200720144072036036014402880720243 / 250
Cylinders (CHS)774077774077774040808080808080808080808077
Physical sectors / track
(BPB offset 0x0D)
?8268826269988159189 (8[35])9918369 (8[35])26
Number of heads
(BPB offset 0x0F)
?21[32][36]2[14][29][36] (1)11[14][32][36]2[29]21212222112221
Byte payload / physical sector?5121281024512128128512512512512512512512512512512512512512128
Bytes / logical sector
(BPB offset 0x00)
?5121281024512128128512512512512512512512512512512512512512128
Logical sectors / cluster
(BPB offset 0x02)
?2411442121[29] (2?[14])121?2?12?4
Reserved logical sectors
(BPB offset 0x03)
?11[32][36]114[32][36]4111111 (2)111111?1
Number of FATs
(BPB offset 0x05)
?22222222222222222222
Root directory entries
(BPB offset 0x06)
?112 (7 sectors)68 (17 sectors)192 (6 sectors)64 (4 sectors)68 (17 sectors)68 (17 sectors)112 (7 sectors)64 (4 sectors)112 (7 sectors)112 (7 sectors)224 (14 sectors)112 (7 sectors)224 (14 sectors)?112 (7 sectors)?224 (14 sectors)240 (15 sectors)?64 (16 sectors)
Total logical sectors
(BPB offset 0x08)
?6402002[32][36]1232[29][36] (616[14])3202002[14][32][36]4004[29]7203601280640240014402880?720?28805760?2002
Logical sectors / FAT
(BPB offset 0x0B)
?16[32][36]216[32][36]6?[29]2222[29] (1?[14])739 (7)?2?99?1
Hidden sectors
(BPB offset 0x11)
?03[29] (0[14])0000000000000000?0
Total number of clusters?3154971227313?997?[29]354351??23717132847????28472863??
Logical sector order?????????????????????
Sector mapping?
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
sector+ head+ track+
?
sector+ track+
sector+ track+
sector+ head+ track+
sector+ head+ track+
?
sector+ track+
First physical sector (CHS)?11111111??111?1?11?1
DRIVER.SYS /F:n?0340?300??127???79?3
BPB Presence???????????HaHaHa???HaHa??
Qo'llab-quvvatlash?
DOS 1.1[36]
DOS 1.0[32][36]
DOS 2.0
DOS 1.0[36]
?[32][36]
DOS 2.0
DOS 2.0
DOS 2.0
??
DOS 3.0
DOS 3.2
DOS 3.2 only;
(DR-DOS)
Sanyo 55x
DS-DOS 2.11 only
MS-DOS 3.1[14]
MSX-DOS
DOS 3.3
DOS 5.0
Tandy 2000 only
DR-DOS only

Microsoft recommends to distinguish between the two 8-inch formats for FAT ID 0xFE by trying to read of a single-density address mark. If this results in an error, the medium must be double-density.[30]

The table does not list a number of incompatible 8-inch and 5.25-inch FAT12 floppy formats supported by 86-DOS, which differ either in the size of the directory entries (16 bytes vs. 32 bytes) or in the extent of the reserved sectors area (several whole tracks vs. one logical sector only).

The implementation of a single-sided 315 KB FAT12 format used in MS-DOS uchun O'rik kompyuter va F1e[38] had a different boot sector layout, to accommodate that computer's non-IBM compatible BIOS. The jump instruction and OEM name were omitted, and the MS-DOS BPB parameters (offsets 0x00B-0x017 in the standard boot sector) were located at offset 0x050. The Portativ, F1, PC duo va Xi FD supported a non-standard double-sided 720 KB FAT12 format instead.[38] The differences in the boot sector layout and media IDs made these formats incompatible with many other operating systems. The geometry parameters for these formats are:

  • 315 KB: Bytes per logical sector: 512 bytes, logical sectors per cluster: 1, reserved logical sectors: 1, number of FATs: 2, root directory entries: 128, total logical sectors: 630, FAT ID: 0xFC, logical sectors per FAT: 2, physical sectors per track: 9, number of heads: 1.[38][39]
  • 720 KB: Bytes per logical sector: 512 bytes, logical sectors per cluster: 2, reserved logical sectors: 1, number of FATs: 2, root directory entries: 176, total logical sectors: 1440, FAT ID: 0xFE, logical sectors per FAT: 3, physical sectors per track: 9, number of heads: 2.[38]

Ning keyingi versiyalari Apricot MS-DOS gained the ability to read and write disks with the standard boot sector in addition to those with the Apricot one. These formats were also supported by DOS Plus 2.1e/g for the Apricot ACT series.

The DOS Plus adaptation for the BBC Master 512 supported two FAT12 formats on 80-track, double-sided, double-density 5.25" drives, which did not use conventional boot sectors at all. 800 KB data disks omitted a boot sector and began with a single copy of the FAT.[39] The first byte of the relocated FAT in logical sector 0 was used to determine the disk's capacity. 640 KB boot disks began with a miniature ADFS file system containing the boot loader, followed by a single FAT.[39][40] Also, the 640 KB format differed by using physical CHS sector numbers starting with 0 (not 1, as common) and incrementing sectors in the order sector-track-head (not sector-head-track, as common).[40] The FAT started at the beginning of the next track. These differences make these formats unrecognizable by other operating systems. The geometry parameters for these formats are:

  • 800 KB: Bytes per logical sector: 1024 bytes, logical sectors per cluster: 1, reserved logical sectors: 0, number of FATs: 1, root directory entries: 192, total logical sectors: 800, FAT ID: 0xFD, logical sectors per FAT: 2, physical sectors per track: 5, number of heads: 2.[39][40]
  • 640 KB: Bytes per logical sector: 256 bytes, logical sectors per cluster: 8, reserved logical sectors: 16, number of FATs: 1, root directory entries: 112, total logical sectors: 2560, FAT ID: 0xFF, logical sectors per FAT: 2, physical sectors per track: 16, number of heads: 2.[39][40]

DOS Plus for the Master 512 could also access standard PC disks formatted to 180 KB yoki 360 KB, using the first byte of the FAT in logical sector 1 to determine the capacity.

The DEC Rainbow 100 (all variations) supported one FAT12 format on 80-track, single-sided, quad-density 5.25" drives. The first two tracks were reserved for the boot loader, but didn't contain an MBR nor a BPB (MS-DOS used a static in-memory BPB instead). The boot sector (track 0, side 0, sector 1) was Z80 code beginning with DI 0xF3. The 8088 bootstrap was loaded by the Z80. Track 1, side 0, sector 2 starts with the Media/FAT ID byte 0xFA. Unformatted disks use 0xE5 o'rniga. The file system starts on track 2, side 0, sector 1. There are 2 copies of the FAT and 96 entries in the root directory. In addition, there is a physical to logical track mapping to effect a 2:1 sector interleaving. The disks were formatted with the physical sectors in order numbered 1 to 10 on each track after the reserved tracks, but the logical sectors from 1 to 10 were stored in physical sectors 1, 6, 2, 7, 3, 8, 4, 9, 5, 10.[41]

FS Information Sector

The "FS Information Sector" was introduced in FAT32[42] for speeding up access times of certain operations (in particular, getting the amount of free space). It is located at a logical sector number specified in the FAT32 EBPB boot record at position 0x030 (usually logical sector 1, immediately after the boot record itself).

Byte offsetUzunlik (bayt)Mundarija
0x0004FS information sector signature (0x52 0x52 0x61 0x41 = "RRaA")

For as long as the FS Information Sector is located in logical sector 1, the location, where the FAT typically started in FAT12 and FAT16 file systems (with only one reserved sectors), the presence of this signature ensures that early versions of DOS will never attempt to mount a FAT32 volume, as they expect the values in cluster 0 va 1-klaster to follow certain bit patterns, which are not met by this signature.

0x004480Reserved (byte values should be set to 0x00 during format, but not be relied upon and never changed later on)
0x1E44FS information sector signature (0x72 0x72 0x41 0x61 = "rrAa")
0x1E84Last known number of free data clusters on the volume, or 0xFFFFFFFF if unknown. Should be set to 0xFFFFFFFF during format and updated by the operating system later on. Must not be absolutely relied upon to be correct in all scenarios. Before using this value, the operating system should sanity check this value to be less than or equal to the volume's count of clusters.
0x1EC4Number of the most recently known to be allocated data cluster. Should be set to 0xFFFFFFFF during format and updated by the operating system later on. Bilan 0xFFFFFFFF the system should start at cluster 0x00000002. Must not be absolutely relied upon to be correct in all scenarios. Before using this value, the operating system should sanity check this value to be a valid cluster number on the volume.
0x1F012Reserved (byte values should be set to 0x00 during format, but not be relied upon and never changed later on)
0x1FC4FS information sector signature (0x00 0x00 0x55 0xAA)[10][nb 4] (All four bytes should match before the contents of this sector should be assumed to be in valid format.)

The sector's data may be outdated and not reflect the current media contents, because not all operating systems update or use this sector, and even if they do, the contents is not valid when the medium has been ejected without properly unmounting the volume or after a power-failure. Therefore, operating systems should first inspect a volume's optional shutdown status bitflags residing in the FAT entry of 1-klaster or the FAT32 EBPB at offset 0x041 and ignore the data stored in the FS information sector, if these bitflags indicate that the volume was not properly unmounted before. This does not cause any problems other than a possible speed penalty for the first free space query or data cluster allocation; qarang parchalanish.

If this sector is present on a FAT32 volume, the minimum allowed logical sector size is 512 bytes, whereas otherwise it would be 128 bytes. Some FAT32 implementations support a slight variation of Microsoft's specification by making the FS information sector optional by specifying a value of 0xFFFF[26] (yoki 0x0000) in the entry at offset 0x030.

Fayllarni ajratish jadvali

Cluster map

A volume's data area is divided into identically sized klasterlar—small blocks of contiguous space. Cluster sizes vary depending on the type of FAT file system being used and the size of the partition; typical cluster sizes range from 2 to 32 KiB.[iqtibos kerak ]

Each file may occupy one or more clusters depending on its size. Thus, a file is represented by a chain of clusters (referred to as a singly linked list ). However these clusters are not necessarily stored adjacent to one another on the disk's surface but are often instead parchalangan throughout the Data Region.

Each version of the FAT file system uses a different size for FAT entries. Smaller numbers result in a smaller FAT, but waste space in large partitions by needing to allocate in large clusters.

The FAT12 file system uses 12 bits per FAT entry, thus two entries span 3 bytes. It is consistently ozgina endian: if those three bytes are considered as one little-endian 24-bit number, the 12 least significant bits represent the first entry (e.g. cluster 0) and the 12 most significant bits the second (e.g. cluster 1). In other words, while the low eight bits of the first cluster in the row are stored in the first byte, the top four bits are stored in the low nibble of the second byte, whereas the low four bits of the subsequent cluster in the row are stored in the high nibble of the second byte and its higher eight bits in the third byte.

Example of FAT12 table start with several cluster chains
Ofset+0+1+2+3+4+5+6+7+8+9+ A+ B+ C+D+ E+ F
+0000F0FFFF034000056000078000FFAF0014
+0010C0000DE0000F000111F 0FF00F0FF1560
+0020011970FFF7AF01FF0F000070FF000000

  • FAT ID / endianness marker (in reserved cluster #0 ) bilan 0xF0 indicating a volume on a non-partitioned superfloppy drive (must be 0xF8 for partitioned disks)
  • End of chain indicator / maintenance flags (in reserved cluster #1 )
  • Second chain (7 clusters) for a non-fragmented file (here: #2, #3, #4, #5, #6, #7, #8)
  • Third chain (7 clusters) for a fragmented, possibly grown file (here: #9, #A, #14, #15, #16, #19, #1A)
  • Fourth chain (7 clusters) for a non-fragmented, possibly truncated file (here: #B, #C, #D, #E, #F, #10, #11)
  • Empty clusters (here: #12, #1B, #1C, #1E, #1F)
  • Fifth chain (1 cluster) for a sub-directory (here: #13)
  • Bad clusters (3 clusters) (here: #17, #18, #1D)

The FAT16 file system uses 16 bits per FAT entry, thus one entry spans two bytes in little-endian byte order:

Example of FAT16 table start with several cluster chains
Ofset+0+1+2+3+4+5+6+7+8+9+ A+ B+ C+D+ E+ F
+0000F0FFFFFF030004000500060007000800
+0010FFFF0A0014000C000D000E000F001000
+00201100FFFF0000FFFF150016001900F7FF
+0030F7FF1A00FFFF00000000F7FF00000000

The FAT32 file system uses 32 bits per FAT entry, thus one entry spans four bytes in little-endian byte order. The four top bits of each entry are reserved for other purposes; they are cleared during formatting and should not be changed otherwise. They must be masked off before interpreting the entry as 28-bit cluster address.

Example of FAT32 table start with several cluster chains
Ofset+0+1+2+3+4+5+6+7+8+9+ A+ B+ C+D+ E+ F
+0000F0FFFF0FFFFFFF0FFFFFFF0F04000000
+001005000000060000000700000008000000
+0020FFFFFF0F0A000000140000000C000000
+00300D0000000E0000000F00000010000000
+004011000000FFFFFF0F00000000FFFFFF0F
+0050150000001600000019000000F7FFFF0F
+0060F7FFFF0F1A000000FFFFFF0F00000000
+007000000000F7FFFF0F0000000000000000

  • First chain (1 cluster) for the root directory, pointed to by an entry in the FAT32 BPB (here: #2)
  • Second chain (6 clusters) for a non-fragmented file (here: #3, #4, #5, #6, #7, #8)

The Fayllarni ajratish jadvali (Yog ') is a contiguous number of sectors immediately following the area of reserved sectors. It represents a list of entries that map to each cluster on the volume. Each entry records one of five things:

  • the cluster number of the next cluster in a chain
  • maxsus end of cluster-chain (EOC) entry that indicates the end of a chain
  • a special entry to mark a bad cluster
  • a zero to note that the cluster is unused

For very early versions of DOS to recognize the file system, the system must have been booted from the volume or the volume's FAT must start with the volume's second sector (logical sector 1 with physical CHS address 0/0/2 or LBA address 1), that is, immediately following the boot sector. Operating systems assume this hard-wired location of the FAT in order to find the FAT ID in the FAT's cluster 0 entry on DOS 1.0-1.1 FAT diskettes, where no valid BPB is found.

Special entries

The first two entries in a FAT store special values:

The first entry (cluster 0 in the FAT) holds the FAT ID since MS-DOS 1.20 va PC DOS 1.1 (allowed values 0xF0-0xFF bilan 0xF1-0xF7 reserved) in bits 7-0, which is also copied into the BPB of the boot sector, offset 0x015 since DOS 2.0. The remaining 4 bits (if FAT12), 8 bits (if FAT16) or 20 bits (if FAT32) of this entry are always 1. These values were arranged so that the entry would also function as an "trap-all" end-of-chain marker for all data clusters holding a value of zero. Additionally, for FAT IDs other than 0xFF (va 0x00) it is possible to determine the correct nibble and byte order (to be) used by the file system driver, however, the FAT file system officially uses a ozgina endian representation only and there are no known implementations of variants using katta endian values instead. 86-DOS 0.42 qadar MS-DOS 1.14 FAT identifikatori o'rniga qattiq simli haydovchi profillarini ishlatgan, lekin bu baytni 32 baytli yoki 16 baytli katalog yozuvlari bilan formatlangan ommaviy axborot vositalarini ajratish uchun ishlatgan, chunki ular 86-DOS 0.42 dan oldin ishlatilgan.

Ikkinchi yozuv (FATdagi 1-klaster) formatlashtiruvchi tomonidan ishlatilgan klaster zanjiri markerini nominal ravishda saqlaydi, lekin odatda har doim 0xFFF / 0xFFFF / 0x0FFFFFFF, ya'ni FAT32 hajmidagi 31-28 bitlar bundan mustasno, bu bitlar odatda har doim o'rnatiladi. Biroq, ba'zi Microsoft operatsion tizimlari, agar bu ishlaydigan operatsion tizimning hajmi bo'lmasa (ya'ni ishlatilsa), bu bitlarni o'rnatadi 0xFFFFFFFF o'rniga 0x0FFFFFFF Bu yerga).[43] (Zanjir oxiridagi alternativ markerlar bilan birgalikda eng past bit 2-0, ruxsat etilgan eng past ko'rsatkich uchun nolga aylanishi mumkin 0xFF8 / 0xFFF8 / 0x? FFFFFF8; 3-bit, shuningdek, klasterlarni hisobga olgan holda saqlanishi kerak 0xFF0 / 0xFFF0 / 0x? FFFFFF0 va undan yuqori rasmiy ravishda saqlanadi. Agar ushbu bitlardan birortasi o'rnatilmagan bo'lsa, ba'zi operatsion tizimlar ba'zi hajmlarni o'rnatolmasligi mumkin, shuning uchun standart zanjir oxiridagi markerni o'zgartirmaslik kerak.) DOS 1 va 2 uchun yozuv kelajakda foydalanish uchun saqlangan holda hujjatlashtirildi. .

DOS 7.1-dan boshlab, ushbu klaster yozuvining ikkita eng muhim biti FAT16 va FAT32-dagi joriy hajm holatini ifodalovchi ikkita ixtiyoriy bitflagga ega bo'lishi mumkin, ammo FAT12 hajmida emas. Ushbu bitflaglar barcha operatsion tizimlar tomonidan qo'llab-quvvatlanmaydi, ammo ushbu funktsiyani qo'llab-quvvatlaydigan operatsion tizimlar ushbu bitlarni o'chirishga o'rnatadi va ishga tushirishda eng muhim bitni o'chiradi:
Agar bit 15 (FAT16 bo'yicha) yoki bit 27 (FAT32 bo'yicha) bo'lsa[44] ovoz balandligini o'rnatishda o'rnatilmagan, o'chirish yoki chiqarib yuborishdan oldin tovush to'g'ri o'rnatilmagan va shu sababli noma'lum va ehtimol "iflos" holatda bo'ladi.[31] FAT32 jildlarida FS ma'lumot sektori eskirgan ma'lumotlarga ega bo'lishi mumkin va shuning uchun ulardan foydalanmaslik kerak. Keyinchalik operatsion tizim odatda ishlaydi SCANDISK yoki CHKDSK keyingi startapda[nb 10][44] (lekin olinadigan muhitni kiritishda emas) ovozning yaxlitligini ta'minlash va ehtimol qayta tiklash uchun.
Agar bit 14 (FAT16 bo'yicha) yoki bit 26 (FAT32 bo'yicha) bo'lsa[44] o'chirildi, operatsion tizim ishga tushirilayotganda diskda I / U xatolariga duch keldi,[44] yomon tarmoqlar uchun mumkin bo'lgan ko'rsatkich. Ushbu kengaytmadan xabardor bo'lgan operatsion tizimlar buni sirtni skanerdan o'tkazish bo'yicha tavsiyalar sifatida talqin qiladilar (SCANDISK ) keyingi yuklashda.[31][44] (Shunga o'xshash bitflaglar to'plami FAT12 / FAT16 EBPB-da ofsetda mavjud 0x1A yoki ofsetda FAT32 EBPB 0x36. Fayl tizimining drayverlari ovoz balandligini o'rnatgandan so'ng 1-klaster yozuviga kirishlari mumkin bo'lsa-da, EBPB yozuviga hatto ovoz balandligi o'rnatilmagan bo'lsa ham bo'ladi va shu bilan disk blokirovkalash moslamalari drayverlari yoki qismlarga ajratish vositalari foydalanishni osonlashtiradi.)

Agar BPBdagi FAT soni 2 ga o'rnatilmagan bo'lsa, birinchi FAT (klaster 1) dagi ikkinchi klaster yozuvi ham holatini aks ettirishi mumkin TFAT TFATdan xabardor operatsion tizimlar uchun hajm. Agar ushbu FATdagi 1-klaster yozuvi 0 qiymatiga ega bo'lsa, bu ikkinchi FAT oxirgi ma'lum bo'lgan amaldagi holatni bildirishini va birinchi FATga ko'chirilishi kerakligini ko'rsatishi mumkin, birinchi FAT esa ikkinchi FAT bo'yicha barcha bitlar bo'lsa o'rnatilgan.

Ba'zi nostandart FAT12 / FAT16 dasturlari o'zgaruvchan kattalikdagi ildiz katalogining boshlang'ich klasterini saqlash uchun 1-klaster yozuvidan foydalanadi (odatda 2[37]). Bu qachon sodir bo'lishi mumkin root katalog yozuvlari soni BPB-da 0 qiymati mavjud va FAT32 EBPB topilmaydi (imzo yo'q) 0x29 yoki 0x28 ofsetda 0x042).[27] Ammo ushbu kengaytmani asosiy operatsion tizimlar qo'llab-quvvatlamaydi,[27] chunki bu 1-klaster yozuvining boshqa mumkin bo'lgan ishlatilishlariga ziddir. Agar ushbu kengaytmaga faqat FAT12 uchun ruxsat berilgan bo'lsa, aksariyat mojarolarni istisno qilish mumkin 0xFEF va kamroq bo'lgan FAT16 jildlari 0x3FEF klasterlar va 2 FAT.

Ushbu birinchi ikkita FAT yozuvlari maxsus qiymatlarni saqlaganligi sababli, 0 yoki 1 ma'lumotlar klasterlari mavjud emas. Birinchi ma'lumotlar klasteri (agar FAT12 / FAT16 bo'lsa, katalogdan keyin) 2-klaster,[37] ma'lumotlar maydonining boshlanishini belgilash.

Klaster qiymatlari

FAT kirish qiymatlari:

FAT12FAT16FAT32Tavsif
0x0000x00000x? 0000000Bepul klaster; shuningdek, DAT tomonidan FAT12 / FAT16 jildlarida ildiz katalogining pastki kataloglarining ".." yozuvlaridagi boshlang'ich klasteriga murojaat qilish uchun foydalaniladi.[11][13]

Aks holda, agar bu qiymat klaster zanjirlarida paydo bo'lsa (masalan, nol uzunlikdagi katalog yozuvlarida yoki o'chirilgan fayllarda), fayl tizimining amallari buni zanjirning oxiriga tegishli marker sifatida ko'rib chiqishi kerak.[14]

0x0010x00010x? 0000001Ichki maqsadlar uchun ajratilgan; MS-DOS / PC DOS ushbu klaster qiymatidan fayllarni ajratish paytida klaster zanjirlarini yaratishda vaqtinchalik erkin bo'lmagan klaster ko'rsatkichi sifatida foydalanadi (faqat diskda ushbu jarayonning o'rtasida ishlamay qolganda yoki elektr quvvati uzilib qolganida ko'rinadi).[11][13]

Agar bu qiymat diskdagi klaster zanjirlarida yuzaga kelsa, fayl tizimining amallari buni zanjirning oxiridagi marker kabi ko'rib chiqishi kerak.

0x002 - 0xFEF0x0002 - 0xFFEF (0x0002 - 0x7FFF)0x? 0000002 - 0x? FFFFFEFMa'lumot klasterlari sifatida ishlatiladi; qiymati keyingi klasterga ishora qiladi. MS-DOS / PC DOS gacha bo'lgan qiymatlarni qabul qiladi 0xFEF / 0xFFEF / 0x0FFFFFEF (ba'zida ko'proq; pastga qarang), Atari GEMDOS uchun esa faqat qadar qiymatlar mavjud 0x7FFF FAT16 jildlarida ruxsat berilgan.
0xFF0[nb 11] - 0xFF5 (0xFF1 - 0xFF5)0xFFF0 - 0xFFF50x? FFFFFF0 - 0x? FFFFFF5Ba'zi kontekstlarda saqlangan,[45] yoki shuningdek ishlatilgan[5][6][7][10][46] ba'zi nostandart tizimlarda ma'lumotlar klasterlari sifatida. Ushbu qiymatlardan ma'lumotlar klasterlari sifatida foydalanadigan hajmlarning kattaligidan qochish kerak, ammo agar bu qiymatlar mavjud hajmlarda bo'lsa, fayl tizimi ularni klaster zanjiridagi oddiy ma'lumotlar klasterlari sifatida ko'rib chiqishi kerak (qo'shimcha ravishda sog'lomlik tekshiruvlarini qo'llash kerak), xuddi MS-ga o'xshash DOS, PC DOS va DR-DOS ishlaydi,[13] va aks holda ularni fayllar uchun ajratishdan qochish kerak.

MS-DOS / PC DOS 3.3 va undan yuqori versiyalari qiymati bilan muomala qiladi 0xFF0[nb 11][13] FAT12-da (lekin FAT16 yoki FAT32-da emas) shunga o'xshash qo'shimcha zanjir uchi belgisi sifatida 0xFF8-0xFFF.[13] MS-DOS / PC DOS bilan moslik uchun fayl tizimlari ma'lumotlar klasteridan foydalanishdan saqlanishlari kerak 0xFF0 FAT12 hajmdagi klaster zanjirlarida (ya'ni, unga o'xshash ajratilgan klaster sifatida muomala qiling) 0xFF7). (NB. Klaster sonining past baytining FAT identifikatori va media-descriptor qiymatlari bilan mosligi sababdir, nima uchun bu klaster qiymatlari saqlanib qolgan.)

0xFF60xFFF60x? FFFFFF6Zaxira qilingan; ishlatmang.[5][6][7][10][28][46] (NB. Standart formatdagi to'ldiruvchi qiymatiga mos keladi 0xF6 Ushbu qiymatdan ma'lumotlar klasteri sifatida foydalanadigan jildlar yaratilmasligi kerak, ammo agar bu qiymat mavjud hajmlarda bo'lsa, fayl tizimi uni klaster zanjirlarida oddiy ma'lumotlar klasteri sifatida ko'rib chiqishi kerak (qo'shimcha ravishda aql-idrok tekshiruvlarini qo'llash ideal). va aks holda uni fayllar uchun ajratishdan qochish kerak.[14]
0xFF70xFFF70x? FFFFFF7Klaster yoki ajratilgan klasterdagi yomon sektor (DOS 2.0 dan beri).

FAT12 va FAT16 fayl tizimlari uchun maksimal miqdordagi klasterlar uchun ajratilgan qiymatlar ma'lumotlar klasterining mumkin bo'lgan eng yuqori qiymatlari (0xFF5 va 0xFFF5,[13] mos ravishda) har doim bu qiymatdan kichikroq bo'ladi.[13] Shuning uchun, bu qiymat odatda klaster zanjirlarida bo'lishi mumkin emas, lekin agar shunday bo'lsa, u oddiy ma'lumotlar klasteri sifatida qaralishi mumkin, chunki 0xFF7 DOS 2.0 bilan yomon klaster markerini yoki DOS 3.0 bilan FAT16 ni joriy etishdan oldin FAT12 hajmdagi nostandart ma'lumotlar klasteri bo'lishi mumkin edi,[14] va 0xFFF7 DOS 7.10 bilan FAT32 joriy etilishidan oldin FAT16 jildlarida nostandart ma'lumotlar klasteri bo'lishi mumkin edi. Nazariy jihatdan, 0x0FFFFFF7 FAT32 jildidagi joriy klaster zanjirining bir qismi bo'lishi mumkin, ammo diskda yordam dasturlari ushbu holat yuzaga kelishi mumkin bo'lgan FAT32 jildlarini yaratishdan saqlanishlari kerak. Fayl tizimi ushbu klasterni fayllar uchun ajratishdan qochishi kerak.[14]

Disk yordam dasturlari ushbu qiymatni FAT tarkibida ushlab turadigan "yo'qolgan klasterlarni" tiklashga urinmasligi kerak, lekin ularni yomon klasterlar deb hisoblashi kerak.

0xFF8 - 0xFFF (va ixtiyoriy ravishda 0xFF0;[nb 11] eslatmani ko'ring)0xFFF8 - 0xFFFF0x? FFFFFF8 - 0x? FFFFFFFFayldagi so'nggi klaster (EOC). Fayl tizimining tatbiq etilishi ushbu qiymatlarning barchasini bir vaqtning o'zida zanjirning oxiri belgisi sifatida ko'rib chiqishi kerak.[14] Fayl tizimining aksariyat dasturlari (shu jumladan 86-DOS, MS-DOS, PC DOS va DR-DOS) foydalanadi 0xFFF[14] / 0xFFFF[14] / 0x0FFFFFFF fayllarni ajratishda fayl oxiridagi marker sifatida, ammo Linuxning 2.5.40 gacha bo'lgan versiyalari ishlatilgan 0xFF8 / 0xFFF8 / 0x0FFFFFF8.[47] Ning versiyalari mkdosfs (dosfstools 3.0.26 gacha) foydalanishda davom eting 0x0FFFFFF8 FAT32 jildidagi ildiz katalogi uchun, ba'zi bir disklarni ta'mirlash va birlashtirish vositalari to'plamdagi boshqa qiymatlardan foydalanadi (masalan, SCANDISK 0xFF8 / 0xFFF8 / 0x0FFFFFF8 o'rniga). Asl nusxada 8-bitli FAT Microsoft-da amalga oshirish Mustaqil disk BASIC turli xil markerlar (0xC0..0xCD) fayl egallagan so'nggi klasterda ishlatilgan tarmoqlar sonini (0 dan 13 gacha) ko'rsatish uchun foydalanilgan, DOS ostida turli xil markerlar turli xil ommaviy axborot vositalarini ko'rsatish uchun qayta joylashtirilgan,[14] da ko'rsatilgan joriy marker bilan 1-klaster kirish, shu bilan birga, ushbu kontseptsiya amalda keng qo'llanilmaganga o'xshaydi - va agar ba'zi bir senariylarda hajmlar ba'zi operatsion tizimlar tomonidan tan olinmasligi mumkin bo'lsa, agar 1-klasterda saqlangan qiymatning ba'zi past tartibli bitlari bo'lsa. o'rnatilmagan. Bundan tashqari, ba'zi bir noto'g'ri fayl tizimining dasturlari faqat qabul qiladi 0xFFF / 0xFFFF / 0x? FFFFFFF haqiqiy zanjir oxiridagi marker sifatida.

Fayl tizimining dasturlari klaster zanjiridagi klaster qiymatlarini hajmning haqiqiy kattaligi bilan hisoblangan maksimal ruxsat berilgan klaster qiymatiga qarab tekshirishi va yuqori qiymatlarga ular zanjir oxiridagi belgilar kabi munosabatda bo'lishi kerak. (Klaster raqamining past bayti bilan kontseptual ravishda mos keladi FAT identifikatori va media descriptor qiymatlar;[14] MS-DOS / PC DOS-dan maxsus foydalanish uchun yuqoridagi eslatmani ko'ring 0xFF0[nb 11] FAT12 jildlarida.[13])

FAT32 nomiga qaramay, 32 ta bitdan atigi 28 bitini ishlatadi. Yuqori 4 bit odatda nolga teng, ammo zaxiralangan bo'lib, ularga tegmaslik kerak. Standart mos keladigan FAT32 fayl tizimi drayveri yoki texnik vositasi yuqori 4 bit nolga ishonmasligi kerak va klaster raqamini baholashdan oldin ularni olib tashlashi kerak, chunki bu bitlar boshqa maqsadlarda ishlatilishi mumkin bo'lgan kelajakdagi kengayishlarga qarshi kurashish uchun. Ular yangi klasterlarni ajratishda fayl tizimi drayveri tomonidan o'chirilmasligi kerak, lekin ularni qayta formatlash paytida tozalash kerak.

Hajmi chegaralari

FAT fayl tizimlarining FAT12, FAT16, FAT16B va FAT32 variantlari klasterlar soni va har bir klasterdagi sektorlar soniga qarab aniq chegaralarga ega (1, 2, 4, ..., 128). Odatda har bir sektor uchun 512 bayt qiymat uchun:

FAT12 talablari: har 1024 klaster uchun FAT har bir nusxasida 3 ta sektor
FAT16 talablari: har 256 klaster uchun FAT har bir nusxasida 1 ta sektor
FAT32 talablari: har 128 klaster uchun FAT har bir nusxasida 1 ta sektor

FAT12 diapazoni: 1 dan 4.084 gacha klaster: FAT nusxasi uchun 1 dan 12 gacha sektor
FAT16 diapazoni: 4,085 dan 65,524 gacha klaster: FAT nusxasi uchun 16 dan 256 gacha sektor
FAT32 diapazoni: 65,525 dan 268,435,444 ta klaster: FAT nusxasi uchun 512 dan 2 097 152 ta sektor.

FAT12 minimal: har bir klaster uchun 1 sektor × 1 klaster = 512 bayt (0,5 KB)
FAT16 minimal: har bir klaster uchun 1 sektor × 4085 klaster = 2.091.520 bayt (2.042.5 KB)
FAT32 minimal: har bir klaster uchun 1 sektor × 65,525 klaster = 33 548 800 bayt (32 762,5 KB)

Maksimal FAT12: har bir klaster uchun 64 sektor × 4,084 klaster = 133,824,512 bayt (≈ 127 MB)
[Maksimal FAT12: har bir klaster uchun 128 sektor × 4.084 klaster = 267.694.024 bayt (-255 MB)]

Maksimal FAT16: har bir klaster uchun 64 sektor × 65,524 klaster = 2,147,090,432 bayt (-2,047 MB)
[Maksimal FAT16: har bir klaster uchun 128 sektor × 65,524 klaster = 4,294,180,864 bayt (-4,095 MB)]

Maksimal FAT32: har bir klaster uchun 8 ta sektor × 268.435.444 klaster = 1.099.511.578.624 bayt (-1.024 Gb)
Maksimal FAT32: har bir klaster uchun 16 sektor × 268,173,557 klaster = 2,196,877,778,944 bayt (-2,046 GB)
[Maksimal FAT32: har bir klaster uchun 32 ta sektor × 134,152,181 klaster = 2,197,949,333,504 bayt (-2,047 GB)]
[Maksimal FAT32: har bir klaster uchun 64 sektor × 67,092,469 klaster = 2,198,486,024,192 bayt (-2,047 GB)]
[Maksimal FAT32: har bir klaster uchun 128 sektor × 33,550,325 klaster = 2,198,754,099,200 bayt (-2,047 GB)]

Afsona: 268435444 + 3 bu 0x0FFFFFF7, chunki FAT32 0-versiyasi 32-bitli klaster raqamlarida faqat 28 bitdan foydalanadi, klaster raqamlari 0x0FFFFFF7 qadar 0x0FFFFFFF noto'g'ri klasterlarni yoki faylning oxirini belgilash, 0-sonli klaster erkin klasterni belgilaydi va 1-klaster ishlatilmaydi.[37] Xuddi shunday 65524 + 3 ham 0xFFF7 FAT16 va 4084 + 3 uchun 0xFF7 FAT12 uchun. Klasterdagi tarmoqlar soni bitta baytga mos keladigan 2 ta quvvat, eng kichik qiymati 1 (0x01), eng katta qiymati 128 (0x80). Kvadrat qavslardagi satrlar noodatiy 128 hajmini bildiradi va FAT32 uchun 32 yoki 64 klaster kattaligidan kattaroq.[48]

Har bir FAT32 usuli 32 bitni (4 bayt) egallaganligi sababli, maksimal klasterlar soni (268435444) 512 baytlik sektor uchun 2097152 FAT sektorini talab qiladi. 2097152 bu 0x200000va ushbu qiymatni saqlash uchun ikki baytdan ko'proq kerak bo'ladi. Shuning uchun FAT32 FAT32 yuklash sektorida FAT16B variantida kiritilgan sektorlarning umumiy soni uchun 32 bitlik qiymatdan so'ng darhol yangi 32-bitli qiymatni taqdim etdi.

DOS 4.0 bilan kiritilgan yuklash yozuvlari kengaytmalari sehrli 40 bilan boshlanadi (0x28) yoki 41 (0x29). Odatda FAT drayverlari faqat FAT12, FAT16 va FAT32 ni ajratish uchun klasterlar soniga qarashadi: yuklash yozuvidagi FAT variantini aniqlaydigan odam o'qiydigan satrlarga e'tibor berilmaydi, chunki ular faqat DOS 4.0 yoki undan keyingi versiyalari bilan formatlangan ommaviy axborot vositalari uchun mavjud.

Klaster bo'yicha katalog yozuvlari sonini aniqlash oddiy. Har bir yozuv 32 baytni egallaydi; bu 512 bayt hajmdagi sektor uchun 16 ta yozuvni keltirib chiqaradi. DOS 5 RMDIR/RD buyruq bosh harfni olib tashlaydi "."(ushbu katalog) va".."(ota-katalog) to'g'ridan-to'g'ri pastki kataloglardagi yozuvlar, shuning uchun RAM diskida 32-o'lchov FAT12 uchun mumkin, lekin har bir klaster uchun 2 yoki undan ortiq sektor kerak. DOS 4 kengaytmasi bo'lmagan FAT12 yuklash sektori birinchi keraksiz FAT16B 32-dan oldin 29 baytni talab qiladi. - yashirin sektorlarning bitli soni, bu (ishlatilmaydigan RAM diskida) yuklash kodi va sehr uchun uchta bayt qoldiradi 0x55 0xAA barcha yuklash sektorlari oxirida. Yoqilgan Windows NT eng kichik qo'llab-quvvatlanadigan sektor hajmi 128 ga teng.

Yoqilgan Windows NT operatsion tizimlar FORMAT buyruq variantlari / A: 128K va / A: 256K maksimal klaster o'lchamiga mos keladi 0x80 (128) mos ravishda sektor hajmi 1024 va 2048 bilan. 512 umumiy sektori uchun / A: 64K har bir klaster uchun 128 sektordan hosil beradi.

Har bir ECMA-107 ning ikkala nashri[5] va ISO / IEC 9293[6][7] belgilang a Maksimal klaster raqami MAX formula bo'yicha aniqlanadi MAX = 1 + trunc ((TS-SSA)/SC)va zaxira klaster raqamlari MAX + 1 4086 gacha (0xFF6, FAT12) va keyinchalik 65526 ​​(0xFFF6, FAT16) kelajakda standartlashtirish uchun.

Microsoft-ning EFI FAT32 spetsifikatsiyasi[10] 4085 klasterdan kam bo'lgan har qanday FAT fayl tizimi FAT12 ekanligini, aks holda 65525 klasterdan kam bo'lgan har qanday FAT fayl tizimi FAT16 ekanligini, aks holda u FAT32 ekanligini bildiradi. FAT boshidagi 0-klaster uchun yozuv BPB-da topilgan media-descriptor bayt bilan bir xil bo'lishi kerak, ammo 1-klaster uchun yozuv formatlashtiruvchi tomonidan klaster zanjirlari uchun ishlatiladigan zanjir oxiridagi qiymatni aks ettiradi (0xFFF, 0xFFFF yoki 0x0FFFFFFF). 0 va 1 klaster raqamlari uchun yozuvlar hatto FAT12 uchun ham bayt chegarasida tugaydi, masalan. 0xF9FFFF media descriptor uchun 0xF9.

Birinchi ma'lumotlar klasteri 2,[37] va natijada oxirgi klaster MAX raqamni oladi MAX + 1. Buning natijasida ma'lumotlar klasterining raqamlari 2 ... 4085 (0xFF5) FAT12 uchun, 2 ... 65525 (0xFFF5) FAT16 uchun va 2 ... 268435445 (0x0FFFFFF5) FAT32 uchun.

Shuning uchun kelajakda standartlashtirish uchun saqlangan yagona mavjud qiymatlar 0xFF6 (FAT12) va 0xFFF6 (FAT16). Quyida ta'kidlanganidek, "4085 dan kam" Linuxni amalga oshirish uchun ham ishlatiladi,[46] yoki kabi Microsoft FAT spetsifikatsiyasi shunday deydi:[10]

... deganda <= degani emas. Raqamlar to'g'ri ekanligini ham unutmang. FAT12 uchun birinchi raqam - 4085; FAT16 uchun ikkinchi raqam - 65525. Ushbu raqamlar va "<" belgilari noto'g'ri emas.

Parchalanish

FAT fayl tizimida yangi yozilgan fayllarni bo'limga tarqalishiga yo'l qo'ymaydigan o'rnatilgan mexanizmlar mavjud emas.[49] Fayllar tez-tez yaratiladigan va o'chiriladigan yoki ularning uzunligi tez-tez o'zgarib turadigan jildlarda vaqt o'tishi bilan vosita tobora ko'proq parchalanib boradi.

FAT fayl tizimining dizayni disk tuzilmalarida hech qanday tashkiliy xarajatlarni keltirib chiqarmaydi yoki bo'sh joy hajmini ko'payishi bilan kamaytiradi parchalanish bilan sodir bo'lganidek tashqi parchalanish, qismli fayllarni o'qish va yozish uchun vaqt ko'payadi, chunki operatsion tizim FAT-dagi klaster zanjirlarini kuzatib borishi kerak (qismlar birinchi navbatda xotiraga, ayniqsa, katta hajmda yuklanishi kerak) va jismonan tarqalgan ma'lumotlarni o'qish kerak past darajadagi blokirovka qiluvchi qurilma drayverini ko'p tarmoqli diskni kiritish-chiqarish yoki katta DMA uzatishni boshlash imkoniyatini kamaytiradigan butun vosita, shu bilan I / U protokoli yukini, shuningdek qo'lning harakatlanishi va boshning disk drayveri ichida joylashish vaqtini samarali ravishda oshiradi. Bundan tashqari, fayl operatsiyalari sekinlashib boradi, chunki parchalanish kuchayib boradi, chunki operatsion tizim uchun fayllarni yoki bepul klasterlarni topish ko'proq vaqt talab etadi.

Boshqa fayl tizimlari, masalan, HPFS yoki exFAT, foydalaning bo'sh joyning bitmapalari bu ishlatilgan va mavjud bo'lgan klasterlarni bildiradi, keyin ularni tezda qo'shni hududlarni topish uchun tezda qidirib topish mumkin. Boshqa echim - bu barcha bepul klasterlarni bir yoki bir nechta ro'yxatlarga bog'lashdir (xuddi shunday bajarilganidek) Unix fayl tizimlari). Buning o'rniga, bepul klasterlarni topish uchun FATni massiv sifatida skanerlash kerak, bu esa katta disklar bilan ishlash jarimalariga olib kelishi mumkin.

Aslida katta kataloglardan fayllarni qidirish yoki FAT hajmidagi bo'sh disk maydonini hisoblash eng ko'p resurs talab qiladigan operatsiyalardan biri hisoblanadi, chunki bu katalog jadvallarini yoki hatto butun FATni chiziqli o'qishni talab qiladi. FAT12 va FAT16 jildlarida klasterlarning umumiy miqdori va ularning yozuvlari hajmi hali ham kichik bo'lganligi sababli, ko'pincha FAT12 va FAT16 jildlarida bunga toqat qilish mumkin edi, chunki yanada murakkab disk tuzilmalarini joriy etish kerak bo'ladi. shuningdek, FAT dastlab ishlab chiqilgan va optimallashtirilgan 128 KB yoki undan kam bo'lgan (masalan, DOS kabi) minimal xotira talablari bilan real rejimdagi operatsion tizimlarning murakkabligi va xotira hajmini oshirdi.

FAT32-ning kiritilishi bilan uzoq vaqt qidirish va skanerlash vaqtlari, ayniqsa juda katta hajmlarda aniqroq bo'ldi. Microsoft tomonidan tavsiya etilgan mumkin bo'lgan asos Raymond Chen Windows-da yaratilgan FAT32 bo'limlarining maksimal hajmini cheklash uchun "DIR"har doim bo'sh satrni oxirgi qator sifatida ko'rsatadigan operatsiya.[50] Klasterlar soni oshgani sayin ushbu qatorni namoyish qilish uzoqroq va uzoq davom etdi. Shuning uchun FAT32 maxsus fayl tizimining axborot sektorini joriy qildi, u erda ilgari hisoblangan bo'sh joy quvvat tsikllari davomida saqlanib qoladi, shu sababli bo'sh joy hisoblagichini faqat olinadigan FAT32 formatlangan muhiti uni o'chirmasdan chiqarib yuborilganda yoki tizim o'chirilgandan keyingina qayta hisoblash kerak bo'ladi. operatsion tizim to'g'ri o'chirilmasdan o'chirilgan, muammo asosan oldindanATX - oddiy shaxsiy kompyuterlar, oddiy DOS tizimlarida va ba'zi bir batareyalar bilan ishlaydigan iste'mol tovarlari.

Kattaroq FAT bo'limlari tomonidan majbur qilingan ulkan klaster o'lchamlari (16 KB, 32 KB, 64 KB) bilan, ichki parchalanish tufayli diskdagi bo'shliqlar tufayli disk maydoni bo'shatiladi klaster o'sishi (chunki fayllar kamdan-kam klaster kattaligining aniq ko'paytmasi), ayniqsa juda ko'p kichik fayllar mavjud bo'lganda ham muammo tug'diradi.

FAT fayl tizimlari drayverlarini, blokirovka qiluvchi qurilmalar drayverlarini va diskdagi vositalarni amalga oshirishda turli xil optimallashtirish va o'zgartirishlar ishlab chiqilgan bo'lib, ular disk tizimidagi tuzilmalarning joylashishini o'zgartirmasdan fayl tizimiga xos dizayndagi ishlashdagi to'siqlarning ko'pini engib o'tish uchun mo'ljallangan.[51][52] Ularni on-layn va off-layn usullarga ajratish va birinchi navbatda fayl tizimida parchalanishga yo'l qo'ymaslik, mavjud parchalanish bilan yaxshi kurashish uchun usullarni qo'llash va diskdagi tuzilmalarni qayta tartiblash va optimallashtirish orqali ishlash mumkin. Optimallashtirish mavjud bo'lganda, FAT hajmidagi ishlash ko'pincha amaliy stsenariylarda yanada murakkab fayl tizimlariga erishishi mumkin, shu bilan birga juda kichik yoki eski tizimlarda ham kirish imkoniyati ustunligini saqlab qoladi.

DOS 3.0 va undan yuqori versiyalari o'chirilgan fayllarning disk maydonini yangi ajratmalar uchun zudlik bilan qayta ishlatmaydi, aksincha ilgari o'chirilgan fayllarning disk maydonidan foydalanishni boshlashdan oldin avval foydalanilmagan joyni qidiradi. Bu faqat o'chirilgan fayllarning yaxlitligini imkon qadar uzoq vaqt saqlab qolishga yordam bermaydi, shuningdek fayllarni ajratilishini tezlashtiradi va parchalanishga yo'l qo'ymaydi, chunki oldin ajratilgan disk maydoni doimo birlashtirilmaydi va DOS buni har birida oxirgi ajratilgan klasterga ko'rsatgichni saqlash orqali amalga oshiradi. xotira hajmini o'rnatdi va FAT boshida emas, xuddi shu joydan yuqoriga qarab bo'sh joy qidirishni boshlaydi, chunki u hali ham DOS 2.x tomonidan bajarilgan.[20] Agar FATning oxiri tugagan bo'lsa, u bo'sh joy topilmaguncha yoki bo'sh joy topilmasdan yana asl holatiga kelguniga qadar FAT boshida qidirishni davom ettiradi.[20] Ushbu ko'rsatgichlar ishga tushirilgandan so'ng FATlarning boshlanishiga ishora qilish uchun boshlangan,[20] ammo FAT32 jildlarida DOS 7.1 va undan yuqori versiyalari oxirgi pozitsiyani FS ma'lumot sektori.Bu mexanizm mag'lubiyatga uchradi, ammo agar dastur tez-tez vaqtinchalik fayllarni o'chirib tashlasa va operatsion tizim yaroqsiz ma'lumotlarning yaxlitligini saqlab qolishga harakat qilsa, natijada ko'proq parchalanishga olib keladi.[20] Ba'zi DOS versiyalarida ushbu muammoni oldini olish uchun vaqtinchalik fayllarni yaratish uchun maxsus API funktsiyasidan foydalanish mumkin.

Bundan tashqari, o'chirilgan fayllarning katalog yozuvlari belgilanadi 0xE5 DOS 3.0 dan beri.[11] DOS 5.0 va undan yuqori versiyalari ushbu yozuvlarni faqat avval foydalanilmagan katalog yozuvlari jadvalda ishlatilganda va tizim aks holda jadvalning o'zi kengaytirilishi kerak bo'lganda qayta foydalanishni boshlaydi.[13]

DOS 3.3 dan beri operatsion tizim fayl operatsiyalari ish faoliyatini yaxshilash vositalarini taqdim etadi FASTOPEN yaqinda ochilgan fayllar yoki kataloglarning (MS-DOS / PC DOS) yoki xash jadvallarning (DR-DOS) turli shakllaridagi holatini kuzatib borish, bu fayllarni qidirish va ochilish vaqtlarini sezilarli darajada kamaytirishi mumkin. DOS 5.0-dan oldin bunday mexanizmlardan disklarni birlashtirish dasturi bilan birgalikda fayl tizimini yoki disk drayverlarini chetlab o'tishda alohida e'tibor talab etiladi.

Windows NT oldindan katta hajmdagi qo'shni maydonlarni tanlab, FAT-dagi fayllarga disk maydonini ajratadi, ammo ishlamay qolganda, qo'shilgan fayllar avval yozilganidan kattaroq bo'lib ko'rinadi, oxirida juda ko'p tasodifiy ma'lumotlar mavjud.

Boshqa yuqori darajadagi mexanizmlar kattaroq qismlarni yoki kerak bo'lganda ishga tushirilganda yoki talabga binoan to'liq FAT-ni o'qiydi va qayta ishlaydi va diskdagi tuzilmalardan farqli o'laroq hajmning fayl tuzilmalarining xotiradagi daraxt ko'rinishini dinamik ravishda yaratishi mumkin.[51][52] Bu ko'plab bepul klasterlardan iborat hajmlarda FAT-ning tasviridan ham kamroq xotirani egallashi mumkin. Xususan, juda parchalangan yoki to'ldirilgan hajmlarda, FAT tasviri xotirada saqlansa ham, haqiqiy FAT bo'yicha chiziqli tekshiruvlarga qaraganda ancha tezlashadi. Shuningdek, sektor yoki trek darajasida emas, balki mantiqan yuqori darajadagi fayllar va klaster zanjirlarida ish olib borish, birinchi navbatda fayllarni bir qism bo'linishidan saqlanish yoki mahalliy fayllarni birlashtirish va katalog yozuvlarini qayta tartiblash asosida amalga oshiriladi. ularning nomlari yoki fonda kirish naqshlari.

Bilan bog'liq bo'lgan ba'zi muammolar parchalanish FAT fayl tizimlari, shuningdek, asosiy blokning ishlash cheklovlaridan kelib chiqadi qurilma drayverlari aniqroq ko'rinadigan bo'lib, sektorni buferlash va trekni blokirovka qilish / blokirovka qilish uchun kamroq xotira mavjud:

Bitta vazifali DOS-da ko'p tarmoqli o'qish va blokirovka qilish / blokirovka qilishni kuzatish uchun qoidalar mavjud bo'lsa, operatsion tizim va shaxsiy kompyuterning an'anaviy arxitekturasi (bir vaqtning o'zida faqat bitta ajoyib kirish / chiqish so'rovi va DMA o'tkazmalari yo'q ) dastlab dastur avvalgi qismlarni qayta ishlaganda keyingi ma'lumotlarni asenkron ravishda oldindan yuklash orqali parchalanishni engillashtiradigan mexanizmlarni o'z ichiga olmaydi. Bunday xususiyatlar keyinchalik paydo bo'ldi. Keyinchalik DOS versiyalari, shuningdek, kelajakdagi sektorni buferlashni qo'llab-quvvatladi va jismoniy yoki mantiqiy sektor darajasida ishlaydigan dinamik ravishda yuklanadigan disklarni keshlash dasturlari bilan ta'minlandi. EMS yoki XMS xotira va ba'zan moslashuvchan keshlash strategiyasini ta'minlaydi yoki hatto ishga tushiriladi himoyalangan rejim orqali DPMS yoki Yopish odatdagi DOS API-lari orqali emas, balki keshlangan ma'lumotlarga chiziqli xotirada to'g'ridan-to'g'ri kirish huquqini olish orqali ishlashni oshirish.

Yozish orqasida keshlash odatda dasturiy ta'minot va tizim o'rtasida apparat muhofazasi yo'qligi sababli osonlikcha ishdan chiqqanda yoki ishlamay qolganda ma'lumotlarni yo'qotish muammosini hisobga olgan holda Microsoft dasturiy ta'minotida (agar mavjud bo'lsa) sukut bo'yicha yoqilmadi.

Katalog jadvali

A katalog jadvali a ni ifodalovchi maxsus fayl turi katalog (papka sifatida ham tanilgan). Beri 86-DOS 0.42,[53] uning ichida saqlangan har bir fayl yoki (MS-DOS 1.40 va PC DOS 2.0 dan beri) pastki katalog jadvaldagi 32 baytli yozuv bilan ifodalanadi. Har bir yozuvda ism, kengaytma, atributlar (Arxiv, katalog, yashirin, faqat o'qish, tizim va hajm), fayl / katalog ma'lumotlarining birinchi klasterining manzili, fayl / katalog hajmi va sanasi[53] va (PC DOS 1.1 dan beri), shuningdek oxirgi modifikatsiya vaqti. 86-DOS-ning oldingi versiyalarida faqat 16 baytli katalog yozuvlari ishlatilgan bo'lib, 16 MB dan katta hajmdagi fayllarni va oxirgi o'zgartirish vaqtini qo'llab-quvvatlamagan.[53]

Maxsus joylarni egallagan FAT12 va FAT16 fayl tizimlaridagi ildiz kataloglari jadvalidan tashqari Ildiz katalogi mintaqasi joylashuvi, barcha katalog jadvallari ma'lumotlar mintaqasida saqlanadi. Ma'lumotlar mintaqasida saqlanadigan katalogdagi yozuvlarning haqiqiy soni FAT tarkibidagi zanjirga yana bir klaster qo'shilishi bilan o'sishi mumkin.

FAT fayl tizimining o'zi pastki kataloglarni ajratish uchun bepul klasterlar mavjud bo'lganda subdirektor daraxtining chuqurligiga hech qanday cheklovlar qo'ymaydi, ammo MS-DOS / PC DOS-ning ichki joriy katalog tuzilishi (CDS) katalogning 66 belgigacha bo'lgan mutlaq yo'li (disk harfini o'z ichiga oladi, lekin NUL bayt ajratuvchisidan tashqari),[5][6][7] shu bilan ilgari sodir bo'ladigan barcha kataloglarning maksimal qo'llab-quvvatlanadigan chuqurligini 32 ga qadar cheklash. Bir vaqtning o'zida DOS, Multiuser DOS va DR DOS 3.31 dan 6.0 gacha (1992-11 yilgi yangilanishlarni o'z ichiga olgan holda) ichki ishlaydigan kataloglarga mutlaq yo'llarni saqlamaydi va shuning uchun bu cheklovni ko'rsatmaydi.[54] Xuddi shu narsa Atari GEMDOS-ga ham tegishli, ammo Atari Desktop 8 tagacha katalog darajalarini qo'llab-quvvatlamaydi. Ushbu kengaytmadan xabardor bo'lgan aksariyat dasturlar kamida 127 baytgacha bo'lgan yo'llarni qo'llab-quvvatlaydi. FlexOS, 4680 OS va 4690 OS 127 baytgacha bo'lgan uzunlikni qo'llab-quvvatlaydi, bu esa 60 darajaga qadar chuqurlikka imkon beradi.[55] PalmDOS, DR DOS 6.0 (BDOS 7.1 dan beri) va undan yuqori versiyalar, Novell DOS va OpenDOS MS-DOS mos CD-larga ega va shuning uchun MS-DOS / PC DOS bilan bir xil uzunlik chegaralariga ega.

Har bir yozuvdan oldin qo'llab-quvvatlash uchun "soxta yozuvlar" bo'lishi mumkin VFAT uzun fayl nomi (LFN); quyida ko'rib chiqing.

DOS qisqa fayl nomlari uchun huquqiy belgilar quyidagilarni o'z ichiga oladi:

  • Katta harflar AZ
  • Raqamlar 09
  • Bo'sh joy (garchi asosiy nom yoki kengaytmadagi bo'sh joylar fayl nomining bir qismi emas, balki to'ldirilgan deb hisoblansa ham, bo'sh joy bo'lgan fayl nomlari Windows 95 dan oldin DOS buyruq satrida osongina ishlatilishi mumkin emas, chunki mos kelmasligi qochish tizimi ). Boshqa istisno - ichki buyruqlar MKDIR/Tibbiyot fanlari doktori va RMDIR/RD bitta argumentlarni qabul qiladigan va shuning uchun bo'shliqlarni kiritishga imkon beradigan DR-DOS ostida.
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • Belgilar 128–228
  • Belgilar 230–255

Bu quyidagilarni istisno qiladi ASCII belgilar:

  • " * / : < > ? \ |
    Windows / MS-DOS-da qobiq yo'q qochish xarakteri
  • + , . ; = [ ]
    Faqat uzun fayl nomlarida ruxsat berilgan
  • Kichik harflar az
    Sifatida saqlanadi AZ; uzoq fayl nomlarida ruxsat berilgan
  • 0–31 belgilarni boshqarish
  • Belgilar 127 (DEL)

Belgilar 229 (0xE5) erkin kirish belgisi sifatida ishlatilganligi sababli DOS 1 va 2-dagi fayl nomidagi birinchi belgi sifatida foydalanishga ruxsat berilmagan. Ushbu cheklovni DOS 3.0 va undan yuqori versiyalari bilan chetlab o'tish uchun maxsus ish qo'shildi.

Atari-ning GEMDOS-da quyidagi qo'shimcha belgilarga ruxsat beriladi, ammo MS-DOS / PC DOS-lar bilan mos kelish uchun ulardan qochish kerak:

  • " + , ; < = > [ ] |

Vergul (;) fayl nomlarida DR DOS 3.31 va undan yuqori versiyalari, PalmDOS, Novell DOS, OpenDOS, Concorrent DOS, Multiuser DOS, System Manager va REAL / 32 dan saqlanish kerak, chunki fayl va katalog parollarini ko'rsatish sintaksisga zid bo'lishi mumkin: "... DIRSPEC.EXT; DIRPWD FILESPEC.EXT; FILEPWD". Operatsion tizim bittasini o'chiradi[54] (va ikkitasi - DR-DOS 7.02 dan beri) diskda saqlashdan oldin fayl nomlaridan nuqta-vergul va kutilayotgan parollar. (Buyruq protsessori 4DOS qo'shilgan ro'yxatlar uchun nuqta-verguldan foydalanadi va belgilash belgilarini qo'llab-quvvatlaydigan har qanday buyruqlar bilan parol bilan himoyalangan fayllar uchun vergulni ikki baravar oshirishni talab qiladi.[54])

Belgilar belgisi (@) ko'plab DR-DOS, PalmDOS, Novell DOS, OpenDOS va Multiuser DOS, System Manager va REAL / 32 buyruqlari, shuningdek 4DOS tomonidan fayllar ro'yxatlari uchun ishlatiladi va shuning uchun ba'zan fayl nomlarida foydalanish qiyin bo'lishi mumkin.[54]

Multiuser DOS va REAL / 32 ostida, undov belgisi (!) Haqiqiy fayl belgisi emas, chunki u bitta buyruq satrida bir nechta buyruqlarni ajratish uchun ishlatiladi.[54]

IBM 4680 OS va 4690 OS ostida fayl nomlarida quyidagi belgilarga yo'l qo'yilmaydi:

  • ? * : . ; , [ ] ! + = < > " - / \ |

Bundan tashqari, fayl nomining birinchi, to'rtinchi, beshinchi va sakkizta belgilarida quyidagi maxsus belgilarga yo'l qo'yilmaydi, chunki ular xost buyrug'i protsessori (HCP) va kirish ketma-ketligi jadvali fayl nomlari bilan zid keladi:

  • @ # ( ) { } $ &

DOS fayl nomlari joriy OEM belgilar to'plami: agar berilgan kod sahifasi uchun bitta usul bilan ishlangan belgilar boshqa kod sahifasi uchun turlicha talqin qilinsa (bu DOS buyrug'i) hayratlanarli ta'sirga ega bo'lishi mumkin. CHCP) kichik va katta harflarga, saralashga yoki fayl nomining belgi sifatida haqiqiyligiga nisbatan.

Katalogga kirish

Microsoft uzoq fayl nomlari va vaqt markalarini, baytlarni yaratish / kirish uchun qo'llab-quvvatlashni qo'shmasdan oldin 0x0C0x15 katalog yozuvidan boshqa operatsion tizimlar tomonidan qo'shimcha metama'lumotlarni saqlash uchun foydalanilgan, xususan, Digital Research oilasining operatsion tizimlari fayl parollarini, kirish huquqlarini, egasining identifikatorlarini va fayllarni o'chirish ma'lumotlarini u erda saqlagan. Microsoft-ning yangi kengaytmalari sukut bo'yicha ushbu kengaytmalarga to'liq mos kelmasa-da, ularning aksariyati uchinchi tomon FAT dasturlarida (hech bo'lmaganda FAT12 va FAT16 jildlarida) bir vaqtda yashashi mumkin.

Ildiz katalogi mintaqasida ham, pastki kataloglarda ham 32 baytli katalog yozuvlari quyidagi formatda (shuningdek qarang 8.3 fayl nomi ):

Bayt ofsetUzunlik (bayt)Mundarija
0x008Qisqa fayl nomi (bo'shliqlar bilan to'ldirilgan)

Birinchi bayt quyidagi maxsus qiymatlarga ega bo'lishi mumkin:

QiymatTavsif
0x00Kirish mavjud va keyingi yozuv ishlatilmaydi. Shuningdek, DOS kataloglar jadvalini skanerlashda tugatish belgisi sifatida xizmat qiladi. (MS-DOS 1.25 va PC DOS 2.0 dan beri, avvalgi MS-DOS, PC DOS yoki 86-DOS versiyalarida emas. Buning o'rniga ular bunday yozuvlarni ajratilgan sifatida ko'rib chiqadilar. Shuning uchun bu qiymat oxirgi marker sifatida ishlatilmasligi kerak, agar kompyuter DOS 1.0 / 1.1 ostida ham ovoz balandligidan foydalanish mumkin bo'lsa.[nb 12][56][57][58])
0x05Dastlabki belgi aslida 0xE5. (DOS 3.0 dan beri)

PalmDOS, Novell DOS va OpenDOS kabi DR DOS 6.0 va undan yuqori versiyalari ostida, 0x05 DELWATCH ostida o'chirilgan fayllarni kutish uchun ham ishlatiladi. Ular o'chirishni kuzatish navbatidan chiqarilgandan so'ng, o'chirilgan faylning birinchi belgisi bilan almashtiriladi 0xE5.

0x2E"Nuqta" yozuvi; yoki "."yoki".."(MS-DOS 1.40 va PC DOS 2.0 dan beri)
0xE5Kirish avval o'chirilgan va / yoki mavjud bo'lgan.[nb 12][56][57][58] Fayl bekor qiling yordam dasturlari ushbu belgini o'chirish jarayonining bir qismi sifatida odatiy belgi bilan almashtirishlari kerak. Shuningdek qarang: 0x05.

Qiymat 0xE5 86-DOS-da ushbu maqsad uchun tanlangan, chunki 8 dyuymli CP / M disketalari ushbu qiymat to'ldirilgan holda oldindan formatlangan bo'lib, fayllarni qutidan tashqarida saqlash uchun ishlatilishi mumkin edi.[11][nb 1]

5.0-dan oldingi DOS-ning versiyalari katalog jadvallarini skanerlashni kataloglar jadvalining yuqori qismidan pastgacha boshlaydi. Fayllarni muvaffaqiyatli o'chirish imkoniyatini oshirish uchun DOS 5.0 va undan yuqori versiyalari oxirgi yozilgan katalog yozuvining holatini eslab qoladi va bundan katalog jadvallarini skanerlash uchun boshlang'ich nuqta sifatida foydalanadi.

0x083Qisqa fayl kengaytmasi (bo'shliq bilan to'ldirilgan)
0x0B1Fayl atributlari
BitNiqobTavsif
00x01Faqat o'qish. (DOS 2.0 dan beri) Agar ushbu bit o'rnatilgan bo'lsa, operatsion tizim o'zgartirish uchun faylni ochishga yo'l qo'ymaydi.

Deliberately setting this bit for files which will not be written to (executables, shared libraries and data files) may help avoid problems with concurrent file access in multi-tasking, multi-user or network environments with applications not specifically designed to work in such environments (i.e. non-SHARE-enabled programs).

The DCF digital camera file system standard utilizes the Read Only attribute to allow directories or individual files (DCF objects ) to be marked as "protected" from deletion by the user.[4]

10x02Yashirin. Hides files or directories from normal directory views.

Under DR DOS 3.31 and higher, under PalmDOS, Novell DOS, OpenDOS, Concurrent DOS, Multiuser DOS, REAL/32, password protected files and directories also have the hidden attribute set.[54] Password-aware operating systems should not hide password-protected files from directory views, even if this bit may be set. The password protection mechanism does not depend on the hidden attribute being set up to including DR-DOS 7.03, but if the hidden attribute is set, it should not be cleared for any password-protected files.

20x04Tizim. Indicates that the file belongs to the system and must not be physically moved (e.g., during defragmentation), because there may be references into the file using absolute addressing bypassing the file system (boot loaders, kernel images, swap files, extended attributes, etc.).
30x08Volume Label. (Since MS-DOS 1.28 and PC DOS 2.0) Indicates an optional directory volume label, normally only residing in a volume's root directory. Ideally, the volume label should be the first entry in the directory (after reserved entries) in order to avoid problems with VFAT LFNs. If this volume label is not present, some systems may fall back to display the partition volume label instead, if an EBPB is present in the boot sector (not present with some non-bootable block device drivers, and possibly not writeable with boot sector write protection). Even if this volume label is present, partitioning tools like FDISK may display the partition volume label instead. The entry occupies a directory entry but has no file associated with it. Volume labels have a filesize entry of zero.

Pending delete files and directories under DELWATCH have the volume attribute set until they are purged or undeleted.[54]

40x10Subdirectory. (Since MS-DOS 1.40 and PC DOS 2.0) Indicates that the cluster-chain associated with this entry gets interpreted as subdirectory instead of as a file. Subdirectories have a filesize entry of zero.
50x20Arxiv. (Since DOS 2.0) Typically set by the operating system as soon as the file is created or modified to mark the file as "dirty", and reset by backup software once the file has been backed up to indicate "pure" state.
60x40Qurilma (internally set for character device names found in filespecs, never found on disk), must not be changed by disk tools.
70x80Reserved, must not be changed by disk tools.

Under DR DOS 6.0 and higher, including PalmDOS, Novell DOS and OpenDOS, the volume attribute is set for pending delete files and directories under DELWATCH.

An attribute combination of 0x0F is used to designate a VFAT long file name entry since MS-DOS 7.0. Older versions of DOS can mistake this for a directory volume label, as they take the first entry with volume attribute set as volume label. This problem can be avoided if a directory volume label is enforced as part of the format process; for this reason some disk tools explicitly write dummy "NO␠NAME␠␠␠␠" directory volume labels when the user does not specify a volume label.[nb 13] Since volume labels normally don't have the system attribute set at the same time, it is possible to distinguish between volume labels and VFAT LFN entries. The attribute combination 0x0F could occasionally also occur as part of a valid pending delete file under DELWATCH, however on FAT12 and FAT16 volumes, VFAT LFN entries always have the cluster value at 0x1A ga o'rnatildi 0x0000 and the length entry at 0x1C hech qachon 0x00000000, whereas the entry at 0x1A is always non-zero for pending delete files under DELWATCH. This check does not work on FAT32 volumes.

0x0C1
  • CP / M-86 va DOS Plus store user attributes F1'—F4' here.[59] (DOS Plus 1.2 with BDOS 4.1 supports passwords only on CP/M media, not on FAT12 or FAT16 media.[60] While DOS Plus 2.1 supported mantiqiy sektorli yog'lar with a partition type 0xF2, FAT16B and FAT32 volumes were not supported by these operation systems. Even if a partition would have been converted to FAT16B it would still not be larger than 32 MB. Therefore, this usage is not conflictive with FAT32.IFS, FAT16+ or FAT32+ as they can never occur on the same type of volume.):
BitNiqobTavsif
70x80F1': Modify default open rules[54]
60x40F2': Partial close default[54]
50x20F3': Ignore Close Checksum Error[54]
40x10F4': Disable checksums[54]
30x08Himoyalangan
20x04Delete requires password
10x02Write requires password
00x01Read requires password
  • MSX-DOS 2: For a deleted file, the original first character of the filename. For the same feature in various other operating systems, see offset 0x0D if enabled in MSX boot sectors at sector offset 0x026. MSX-DOS supported FAT12 volumes only, but third-party extensions for FAT16 volumes exist. Therefore, this usage is not conflictive with FAT32.IFS and FAT32+ below. It does not conflict with the usage for user attributes under CP/M-86 and DOS Plus as well, since they are no longer important for deleted files.
  • Windows NT and later versions uses bits 3 and 4 to encode case information (see VFAT ); otherwise 0.[61]
  • DR-DOS 7.0x reserved bits other than 3 and 4 for internal purposes since 1997. The value should be set to 0 by formatting tools and must not be changed by disk tools.[54]
  • On FAT32 volumes under OS/2 and eComStation the third-party FAT32.IFS driver utilizes this entry as a mark byte to indicate the presence of extra "␠EA.␠SF" files holding kengaytirilgan atributlar parametr bilan / EAS. Version 0.70 to 0.96 used the magic values 0x00 (no EAs), 0xEA (normal EAs) and 0xEC (critical EAs),[62] whereas version 0.97 and higher since 2003-09 use 0x00, 0x40 (normal EAs) and 0x80 (critical EAs) as bitflags for compatibility with Windows NT.[63][64]
0x0D1
  • First character of a deleted file under Novell DOS, OpenDOS and DR-DOS 7.02 and higher. A value of 0xE5 (229), as set by DELPURGE, will prohibit undeletion by UNDELETE, a value of 0x00 will allow conventional undeletion asking the user for the missing first filename character.[54] S/DOS 1 and PTS-DOS 6.51 and higher also support this feature if enabled with SAVENAME = ON in CONFIG.SYS. For the same feature in MSX-DOS, see offset 0x0C.
  • Create time, fine resolution: 10 ms units, values from 0 to 199 (since DOS 7.0 with VFAT).

Double usage for create time ms and file char is not conflictive, since the creation time is no longer important for deleted files.

0x0E2
  • Under DR DOS 3.31 and higher including PalmDOS, Novell DOS and OpenDOS[59] as well as under Concurrent DOS, Multiuser DOS, System Manager, and REAL/32 and possibly also under FlexOS, 4680 OS, 4690 OS any non-zero value indicates the password hash of a protected file, directory or volume label.[54] The hash is calculated from the first eight characters of a password. If the file operation to be carried out requires a password as per the access rights bitmap stored at offset 0x14, the system tries to match the hash against the hash code of the currently set global password (by PASSWORD /G) or, if this fails, tries to extract a semicolon-appended password from the filespec passed to the operating system and checks it against the hash code stored here. A set password will be preserved even if a file is deleted and later undeleted.[54]
  • Create time (since DOS 7.0 with VFAT). The hour, minute and second are encoded according to the following bitmap:

BitlarTavsif
15-11Hours (0-23)
10-5Minutes (0-59)
4-0Seconds/2 (0-29)
The soniya is recorded only to a 2 second resolution. Finer resolution for file creation is found at offset 0x0D.

If bits 15-11 > 23 or bits 10-5 > 59 or bits 4-0 > 29 here, or when bits 12-0 at offset 0x14 hold an access bitmap and this is not a FAT32 volume or a volume using OS/2 Extended Attributes, then this entry actually holds a password hash, otherwise it can be assumed to be a file creation time.

0x102
  • FlexOS, 4680 operatsion tizim va 4690 operatsion tizimi store a record size in the word at entry 0x10.[59] This is mainly used for their special database-like file types tasodifiy fayl, to'g'ridan-to'g'ri fayl, kalitli faylva ketma-ket fayl. If the record size is set to 0 (default) or 1, the operating systems assume a record granularity of 1 byte for the file, for which it will not perform record boundary checks in read/write operations.[65]
  • With DELWATCH 2.00 and higher under Novell DOS 7, OpenDOS 7.01 and DR-DOS 7.02 and higher, this entry is used to store the last modified time stamp for pending delete files and directories.[54][59] Cleared when file is undeleted or purged. See offset 0x0E for a format tavsif.
  • Create date (since DOS 7.0 with VFAT). The year, month and day are encoded according to the following bitmap:

BitlarTavsif
15-9Year (0 = 1980, 119 = 2099 supported under DOS/Windows, theoretically up to 127 = 2107 )
8-5Month (1–12)
4-0Day (1–31)

The usage for creation date for existing files and last modified time for deleted files is not conflictive because they are never used at the same time. For the same reason, the usage for the record size of existing files and last modified time of deleted files is not conflictive as well. Creation dates and record sizes cannot be used at the same time, however, both are stored only on file creation and never changed later on, thereby limiting the conflict to FlexOS, 4680 OS and 4690 OS systems accessing files created under foreign operating systems as well as potential display or file sorting problems on systems trying to interpret a record size as creation time. To avoid the conflict, the storage of creation dates should be an optional feature of operating systems supporting it.

0x122
  • FlexOS, 4680 OS, 4690 OS, Multiuser DOS, System Manager, REAL/32 and DR DOS 6.0 and higher with multi-user security enabled use this field to store owner IDs.[54] Ofset 0x12 holds the user ID, 0x13 the group ID of a file's creator.[59]
In multi-user versions, system access requires a logon with account name and password, and the system assigns group and user IDs to running applications according to the previously set up and stored authorization info and inheritance rules. For 4680 OS and 4690 OS, group ID 1 is reserved for the system, group ID 2 for vendor, group ID 3 for the default user group. Background applications started by users have a group ID 2 and user ID 1, whereas operating system background tasks have group IDs 1 or 0 and user IDs 1 or 0. IBM 4680 BASIC and applications started as primary or secondary always get group ID 2 and user ID 1. When applications create files, the system will store their user ID and group ID and the required permissions with the file.[65]
  • With DELWATCH 2.00 and higher under Novell DOS 7, OpenDOS 7.01 and DR-DOS 7.02 and higher, this entry is used to store the last modified date stamp for pending delete files and directories.[54][59] Cleared when file is undeleted or purged. See offset 0x10 for a format tavsif.
  • Last access date (since DOS 7.0 if ACCDAT enabled in CONFIG.SYS for the corresponding drive);[2][54] ofsetga qarang 0x10 for a format tavsif.

The usage for the owner IDs of existing files and last modified date stamp for deleted files is not conflictive because they are never used at the same time.[54] The usage of the last modified date stamp for deleted files and access date is also not conflictive since access dates are no longer important for deleted files, however, owner IDs and access dates cannot be used at the same time.

0x142
  • Access rights bitmap for world/group/owner read/write/execute/delete protection for password protected files, directories (or volume labels) under DR DOS 3.31 and higher, including PalmDOS, Novell DOS and OpenDOS,[59] and under FlexOS,[59] 4680 OS, 4690 OS, Concurrent DOS, Multiuser DOS, System Manager, and REAL/32.
Typical values stored on a single-user system are 0x0000 (PASSWORD /N for all access rights "RWED"), 0x0111 (PASSWORD /D for access rights "RW?-"), 0x0555 (PASSWORD /W for access rights "R-?-") and 0x0DDD (PASSWORD /R for files or PASSWORD /P for directories for access rights "--?-").[54] Bits 1, 5, 9, 12-15 will be preserved when changing access rights. If execute bits are set on systems other than FlexOS, 4680 OS or 4690 OS, they will be treated similar to read bits. (Some versions of PASSWORD allow to set passwords on volume labels (PASSWORD /V) as well.)
Single-user systems calculate the most restrictive rights of the three sets (DR DOS up to 5.0 used bits 0-3 only) and check if any of the requested file access types requires a permission and if a file password is stored.[54] If not, file access is granted. Otherwise the stored password is checked against an optional global password provided by the operating system and an optional file password provided as part of the filename separated by a semicolon (not under FlexOS, 4680 OS, 4690 OS). If neither of them is provided, the request will fail. If one of them matches, the system will grant access (within the limits of the normal file attributes, that is, a read-only file can still not be opened for write this way), otherwise fail the request.[54]
Under FlexOS, 4680 OS and 4690 OS the system assigns group and user IDs to applications when launched. When they request file access, their group and user IDs are compared with the group and user IDs of the file to be opened. If both IDs match, the application will be treated as file owner. If only the group ID matches, the operating system will grant group access to the application, and if the group ID does not match as well, it will grant world access. If an application's group ID and user ID are both 0, the operating system will bypass security checking. Once the permission class has been determined, the operating system will check if any of the access types of the requested file operation requires a permission according to the stored bitflags of the selected class owner, group or world in the file's directory entry. Owner, group and world access rights are independent and do not need to have diminishing access levels. Only, if none of the requested access types require a permission, the operating system will grant access, otherwise it fails.
If multiuser file / directory password security is enabled the system will not fail at this stage but perform the password checking mechanism for the selected permission class similar to the procedure described above. With multi-user security loaded many utilities since DR DOS 6.0 will provide an additional /U:name parametr.[54]
File access rights bitmap:[66]
BitNiqobTavsif
00x0001Owner delete/rename/attribute change requires permission[54][59][66]
10x0002Owner execute requires permission (FlexOS, 4680 OS, 4690 OS only)[66]
20x0004Owner write/modify requires permission[54][59][66]
30x0008Owner read/copy requires permission[54][59][66]
40x0010Group delete/rename/attribute change requires permission[54][59][66]
50x0020Group execute requires permission (FlexOS, 4680 OS, 4690 OS only)[66]
60x0040Group write/modify requires permission[54][59][66]
70x0080Group read/copy requires permission[54][59][66]
80x0100World delete/rename/attribute change requires permission[54][59][66]
90x0200World execute requires permission (FlexOS, 4680 OS, 4690 OS only)[66]
100x0400World write/modify requires permission[54][59][66]
110x0800World read/copy requires permission[54][59][66]
12-15bits must be set to 0 during format and must not be modified by disk tools later on;[54] bit 15 is used internally,[66] but not on disk
File renames require either write or delete rights, IBM 4680 BASIC CHAIN requires execute rights.
  • Extended Attributes handle (used by OS / 2 1.2 and higher as well as by Windows NT) in FAT12 and FAT16; first cluster of EA file or 0, if not used.[54][67] A different method to store extended attributes has been devised for FAT32 volumes, see FAT32.IFS under offset 0x0C.
  • High two bytes of first cluster number in FAT32; with the low two bytes stored at offset 0x1A.

The storage of the high two bytes of the first cluster in a file on FAT32 is partially conflictive with access rights bitmaps.

0x162
  • Last modified time (since PC DOS 1.1 /MS-DOS 1.20 ); ofsetga qarang 0x0E for a format tavsif.
  • Under Novell DOS, OpenDOS and DR-DOS 7.02 and higher, this entry holds the deletion time of pending delete files or directories under DELWATCH 2.00 or higher. The last modified time stamp is copied to 0x10 for possible later restoration.[54] See offset 0x0E for a format tavsif.
0x182
  • Last modified date; ofsetga qarang 0x10 for a format tavsif.
  • Under Novell DOS, OpenDOS and DR-DOS 7.02 and higher, this entry holds the deletion date of pending delete files or directories under DELWATCH 2.00 or higher. The last modified date stamp is copied to 0x12 for possible later restoration.[54] See offset 0x10 for a format tavsif.
0x1A2Start of file in clusters in FAT12 and FAT16. Low two bytes of first cluster in FAT32; with the high two bytes stored at offset 0x14.

Entries with the Volume Label flag, subdirectory ".." pointing to the FAT12 and FAT16 root, and empty files with size 0 should have first cluster 0.

VFAT LFN entries also have this entry set to 0; on FAT12 and FAT16 volumes this can be used as part of a detection mechanism to distinguish between pending delete files under DELWATCH and VFAT LFNs; yuqoriga qarang.

0x1C4File size in bytes. Entries with the Volume Label or Subdirectory flag set should have a size of 0.

VFAT LFN entries never store the value 0x00000000 Bu yerga. This can be used as part of a detection mechanism to distinguish between pending delete files under DELWATCH and VFAT LFNs; yuqoriga qarang.

The FlexOS - operatsion tizimlarga asoslangan IBM 4680 OS va IBM 4690 OS support unique distribution attributes stored in some bits of the previously reserved areas in the directory entries:[68]

  1. Local: Don't distribute file but keep on local controller only.[nb 14]
  2. Mirror file on update: Distribute file to server only when file is updated.
  3. Mirror file on close: Distribute file to server only when file is closed.
  4. Compound file on update: Distribute file to all controllers when file is updated.
  5. Compound file on close: Distribute file to all controllers when file is closed.[69]

Some incompatible extensions found in some operating systems include:

Bayt ofsetUzunlik (bayt)TizimTavsif
0x0C2RISC OSFile type, 0x00000x0FFF
0x0C4Petrov DOSFSFile load address
0x0E2ANDOSFile address in the memory
0x104Petrov DOSFSFile execution address

VFAT uzun fayl nomlari

FAT32 directory structure with three files, two of which use VFAT long file names.

VFAT Long File Names (LFNs) are stored on a FAT file system using a trick: adding additional entries into the directory before the normal file entry. The additional entries are marked with the Volume Label, System, Hidden, and Read Only attributes (yielding 0x0F), which is a combination that is not expected in the MS-DOS environment, and therefore ignored by MS-DOS programs and third-party utilities. Notably, a directory containing only volume labels is considered as empty and is allowed to be deleted; such a situation appears if files created with long names are deleted from plain DOS. This method is very similar to the DELWATCH method to utilize the volume attribute to hide pending delete files for possible future undeletion since DR DOS 6.0 (1991) and higher. It is also similar to a method publicly discussed to store long filenames on Ataris and under Linux in 1992.[70][71]

Because older versions of DOS could mistake LFN names in the root directory for the volume label, VFAT was designed to create a blank volume label in the root directory before adding any LFN name entries (if a volume label did not already exist).[nb 13]

Each phony entry can contain up to 13 UCS-2 characters (26 bytes) by using fields in the record which contain file size or time stamps (but not the starting cluster field, for compatibility with disk utilities, the starting cluster field is set to a value of 0. See 8.3 fayl nomi for additional explanations). Up to 20 of these 13-character entries may be chained, supporting a maximum length of 255 UCS-2 characters.[61]

Oxirgisidan keyin UCS-2 belgi, a 0x0000 qo'shiladi. The remaining unused characters are filled with 0xFFFF.

LFN entries use the following format:

Bayt ofsetUzunlik (bayt)Tavsif
0x001Sequence Number (bit 6: last logical, first physical LFN entry, bit 5: 0; bits 4-0: number 0x01..0x14 (0x1F), deleted entry: 0xE5)
0x0110Name characters (five UCS-2 belgilar)
0x0B1Attributes (always 0x0F)
0x0C1Type (always 0x00 for VFAT LFN, other values reserved for future use; for special usage of bits 4 and 3 in SFNs see further up)
0x0D1Checksum of DOS file name
0x0E12Name characters (six UCS-2 belgilar)
0x1A2First cluster (always 0x0000)
0x1C4Name characters (two UCS-2 belgilar)

If there are multiple LFN entries required to represent a file name, the entry representing the oxiri of the filename comes first. The sequence number of this entry has bit 6 (0x40) set to represent that it is the last logical LFN entry, and it has the highest sequence number. The sequence number decreases in the following entries. The entry representing the boshlang of the filename has sequence number 1. A value of 0xE5 is used to indicate that the entry is deleted.

On FAT12 and FAT16 volumes, testing for the values at 0x1A to be zero and at 0x1C to be non-zero can be used to distinguish between VFAT LFNs and pending delete files under DELWATCH.

For example, a filename like "File with very long filename.ext" would be formatted like this:

Sequence numberKirish ma'lumotlari
0x43"me.ext"
0x02"y long filena"
0x01"File with ver"
???Normal 8.3 entry

A summa also allows verification of whether a long file name matches the 8.3 name; such a mismatch could occur if a file was deleted and re-created using DOS in the same directory position. The checksum is calculated using the algorithm below. (pFCBName is a pointer to the name as it appears in a regular directory entry, i.e. the first eight characters are the filename, and the last three are the extension. The dot is implicit. Any unused space in the filename is padded with space characters (ASCII 0x20). For example, "Readme.txt" would be "README␠␠TXT".)

imzosiz char lfn_checksum(konst imzosiz char *pFCBName){   int men;   imzosiz char sum = 0;   uchun (men = 11; men; men--)      sum = ((sum & 1) << 7) + (sum >> 1) + *pFCBName++;   qaytish sum;}

If a filename contains only lowercase letters, or is a combination of a lowercase asosiy ism katta harf bilan kengaytma, or vice versa; and has no special characters, and fits within the 8.3 limits, a VFAT entry is not created on Windows NT and later versions of Windows such as XP. Instead, two bits in byte 0x0C of the directory entry are used to indicate that the filename should be considered as entirely or partially lowercase. Specifically, bit 4 means lowercase kengaytma and bit 3 lowercase asosiy ism, which allows for combinations such as "example.TXT"yoki"HELLO.txt"lekin emas"Mixed.txt". Few other operating systems support it. This creates a backwards-compatibility problem with older Windows versions (Windows 95 / 98 / 98 SE / ME) that see all-uppercase filenames if this extension has been used, and therefore can change the name of a file when it is transported between operating systems, such as on a USB flash drive. Current 2.6.x versions of Linux will recognize this extension when reading (source: kernel 2.6.18 /fs/fat/dir.c va fs/vfat/namei.c); the mount option shortname determines whether this feature is used when writing.[72]

Shuningdek qarang

Izohlar

  1. ^ a b This is the reason, why 0xE5 had a special meaning in directory entries.
  2. ^ a b v One utility providing an option to specify the desired format filler value for hard disks is DR-DOS' FDISK R2.31 with its optional wipe parameter / V: 246. Boshqalaridan farqli o'laroq FDISK yordam dasturlari, DR-DOS FDISK nafaqat qismlarni ajratish vositasi, balki yangi yaratilgan bo'limlarni ham formatlashi mumkin. FAT12, FAT16 yoki FAT32. This reduces the risk to accidentally format wrong volumes.
  3. ^ a b v For maximum compatibility with MS-DOS/PC DOS and DR-DOS, operating systems trying to determine a floppy disk's format should test on all mentioned opcode sequences at sector offset 0x000 yilda qo'shimcha to looking for a valid media descriptor byte at sector offset 0x015 before assuming the presence of a BPB. Although PC DOS 1.0 floppy disks do not contain a BPB, they start with 0xEB as well, but do not show a 0x90 ofsetda 0x002. PC DOS 1.10 floppy disks even start with 0xEB 0x ?? 0x90, although they still do not feature a BPB. In both cases, a test for a valid media descriptor at offset 0x015 would fail (value 0x00 instead of valid media descriptors 0xF0 va undan yuqori). If these tests fail, DOS checks for the presence of a media descriptor byte in the first byte of the first FAT in the sector following the boot sector (logical sector 1 on FAT12/FAT16 floppies).
  4. ^ a b v d e Ofsetdagi imzo 0x1FE yuklash tarmoqlarida 0x55 0xAA, anavi 0x55 ofsetda 0x1FE va 0xAA ofsetda 0x1FF. Beri ozgina endian vakili kontekstida qabul qilinishi kerak IBM PC mos keladigan mashinalar, bu 16 bitli so'z sifatida yozilishi mumkin 0xAA55 uchun dasturlarda x86 protsessorlar (almashtirish tartibiga e'tibor bering), ammo uni shunday yozish kerak edi 0x55AA a dan foydalangan holda boshqa CPU arxitekturalari uchun dasturlarda katta endian vakillik. Bu kitoblarda va hatto Microsoft-ning asl ma'lumotnomalarida ko'p marta aralashtirilganligi sababli, ushbu maqola mumkin bo'lgan noto'g'ri talqinni oldini olish uchun diskda ofset asosidagi baytli tasvirdan foydalanadi.
  5. ^ a b v The summa kirish Atari boot sectors holds the alignment value, not the sehrli qiymat o'zi. The magic value 0x1234 is not stored anywhere on disk. Aksincha Intel x86 protsessorlar, Motorola 680x0 processors as used in Atari machines use a katta endian memory representation and therefore a big-endian representation must be assumed when calculating the checksum. As a consequence of this, for checksum verification code running on x86 machines, pairs of bytes must be swapped before the 16-bit addition.
  6. ^ DR-DOS is able to boot off FAT12/FAT16 logical sectored media with logical sector sizes up to 1024 bytes.
  7. ^ a b The following DOS functions return these register values:INT 21h/AH=2Ah "Get system date" returned values: CX = year (1980..2099 ), DH = month (1..12), DL = day (1..31).INT 21h/AH=2Ch "Get system time" returned values: CH = hour (0..23), CL = minute (0..59), DH = second (0..59), DL = 1/100 seconds (0..99).
  8. ^ Windows XP has been observed to create such hybrid disks when reformatting FAT16B formatted ZIP-100 disks to FAT32 format. The resulting volumes were FAT32 by format, but still used the FAT16B EBPB. (It is unclear how Windows determines the location of the root directory on FAT32 volumes, if only a FAT16 EBPB was used.)
  9. ^ In order to support the coexistence of DR-DOS with PC DOS and multiple parallel installations of DR-DOS, the extension of the default "IBMBIO␠␠COM" boot file name can be changed using the SYS /DR:ext option, where ext represents the new extension. Other potential DR-DOS boot file names to be expected in special scenarios are "DRBIOS␠␠SYS", "DRDOS␠␠␠SYS", "IO␠␠␠␠␠␠SYS", "JO␠␠␠␠␠␠SYS".
  10. ^ If a volume's dirty shutdown flag is still cleared on startup, the volume was not properly unmounted. This would, for example, cause Windows 98 WIN.COM to start SCANDISK in order to check for and repair potential logical file system errors. If the bad sector flag is cleared, it will force a surface scan to be carried out as well. This can be disabled by setting AUTOSCAN=0 in the [OPTIONS] section in MSDOS.SYS fayl.
  11. ^ a b v d See other links for special precautions in regard to occurrences of a cluster value of 0xFF0 on FAT12 volumes under MS-DOS/PC DOS 3.3 and higher.
  12. ^ a b Ning ba'zi versiyalari FORMAT beri MS-DOS 1.25 va Kompyuter DOS 2.0 supported an option / O (uchun eski) to fill the first byte of all katalog yozuvlari bilan 0xE5 instead of utilizing the end marker 0x00. Thereby. the volume remained accessible under PC DOS 1.0 -1.1, while formatting took somewhat longer and newer versions of DOS could not take advantage of the considerable speed-up caused by using the end marker 0x00.
  13. ^ a b To avoid potential misinterpretation of directory volume labels with VFAT LFN entries by non-VFAT aware operating systems, the DR-DOS 7.07 FDISK and FORMAT tools are known to explicitly write dummy "NO␠NAME␠␠␠␠" directory volume labels if the user skips entering a volume label. The operating system would internally default to return the same string if no directory volume label could be found in the root of a volume, but without a real volume label stored as the first entry (after the directory entries), older operating systems could erroneously pick up VFAT LFN entries instead.
  14. ^ Bu IBM 4680 OS va 4690 operatsion tizimi distribution attribute type must have an on-disk bit value of 0 as files fall back to this type when attributes get lost accidentally.

Adabiyotlar

  1. ^ "File Systems". Microsoft TechNet. 2001. Olingan 2011-07-31.
  2. ^ a b Microsoft (2006-11-15). Windows 95 CD-ROM CONFIG.TXT File Article 135481, Revision: 1.1, retrieved 2011-12-22: "For each hard disk, specifies whether to record the date that files are last accessed. Last access dates are turned off for all drives when your computer is started in safe mode, and are not maintained for floppy disks by default. Syntax: ACCDAT =drive1+|- [drive2+|-]..."
  3. ^ "FAT File System (Windows Embedded CE 6.0)". Microsoft. 2010-01-06. Olingan 2013-07-07.
  4. ^ a b JEIDA/JEITA/CIPA (2010). "Standard of the Camera & Imaging Products Association, CIPA DC-009-Translation-2010, Design rule for Camera File system: DCF Version 2.0 (Edition 2010)" (PDF). Arxivlandi asl nusxasi (PDF) 2013-09-30 kunlari. Olingan 2011-04-13.
  5. ^ a b v d e f g h men j k "Volume and File Structure of Disk Cartridges for Information Interchange". Standard ECMA-107 (2nd ed., June 1995). ECMA. 1995. Olingan 2011-07-30.
  6. ^ a b v d e f g h men j k "Information technology -- Volume and file structure of disk cartridges for information interchange". ISO/IEC 9293:1994. ISO katalog. 1994 yil. Olingan 2012-01-06.
  7. ^ a b v d e f g h men j k "Information processing -- Volume and file structure of flexible disk cartridges for information interchange". ISO 9293:1987. ISO katalog. 1987 yil. Olingan 2012-01-06.
  8. ^ Aaron R. Reynolds, Dennis R. Adler, Ralph A. Lipe, Ray D. Pedrizetti, Jeffrey T. Parsons, Rasipuram V. Arun (1998-05-26). "Common name space for long and short filenames". US Patent 5758352. Olingan 2012-01-19.CS1 maint: bir nechta ism: mualliflar ro'yxati (havola)
  9. ^ https://patents.google.com/patent/US5758352
  10. ^ a b v d e f g h men j k l m n o "Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format". Microsoft. 2000-12-06. Olingan 2011-07-03.
  11. ^ a b v d e Shulman, Endryu; Jigarrang, Ralf D.; Maksi, Devid; Mishel, Raymond J.; Kayl, Jim (1994) [1993 yil noyabr]. Hujjatsiz DOS: MS-DOS zaxira funktsiyalari va ma'lumotlar tuzilmalari bo'yicha dasturchining qo'llanmasi - kengaytirilgan MS-DOS 6, Novell DOS va Windows 3.1 (2 nashr). Massingusets shtatidagi Reading: Addison Uesli. p.11. ISBN  0-201-63287-X. ISBN  978-0-201-63287-3. (xviii+856+vi pages, 3.5"-floppy) Errata: [1][2]
  12. ^ a b v d e Haaf, Wilfried; Middel, Frank (November 1987). "Daten auf Scheiben – File- und Diskettenstrukturen unter CP/M, MSDOS und TOS: Dateiverwaltung unter TOS". c't - magazin für computertechnik. c't Kartei (in German). Vol. 1987 yil yo'q 11. Verlag Heinz Heise GmbH & Co. KG. pp. 241–246 [246]. ISSN  0724-8679.
  13. ^ a b v d e f g h men j k l m n o p Chappell, Geoff (January 1994). Shulman, Endryu; Pedersen, Amorette (eds.). DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st ed.). Addison Uesli nashriyot kompaniyasi. ISBN  978-0-201-60835-9. ISBN  0-201-60835-9. (xxvi+738+iv pages, 3.5"-floppy [3][4] ) Xato: [5][6][7]
  14. ^ a b v d e f g h men j k l m n o p q r s t siz v w Microsoft MS-DOS 3.1 Programmierhandbuch in englischer Sprache [Microsoft MS-DOS 3.1 Programmer's Reference Manual in English]. München: Markt & Technik Verlag (published 1986). 1984 yil. ISBN  3-89090-368-1. 8411-310-02, 036-014-012. In regard to the jump instruction at the start of a boot sector: "Determine if the first byte of the boot sector is an E9H or EBIT (the first byte of a 3-byte NEAR or 2-byte short jump) or an EBH (the first byte of a 2-byte jump followed by a NOP). If so, a BPB is located beginning at offset 3." (NB. This book contains many errors.)
  15. ^ a b Daniel B. Sedory. The Boot Sector of IBM Personal Computer DOS Version 1.00 (1981). 2005-08-02 ([8] ).
  16. ^ a b Daniel B. Sedory. The Boot Sector of IBM Personal Computer DOS Version 1.10 (1982). 2005-07-29 ([9] ).
  17. ^ a b Kaldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01. The DISK.ASM file in the machine readable source kit shows that DR-DOS tests on value 0x69 shuningdek.
  18. ^ Paul, Matthias R. (2002-02-20). "Need DOS 6.22 (Not OEM)". Yangiliklar guruhialt.msdos.programmer. Arxivlandi asl nusxasidan 2017-09-09. Olingan 2006-10-14.
  19. ^ Bass, Uolli (1994-02-14). "Klaster hajmi". Yangiliklar guruhicomp.os.msdos.programmer. Arxivlandi asl nusxasidan 2017-09-09. Olingan 2006-10-14.
  20. ^ a b v d e f g h Dave Williams (1992). Programmer's Technical Reference for MSDOS and the IBM PC. DOSREF, Shareware version 01/12/1992. ISBN  1-878830-02-3. ([10], accessed on 2012-01-08). Comment: The author mentions that DOS 4.0 checks the OEM label, but denies that DOS 3.2 checks it as well (although it does).
  21. ^ Pol, Mattias R. (2004-08-25). "NOVOLTRK.REG". www.drdos.org. Arxivlandi asl nusxasi 2016-03-04 da. Olingan 2011-12-17. [11]
  22. ^ a b "Troubleshooting Disks and File Systems". Microsoft TechNet. 2005-11-05. Olingan 2014-06-15.
  23. ^ IBM (1983). IBM PC Technical Reference Handbook. Comment: Includes a complete listing of the ROM BIOS source code of the original IBM PC.
  24. ^ a b v d Hans-Dieter Jankowski, Dietmar Rabich, Julian F. Reschke (1992). Atari Profibuch ST-STE-TT. Sybex, 4th edition, 12th batch. ISBN  3-88745-888-5, ISBN  978-3-88745-888-1.
  25. ^ Seagate Technologies, "The Transition to Advanced Format 4K Sector Hard Drives (archived by Wayback Machine @Archive.org)", 2010 ([12] ).
  26. ^ a b v d Jigarrang, Ralf D. (2002-12-29). "The x86 Interrupt List". Olingan 2011-10-14.
  27. ^ a b v d de Boyne Pollard, Jonathan (2010) [2006]. "All about BIOS parameter blocks". Tez-tez berilgan javoblar. Olingan 2014-06-02.
  28. ^ a b v Microsoft MS-DOS Programmer's Reference: version 5.0. Microsoft press. 1991 yil. ISBN  1-55615-329-5.
  29. ^ a b v d e f g h men j k "MS-DOS tomonidan qo'llab-quvvatlanadigan standart disket formatlari". Microsoft Help and Support. 2003-05-12. Olingan 2012-09-11.
  30. ^ a b v Microsoft (1987-07). MS-DOS 3.3 Programmer's Reference.
  31. ^ a b v Andris Brouwer (2002-09-20). "The FAT file system". Olingan 2011-10-16.
  32. ^ a b v d e f g h men j k l m n o p q r Paterson, Tim; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 va V2.0: /msdos/v20source/SKELIO.TXT, /msdos/v20source/HRDDRV.ASM". Kompyuter tarixi muzeyi, Microsoft. Olingan 2014-03-25. (NB. Nashriyotlar buni MS-DOS 1.1 va 2.0 deb da'vo qilishsa-da, aslida shundaydir SCP MS-DOS 1.25 va aralashmasi Altos MS-DOS 2.11 va TeleVideo PC DOS 2.11.)
  33. ^ a b v d e f g h men j Zbikovski, Mark; Allen, Pol; Ballmer, Stiv; Borman, Ruben; Borman, Rob; Butler, Jon; Kerol, Chak; Chemberlen, Mark; Chell, Devid; Kuli, Mayk; Kortni, Mayk; Dryfoos, Mayk; Dunkan, Reychel; Ekxardt, Kurt; Evans, Erik; Fermer, Rik; Geyts, Bill; Giri, Maykl; Griffin, Bob; Xogart, Dag; Jonson, Jeyms V.; Kermaani, Kaamel; King, Adrian; Koch, qamish; Landovski, Jeyms; Larson, Kris; Lennon, Tomas; Lipki, Dan; Makdonald, Mark; Makkinni, Bryus; Martin, Paskal; Mathers, Estel; Metyus, Bob; Melin, Devid; Mergentime, Charlz; Nevin, Rendi; Nyuell, Dan; Nyuell, Tani; Norris, Devid; O'Liri, Mayk; O'Rear, Bob; Olsson, Mayk; Osterman, Larri; Ostling, Ridge; Pay, Sunil; Paterson, Tim; Peres, Gari; Piter, Kris; Petzold, Charlz; Pollok, Jon; Reynolds, Aaron; Rubin, Darril; Rayan, Ralf; Shulmeysterlar, Karl; Shoh, Rajen; Shou, Barri; Qisqa, Entoni; Slivka, Ben; Smirl, Jon; Stillmaker, Betti; Stoddard, Jon; Tillman, Dennis; Oqlangan, Greg; Yount, Natali; Zeck, Steve (1988). "Texnik maslahatchilar". MS-DOS Entsiklopediyasi: 1.0 dan 3.2 gacha bo'lgan versiyalar. Dunkan, Rey tomonidan; Bostvik, Stiv; Burgoyne, Keyt; Byers, Robert A .; Xogan, Tom; Kayl, Jim; Letvin, Gordon; Petzold, Charlz; Rabinovits, Chip; Tomlin, Jim; Uilton, Richard; Vulverton, Van; Vong, Uilyam; Woodcock, JoAnne (To'liq qayta ishlangan tahrir). Redmond, Vashington, AQSh: Microsoft Press. ISBN  1-55615-049-0. LCCN  87-21452. OCLC  16581341. (xix+1570 pages; 26 cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors. [13] )
  34. ^ a b "Detailed Explanation of FAT Boot Sector". Microsoft Knowledge Base. 2003-12-06. Olingan 2011-10-16.
  35. ^ a b v Lai, Robert S.; The Waite Group (1987). Writing MS-DOS Device Drivers (2-nashr). Addison Uesli. ISBN  0-201-60837-5.
  36. ^ a b v d e f g h men j k l m n o p q r s t Paterson, Tim; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 and V2.0: /msdos/v20source/DEVDRIV.txt". Kompyuter tarixi muzeyi, Microsoft. Olingan 2014-03-25. (NB. Nashriyotlar buni MS-DOS 1.1 va 2.0 deb da'vo qilishsa-da, aslida shundaydir SCP MS-DOS 1.25 va aralashmasi Altos MS-DOS 2.11 va TeleVideo PC DOS 2.11.)
  37. ^ a b v d e Tim Paterson (1983). "An Inside Look at MS-DOS". Bayt. Arxivlandi asl nusxasi 2011-07-20. Olingan 2011-07-18. The numbering starts with 2; the first two numbers, 0 and 1, are reserved.
  38. ^ a b v d PORT-DOS - Userprompt Guide for Apricot Portable. User-Prompt Guides, UK ([14] ).
  39. ^ a b v d e John C. Elliott (1998). DOSPLUS disc formats. ([15] ).
  40. ^ a b v d The BBC Master 512. Yellow Pig's BBC Computer Pages ([16] ).
  41. ^ Raqamli uskunalar korporatsiyasi. Rainbow 100 MS-DOS 2.01 Technical Documentation Volume 1 (QV025-GZ), Microsoft MS-DOS Operating System BIOS Listing (AA-X432A-TV), Universal Disk Driver, Page 1-17. 1983 yil.
  42. ^ "Detailed Explanation of FAT Boot Sector". DEW Associates Corporation. 2002 yil. Olingan 2011-10-16.
  43. ^ Daniel B. Sedory. Detailed Notes on the "Dirty Shutdown Flag" under MS-Windows. 2001-12-04. ([17] ).
  44. ^ a b v d e "Windows 98 Resource Kit - Chapter 10 - Disks and File Systems". Microsoft TechNet. 1998. Olingan 2012-07-16.
  45. ^ Piter Norton (1986). Inside the IBM PC, Revised and Enlarged, Brady. ISBN  0-89303-583-1, p. 157.
  46. ^ a b v Andris Brouwer. "FAT under Linux".
  47. ^ Andris Brouwer (2002-09-20). "FAT". Olingan 2012-01-11.
  48. ^ "Limitations of FAT32 File System". Microsoft Knowledge Base. 2007-03-26. Olingan 2011-08-21. Clusters cannot be 64 kilobytes or larger
  49. ^ Duncan, Ray (1989). "Design goals and implementation of the new High Performance File System". Microsoft Systems Journal. [NB. This particular text file has a number of OCR errors; e.g., "Ray" is the author's correct name; not 'Roy' as the text shows.]
  50. ^ Chen, Raymond (2006 yil iyul). "Microsoft TechNet: A Brief and Incomplete History of FAT32". Microsoft TechNet Magazine.
  51. ^ a b Les Bell; Associates Pty Ltd (1996-09-02) [1990]. "OS/2 High Performance File System". PC Support Advisor. Arxivlandi asl nusxasi 2014-03-01 da. Olingan 2014-06-24.
  52. ^ a b Bridges, Dan (February 1996). "Inside the High Performance File System - Part 2/6: Introduction". Significant Bits, Brisbug PC User Group Inc. Olingan 2014-06-24.
  53. ^ a b v Seattle Computer Products (1981). "SCP 86-DOS 1.0 Addendum" (PDF). Olingan 2013-03-10.
  54. ^ a b v d e f g h men j k l m n o p q r s t siz v w x y z aa ab ak reklama ae af ag ah ai aj ak Paul, Mattias R. (1997-07-30) [1994-05-01]. NWDOS-Maslahatlar - Maslahatlar va fokuslar, Novell DOS 7, Blick auf undokumentierte details, Xatolar va vaqtinchalik echimlar. MPDOSTIP. 157-nashr (nemis tilida) (3 nashr). Arxivlandi asl nusxasidan 2016-11-05. Olingan 2012-01-11. (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 va OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the file.) [18]
  55. ^ IBM. 4690 OS User's Guide Version 5.2, IBM hujjati SC30-4134-01, 2008-01-10 ([19] ).
  56. ^ a b Paterson, Tim; Microsoft (2013-12-19) [1983]. "Microsoft DOS V1.1 va V2.0: /msdos/v20source/FORMAT.TXT". Kompyuter tarixi muzeyi, Microsoft. Olingan 2014-03-25. (NB. Nashriyotlar buni MS-DOS 1.1 va 2.0 deb da'vo qilishsa-da, aslida shundaydir SCP MS-DOS 1.25 va aralashmasi Altos MS-DOS 2.11 va TeleVideo PC DOS 2.11.)
  57. ^ a b Shustek, Len (2014-03-24). "Microsoft MS-DOS dastlabki manba kodi". Dastur toshlari: Kompyuter tarixi muzeyi tarixiy manbalar kodlari seriyali. Olingan 2014-03-29. (NB. Muallif bu MS-DOS 1.1 va 2.0 bo'ladi deb da'vo qilgan bo'lsa-da, aslida shundaydir SCP MS-DOS 1.25 va aralashmasi Altos MS-DOS 2.11 va TeleVideo shaxsiy kompyuter DOS 2.11.)
  58. ^ a b Levin, Roy (2014-03-25). "Microsoft MS-DOS va Windows uchun Word uchun manba kodlarini ommaga taqdim etdi". Rasmiy Microsoft Blog. Arxivlandi asl nusxasi 2014-03-28. Olingan 2014-03-29. (NB. Muallif bu MS-DOS 1.1 va 2.0 bo'ladi deb da'vo qilgan bo'lsa-da, aslida shundaydir SCP MS-DOS 1.25 va aralashmasi Altos MS-DOS 2.11 va TeleVideo shaxsiy kompyuter DOS 2.11.)
  59. ^ a b v d e f g h men j k l m n o p q Kaldera (1997). Caldera OpenDOS Machine Readable Source Kit 7.01. Mashinada o'qiladigan manba to'plamidagi FDOS.EQU fayli tegishli katalog yozuvlari uchun tenglashtiriladi.
  60. ^ Jon C. Elliott (1998). CP / M 4.1 disk formatlari. ([20] ): "CP / M 4.1 (DOS Plus [1.2]) ikkita fayl tizimidan - CP / M va DOS dan foydalanishga imkon beradi. Amstrad PC1512 bilan ta'minlangan [...] versiyasi 360k dan kattaroq floppi bilan ishlay olmaydi (CP / M) ) / 1.2Mb (DOS), yoki 32Mb dan kattaroq qattiq disk bo'limlari. [...] DOS fayl tizimi FAT12 yoki FAT16 bo'lishi mumkin, formati aynan PCDOS 2.11 dagi kabi, bundan tashqari: katalog yozuvining 0Ch bayti [ ...] to'rtta "foydalanuvchi atributlari" F1'-F4 'ga ega [...] DRDOS uslubidagi parollar qo'llab-quvvatlanmaydi. "
  61. ^ a b vinDaci (1998-01-06). "Fayl nomining uzun spetsifikatsiyasi". Arxivlandi asl nusxasi 2001-04-20. Olingan 2007-03-13.
  62. ^ Xenk Kelder. FAT32.IFS versiyasi 0.74 uchun FAT32.TXT. ("Arxivlangan nusxa". Arxivlandi asl nusxasi 2012-03-30. Olingan 2012-01-14.CS1 maint: nom sifatida arxivlangan nusxa (havola)). Izoh: README faylining ushbu eski versiyasi hanuzgacha eskisini muhokama qiladi 0xEA va 0xEC sehrli qadriyatlar.
  63. ^ Xenk Kelder (2003). FAT32.IFS versiyasi 0.9.13 uchun FAT32.TXT. "([21] ): "Ushbu bayt [...] ishlayotganda o'zgartirilmaydi Windows 95 va qo'shni SCANDISK yoki DEFRAG. [...] Agar boshqa dastur qiymatni belgilasa 0x00 ega bo'lgan fayl uchun EAlar ushbu EA-lar endi faqat DosFindFirst / Next qo'ng'iroqlari yordamida topilmaydi. Boshqa OS / 2 EAlarni olish uchun qo'ng'iroqlar (DosQueryPathInfo, DosQueryFileInfo va DosEnumAttribute) bu baytga ishonmaydi. Shuningdek, buning aksi bo'lishi mumkin [...]. [...] Bunday vaziyatda faqat kataloglarni skanerlash ko'rsatkichlari pasayadi. Ikkala vaziyat ham [...] tomonidan tuzatiladi CHKDSK ".
  64. ^ Netlabs. FAT32.IFS Wiki va Manbalar. ([22] ).
  65. ^ a b IBM. 4690 OS dasturlash bo'yicha qo'llanma 5.2 versiyasi, IBM hujjati SC30-4137-01, 2007-12-06 ([23] ).
  66. ^ a b v d e f g h men j k l m n OpenDOS dasturchilarining ma'lumotnomalari - tizim va dasturchilar uchun qo'llanma - dasturchilar uchun qo'llanma. Caldera, Inc. Avgust 1997. Kaldera № 200-DODG-003 qism. Arxivlandi asl nusxasi 2017-10-07 kunlari. Olingan 2014-05-20. (Buyuk Britaniyada bosilgan.)
  67. ^ Bob Eager, Tavi tizimlari (2000-10-28). FAT fayl tizimida kengaytirilgan atributlarni amalga oshirish. ([24] ).
  68. ^ IBM (2003). 4690 OS fayllarni tarqatishning noyob atributlari haqida ma'lumot, IBM hujjati R1001487, 2003-07-30. ("Arxivlangan nusxa". Arxivlandi asl nusxasi 2014-05-21. Olingan 2014-05-20.CS1 maint: nom sifatida arxivlangan nusxa (havola)): "[...] fayl turlari PC-DOS fayl katalogi tuzilmasining" Zaxiralangan bitlar "qismida saqlanadi [...] faqat 4690 bu atributlarni hurmat qiladi va saqlaydi. 4690 ga kirmaydigan turli xil operatsion tizimlar turli xil harakatlarni amalga oshiradilar, agar bu bitlar 4690 tizimida yaratilgan disketkadan nusxa ko'chirishda [...] yoqiladi. [...] PC-DOS va Windows 2000 Professional fayllarni xatosiz nusxa ko'chiradi va bitlarni nolga tenglashtiradi OS / 2 [.. .] 1.2 [...] faylni nusxalashdan bosh tortadi, agar [...] avval faylda CHKDSK / F ni ishga tushirmasa, [...] CHKDSK dan keyin faylni nusxa ko'chiradi va bitlarni nolga tenglashtiradi. [.. .] qachon [...] nusxa ko'chirish [...] 4690 tizimiga qaytarilsa, [...] fayl mahalliy fayl sifatida ko'chiriladi. "
  69. ^ IBM. 4690 fayllarni tarqatish atributlarini saqlash va tiklash. IBM hujjati R1000622, 2010-08-31 ("Arxivlangan nusxa". Arxivlandi asl nusxasi 2014-05-21. Olingan 2014-05-20.CS1 maint: nom sifatida arxivlangan nusxa (havola)).
  70. ^ Natuerlich! (1992-03-24). "GEMDOS-dan uzoqroq fayl nomlarini olish". comp.sys.atari.st.tech. Olingan 2014-05-05.
  71. ^ Torvalds, Linus (1992-12-23). "Uzun fayl nomlari". comp.os.minix. Olingan 2014-05-05.
  72. ^ "mount (8): fayl tizimini o'rnatish". Linux man sahifasi.

Tashqi havolalar