Hlavní navigace

Vlákno názorů ke zprávičce Windows 11 budou nově moci formátovat FAT32 větší než 32 GB od srnec - FAT32 je dalsia sprostost ktora nemala vzniknut, spolu...

  • 19. 8. 2024 23:12

    srnec

    FAT32 je dalsia sprostost ktora nemala vzniknut, spolu s debilnym systemom VFAT na ukladanie LFN. Ten system je umelo okrypleny na 28 bitov, skutocnych 32b pouziva az exFat.

    https://wiki.osdev.org/FAT

  • 20. 8. 2024 0:07

    msmucr
    Bronzový podporovatel

    Tak zas vznik chce asi posuzovat v nějakém kontextu doby vzniku.
    NTFS řešilo zgruntu spoustu věcí mnohem líp (a to beru v potaz nejen FAT, ale i tehdejší stav ext2, FFS) a přišlo v r. 93, do pár let potom už to mělo v NT4 kompresi, ACL atp.
    Akorát bylo na spousty zařízení a použití v té době příliš heavy-handed, navíc bylo NTFS úplně uzavřené a svázané s jedním OS.
    FAT12/16+VFAT, resp. FAT32 byly uvedené jako implementačně jednodušší, kompatibilní přechodové varianty vhodné i pro výměnná zařízení atp. Zpětně se to může zdát jako nešťastný krok, ale u MS byla kompatibilita vždycky prioritou i když si do budoucna přidělali kouli na nohu (třeba v porovnání s relativně mnohem rychlejšími změnami u Apple).
    ExFAT přišel až o víc jak dekádu později, byl také patentovaný, a neměl volnou specifikaci až do roku 2019. Což jeho rozšíření upřímně vzato také moc nepomohlo.

    Navíc i přestože ExFAT řešil spousty nedostatku návrhu původní FAT, tak jsou tam pak také praktické věci, které nejsou úplně šťastné. U původního systému například spousta zařízení zapisovala FAT část paralelně dvakrát, takže při nějaké závadě povrchu, kdy byla ta první nečitelná na špatném sektoru, dalo se zkusit použít tu druhou a zvýšila se pravděpodobnost obnovy (bez pracné rekonstrukce souborů analýzou datové části). U ExFATu je sice také možnost mít dvě FATky, ale je to víceméně specifikací svázáno se subvariantou TexFAT (transakční), která se, co vím, používala jen na Windows CE. Prakticky jsem se s tím nesetkal a většinou se FAT zapisuje jen jednou.

    20. 8. 2024, 00:08 editováno autorem komentáře

  • 20. 8. 2024 23:28

    srnec

    Je to hlupost aj v kontexte doby, davno existovalo napr. HPFS (1989). Spatna kompatibilita nebola ziadna pretoze to malo ine Partition ID.

    Tu je zoznam toho kde sa dalo inspirovat.

  • 21. 8. 2024 8:55

    msmucr
    Bronzový podporovatel

    Omlouvám se, ale nejspíš jste špatně pochopil můj předchozí post.

    Oni v té době nedělali pokročilou náhradu FAT filesysému, to už bylo a jmenovalo se to NTFS. Btw. to HPFS z IBM OS/2 používali také, měli spolu deal, než se vyvinul Windows NT, které bylo HPFS poměrně dost inspirované. Dokonce NT 3.x mělo driver pro HPFS (a platili z toho licence IBM). NTFS byl pokročilejší filesystém než HPFS, měl žurnálování a byl připravené na postupné přidávání dalších vlastností, které přišly později (ACL, komprese, šifrování). Což byl i důvod, proč samo IBM mnohem později přidalo do OS/2 JFS, který byl původně jen v AIXu.

    Ale zpátky k FAT a kompatibilitě. Jak více, tak MS vyvíjel v devadesátých letech dvě větve svých OS. První bylo NT s novým kernelem, filesystémem a spoustou věcí řešených z gruntu jinak. Tam bylo hlavní kritérium udělat věcí líp a s výhledem do budoucna. Mělo to vyšší HW nároky, zpočátku se to primárně používalo na serverech a pracovních stanicích.

    Druhá vyvíjená větev systémů (95, 98, ME) byl takový schizofrenní hybrid. Protože tam byl pořád přítomen režim DOSu, v kterém byl dosupný real-mode a přímý přístup na hardware. Důvod byl ten, že za minulých 15 let se nasbíraly desítky tisíc aplikací a her, a dost z nich nechodilo dobře v režimu nových Windows s GUI, virtuální pamětí, schedulerem. Klienti a firmy chtěly tyhle aplikace používat, byla to i pro MS priorita u téhle větve.
    Když jste tedy ukončil Windows, nebo přerušil startovací process (klávesou F8, nebo direktivou v msdos.sys), tak jste byl v "normálním" DOSu (7.0 ve Win95 a 7.1 ve Win98).

    Logicky tedy i použitý souborový systém musel být schopen schopen fungovat v DOSu. Takže se rozhodli upravit, to co měli - FAT.
    Novou fíčuru - dlouhá jména tam přidali přes VFAT, kde má každý soubor pro adresář dva záznamy, přičemž první je s dlouhým názvem a druhý s krátkým názvem 8+3. Když implementace podporuje VFAT, tak se použije první záznam a následující se rovnou přeskočí. Pokud nepodporuje, tak první záznam ignoruje a použije se ten druhý. Díky tomu máte i soubory s dlouhými názvy zapsané třeba na disketu kompatibilní s ostatními počítači, kde není VFAT podporován.

    U té změny na 32(28)bit adresování šlo zas o to, že chtěli podporovat větší disky, ale zároveň udělat jen nejmenší změny v existujícím souborovém systému, při zachování jeho relativní jednoduchosti.
    Nemohly moc vzrůst paměťové nároky (v real-mode DOSu, kde má běžet i aplikace nemáte moc prostoru pro nějaké pokročilejší věci jako bitmapy, b-tree atp.). Také to samozřejmě bylo implementačně jednodušší, jak pro úpravu samotného DOSu 7.10, tak pro hromadu ostatních výrobců, kteří FAT32 také implementovali (resp. mohli jen s minimálním úsilím modifikovat jejich stávající kód pro FAT16).

    Ano s odstupem 30 let to samozřejmě svádí k nějakému absolutnímu srovnávání se všemi existujícími FS té doby, ale ten kontext je opravdu potřeba.