API systému souborů - File system API

Souborový systém API je rozhraní pro programování aplikací , přes který nástroj nebo uživatelský program požaduje služby souborového systému. Operační systém může poskytovat abstrakce pro transparentní přístup k různým souborovým systémům.

Některá rozhraní API systému souborů mohou také zahrnovat rozhraní pro operace údržby, jako je vytváření nebo inicializace systému souborů, ověřování integrity systému souborů a defragmentace .

Každý operační systém obsahuje rozhraní API potřebná pro systémy souborů, které podporuje. Microsoft Windows má souborový systém API pro NTFS a několik souborových systémů FAT . Systémy Linux mohou zahrnovat API pro ext2 , ext3 , ReiserFS a Btrfs, abychom jmenovali alespoň některé.

Dějiny

Některé dřívější operační systémy byly schopné zpracovat pouze systémy souborů na pásku a na disku . Ty poskytly nejzákladnější rozhraní s:

  • Psaní, čtení a umístění

Více koordinace, jako je přidělování zařízení a deallocation, vyžadovalo přidání:

  • Otevřete a zavřete

Protože souborové systémy poskytovaly více služeb, bylo definováno více rozhraní:

  • Správa metadat
  • Údržba systému souborů

Jak se zvýšily další typy souborových systémů, struktura hierarchie a podporovaná média, vyžadovaly další funkce některé specializované funkce:

Systémy pro více uživatelů vyžadují rozhraní API pro:

  • Sdílení
  • Omezení přístupu
  • Šifrování

Přehledy API

Psaní, čtení a umístění

Zápis uživatelských dat do systému souborů je poskytován pro použití přímo uživatelským programem nebo knihovnou run-time. Knihovna run-time pro některé programovací jazyky může poskytovat převod typů, formátování a blokování. Některé souborové systémy poskytují identifikaci záznamů pomocí klíče a mohou zahrnovat přepsání existujícího záznamu. Tato operace se někdy nazývá PUTnebo PUTX(pokud záznam existuje)

Čtení uživatelských dat, někdy nazývaných GET , může zahrnovat směr (vpřed nebo vzad) nebo v případě systému souborů s klíčem konkrétní klíč. Stejně jako při psaní run-time knihovny mohou přimlouvat za uživatelský program.

Pozice zahrnuje úpravu umístění dalšího záznamu. To může zahrnovat přeskakování vpřed nebo vzad, stejně jako umístění na začátek nebo konec souboru.

Otevřete a zavřete

Otevřené API může být výslovně požadováno nebo implicitně vyvolán na vydání první operaci pomocí procesu na objekt. Může to způsobit připojení vyměnitelného média, navázání připojení k jinému hostiteli a ověření umístění a přístupnosti objektu. Aktualizuje systémové struktury, aby indikoval, že je objekt používán.

Obvyklé požadavky na vyžádání přístupu k objektu systému souborů zahrnují:

  1. Objekt, ke kterému se má přistupovat (soubor, adresář, média a umístění)
  2. Zamýšlený typ operací, které mají být provedeny po otevření (čtení, aktualizace, odstranění)

Mohou být například nutné další informace

  • heslo
  • prohlášení, že ostatní procesy mohou přistupovat ke stejnému objektu, zatímco otevírací proces používá objekt (sdílení). To může záviset na záměru druhého procesu. Naproti tomu prohlášení, že žádný jiný proces nemůže přistupovat k objektu bez ohledu na záměr ostatních procesů (výhradní použití).

Ty jsou požadovány prostřednictvím knihovny programovacího jazyka, která může kromě předání požadavku do systému souborů poskytnout koordinaci mezi moduly v procesu.

Je třeba počítat s tím, že se během zpracování open může něco pokazit.

  1. Objekt nebo záměr mohou být nesprávně specifikovány (název může obsahovat nepřijatelný znak nebo záměr není rozpoznán).
  2. Procesu může být zakázán přístup k objektu (může být přístupný pouze skupině nebo konkrétnímu uživateli).
  3. Souborový systém nemusí být schopen vytvořit nebo aktualizovat struktury potřebné ke koordinaci činností mezi uživateli.
  4. V případě nového (nebo náhradního) objektu nemusí být na médiu dostatečná kapacita.

V závislosti na programovacím jazyce mohou další specifikace v otevřeném stavu zavést moduly pro zvládnutí těchto podmínek. Některé knihovny specifikují do systému souborů modul knihovny umožňující analýzu, pokud by otevírací program nebyl schopen provést žádnou smysluplnou akci v důsledku selhání. Pokud je například selhání při pokusu o otevření potřebného vstupního souboru, může být jedinou akcí hlášení chyby a přerušení programu. Některé jazyky jednoduše vrátí kód označující typ selhání, který musí vždy zkontrolovat program, který rozhodne, co má hlásit a zda může pokračovat.

Zavření může způsobit odpojení nebo vysunutí vyměnitelného média a aktualizaci struktur knihovny a systému souborů, což znamená, že objekt již není používán. Minimální specifikace zavřít odkazuje na objekt. Některé systémy souborů navíc poskytují specifikaci dispozice objektu, což může naznačovat, že objekt má být vyřazen a již nebude součástí systému souborů. Podobně jako na otevřeném prostoru je třeba počítat s tím, že se něco může pokazit.

  1. Specifikace objektu může být nesprávná.
  2. Na médiu nemusí být dostatečná kapacita pro uložení jakýchkoli dat ukládaných do vyrovnávací paměti nebo pro výstup struktury označující, že objekt byl úspěšně aktualizován.
  3. Může dojít k chybě zařízení na médiu, kde je objekt uložen při zápisu dat ve vyrovnávací paměti, struktuře dokončení nebo aktualizaci metadat souvisejících s objektem (například čas posledního přístupu).
  4. Specifikace k uvolnění objektu může být nekonzistentní s jinými procesy, které objekt stále používají.

Úvahy o zpracování poruchy jsou podobné těm z otevřeného hlediska.

Správa metadat

Informace o datech v souboru se nazývají metadata.

Některá metadata jsou udržována souborovým systémem, například datum poslední úpravy (a různá další data v závislosti na systému souborů), umístění začátku souboru, velikost souboru a pokud má zálohovací nástroj systému souborů uložil aktuální verzi souborů. Tyto položky obvykle uživatelský program nemůže změnit.

Mezi další metadata podporovaná některými systémy souborů mohou patřit vlastník souboru, skupina, do které soubor patří, a také oprávnění a / nebo řízení přístupu (tj. Jaký přístup a aktualizace mohou různí uživatelé nebo skupiny provádět) a zda soubor je obvykle viditelný, když je adresář uveden. Tyto položky lze obvykle upravit pomocí obslužných programů souborového systému, které může provést vlastník.

Některé aplikace ukládají více metadat. U obrázků mohou metadata zahrnovat model fotoaparátu a nastavení použitá k pořízení fotografie. U zvukových souborů mohou metadata zahrnovat album, umělce, který nahrávku zaznamenal, a komentáře k nahrávce, které mohou být specifické pro konkrétní kopii souboru (tj. Různé kopie stejné nahrávky mohou mít různé komentáře při aktualizaci vlastníkem) souboru). Dokumenty mohou obsahovat položky jako zkontrolováno, schváleno atd.

Správa adresářů

Přejmenování souboru, přesunutí souboru (nebo podadresáře) z jednoho adresáře do druhého a odstranění souboru jsou příklady operací, které poskytuje systém souborů pro správu adresářů.

Obvykle jsou zahrnuty operace metadat, jako je povolení nebo omezení přístupu k adresáři různým uživatelům nebo skupinám uživatelů.

Údržba souborového systému

Jako souborový systém se používají adresáře, soubory a záznamy lze přidávat, mazat nebo upravovat. To obvykle způsobí neefektivitu podkladových datových struktur. Věci jako logicky sekvenční bloky distribuované napříč médiem způsobem, který způsobuje nadměrné přemístění, částečně použité i prázdné bloky obsažené v propojených strukturách. Neúplné struktury nebo jiné nekonzistence mohou být způsobeny chybami zařízení nebo médií, neadekvátní dobou mezi detekcí hrozící ztráty energie a skutečnou ztrátou energie, nesprávným vypnutím systému nebo odstraněním médií a ve velmi vzácných případech chybami kódování systému souborů.

K optimalizaci nebo opravě těchto struktur jsou zahrnuty specializované rutiny v systému souborů. Obvykle nejsou vyvolány uživatelem přímo, ale spouštěny v samotném systému souborů. Interní čítače počtu úrovní struktur, počet vložených objektů lze porovnat s prahovými hodnotami. Mohou způsobit pozastavení přístupu uživatele ke konkrétní struktuře (obvykle k nelibosti uživatele nebo uskutečněných uživatelů) nebo mohou být spuštěny jako asynchronní úkoly s nízkou prioritou nebo mohou být odloženy na dobu nízké aktivity uživatele. Někdy jsou tyto rutiny vyvolány nebo naplánovány správcem systému nebo jako v případě defragmentace .

Rozhraní API na úrovni jádra

API je „na úrovni jádra“, když jádro poskytuje nejen rozhraní pro vývojáře souborových systémů, ale je také prostorem, ve kterém se nachází kód souborového systému.

Liší se starým schématem v tom, že samotné jádro používá vlastní zařízení pro komunikaci s ovladačem souborového systému a naopak, na rozdíl od jádra, které zpracovává rozložení souborového systému a souborového systému, který přímo přistupuje k hardwaru.

Není to nejčistší schéma, ale řeší obtíže velkého přepsání, které má staré schéma.

Díky modulárním jádrům umožňuje přidávání souborových systémů jako libovolných modulů jádra, a to i těch třetích. S nemodulárními jádry však vyžaduje překompilování jádra s novým kódem souborového systému (a v jádrech s uzavřeným zdrojovým kódem to znemožňuje souborový systém třetích stran).

Unixy a unixové systémy jako Linux používaly toto modulární schéma.

Existuje variace tohoto schématu používaného v systému MS-DOS (DOS 4.0 a novější) a kompatibilním s podporou CD-ROM a síťových souborových systémů. Namísto přidání kódu do jádra, jako ve starém schématu, nebo použití funkcí jádra jako v schématu založeném na jádře, zachycuje všechna volání do souboru a identifikuje, zda by měl být přesměrován na ekvivalentní funkci jádra, nebo jestli musí být zpracován konkrétním ovladačem souborového systému a ovladač souborového systému „přímo“ přistupuje k obsahu disku pomocí nízkoúrovňových funkcí systému BIOS .

Driver-based API

Rozhraní API je „založeno na ovladači“, když jádro poskytuje zařízení, ale kód systému souborů je umístěn zcela mimo jádro (ani jako modul modulárního jádra).

Je to čistší schéma, protože kód souborového systému je zcela nezávislý, umožňuje vytváření souborových systémů pro uzavřená jádra a online přidávání nebo odebírání souborových systémů ze systému.

Příklady tohoto schématu jsou Windows NT a OS / 2 příslušné IFS .

Smíšené rozhraní API založené na ovladači jádra

V tomto API jsou všechny souborové systémy v jádře, jako v API založených na jádře, ale jsou automaticky zachyceny jiným API, které je založeno na ovladači, operačním systémem.

Toto schéma bylo v systému Windows 3.1 použito k poskytnutí ovladače souborového systému FAT v 32bitovém chráněném režimu a do mezipaměti (VFAT), který úplně obešel ovladač DOS FAT v jádře (MSDOS.SYS), a později v řadě Windows 9x ( 95 , 98 a Me ) pro VFAT, ovladač souborového systému ISO9660 (spolu s Joliet), síťové sdílené složky a ovladače souborového systému třetích stran a také přidání k původním API systému DOS rozhraní LFN API (že ovladače IFS mohou nejen zachytit již existující API souborů DOS, ale také přidávat nová z spustitelného 32bitového chráněného režimu).

Toto API však nebylo úplně zdokumentováno a třetí strany se ocitly ve scénáři „make-it-by-yourself“ ještě horší než u API založených na jádře.

API uživatelského prostoru

Rozhraní API je v uživatelském prostoru, když souborový systém přímo nepoužívá vybavení jádra, ale přistupuje k diskům pomocí funkcí operačního systému na vysoké úrovni a poskytuje funkce v knihovně, které řada nástrojů používá pro přístup k souborovému systému.

To je užitečné pro zpracování obrazů disků.

Výhodou je, že souborový systém může být přenositelný mezi operačními systémy, protože funkce operačního systému na vysoké úrovni, které používá, mohou být stejně běžné jako ANSI C, nevýhodou však je, že API je jedinečné pro každou aplikaci, která jeden implementuje.

Příklady tohoto schématu jsou hfsutils a adflib .

Interoperabilita mezi API systému souborů

Protože všechny souborové systémy (přinejmenším diskové) vyžadují ekvivalentní funkce poskytované jádrem, je možné snadno přenést kód souborového systému z jednoho API do druhého, i když jsou různých typů.

Například ovladač ext2 pro OS / 2 je jednoduše obálka z VFS Linuxu na IFS OS / 2 a Linux založený na jádře ext2 a ovladač HFS pro OS / 2 je port hfsutils do OS / 2 je IFS. Existuje také projekt, který používá ovladač Windows NT IFS k tomu, aby NTFS fungoval pod Linuxem.

Viz také

Reference

Prameny

  • O'Reilly - Internals Windows NT File System, A Developer's Guide - Rajeev Nagar - ISBN  1-56592-249-2
  • Microsoft Press - Inside Windows NT File System - Helen Custer - ISBN  1-55615-660-X
  • Wiley - UNIX Filesystems: Evolution, Design, and Implementation - Steve D. Pate - ISBN  0-471-16483-6
  • Microsoft Press - Inside Windows NT - Autor: Helen Custer - ISBN  1-55615-481-X

externí odkazy