System plików API - File system API

Systemu plików API to interfejs programowania aplikacji , poprzez które w żadne narzędzie użytkownik zażąda usługi systemu plików. System operacyjny może dostarczyć abstrakcji dostępu do różnych systemów plików przejrzysty.

Niektóre API System plików może również zawierać interfejs dla operacji utrzymania, takie jak tworzenie i inicjalizacji systemu plików weryfikacji integralności systemu plików i defragmentacji .

Każdy system operacyjny zawiera API potrzebnych systemów plików obsługiwanych. Microsoft Windows posiada API dla systemu plików NTFS i kilku FAT systemów plików. Linux systemy mogą zawierać API dla ext2 , ext3 , ReiserFS oraz Btrfs , aby wymienić tylko kilka.

Historia

Niektóre wczesne systemy operacyjne były w stanie obsługiwać tylko taśmę i dysk systemów plików . Są pod warunkiem, że najbardziej podstawowe interfejsy z:

  • Pisać, czytać i pozycja

Bardziej koordynacji, takich jak przydzielanie urządzenia i dealokacji wymaga dodawania:

  • Otwarte i zamknięte

Jako systemy plików pod warunkiem więcej usług, więcej interfejsy zostały zdefiniowane:

  • zarządzania metadanymi
  • utrzymanie systemu plików

Jako dodatkowych typów systemów plików, hierarchii struktury i obsługiwanych wzrosła mediów, dodatkowe funkcje potrzebne pewne wyspecjalizowane funkcje:

Systemy wielu użytkowników wymaga API dla:

  • Dzielenie się
  • ograniczanie dostępu
  • Szyfrowanie

przeglądy API

Pisać, czytać i pozycja

Zapisywania danych użytkownika do systemu plików jest przeznaczone do użycia bezpośrednio przez program użytkownika lub biblioteki run-time. Biblioteka run-time dla niektórych języków programowania może dostarczyć Typ konwersji, formatowanie i blokowania. Niektóre systemy plików zapewnić identyfikację zapisów przez klucz i może obejmować ponownego pisania istniejącego rekordu. Ta operacja jest czasami nazywany PUTlub PUTX(jeśli istnieje zapis)

Odczyt danych użytkownika, czasami nazywany GET , może zawierać kierunku (do przodu lub do tyłu) lub w przypadku wpust systemu plików, określonego klucza. Podobnie jak w przypadku pisania bibliotek czasu wykonywania może wstawiać się za program użytkownika.

Pozycjonowanie obejmuje regulację położenia kolejnego rekordu. Może to obejmować pomijanie przodu lub do tyłu, a także umieszczenie na początku lub na końcu pliku.

Otwarte i zamknięte

Otwarte API może być wyraźnie zażądał lub niejawnie wywoływany po wydaniu pierwszej operacji w procesie na obiekcie. Może to spowodować, że montaż nośników wymiennych, nawiązywania połączenia z innym hostem i sprawdzenie lokalizacji i dostępności obiektu. Aktualizuje struktur systemowych, aby wskazać, że obiekt jest w użyciu.

Zwykłe wymagania dotyczące żąda dostępu do obiektu systemu plików to:

  1. Obiekt, który ma być dostępne (plik, katalog, media i położenie)
  2. Zamierzony rodzaj czynności, które należy przeprowadzić po open (czyta, aktualizacje, delecji)

Dodatkowe informacje mogą być konieczne, na przykład

  • hasło
  • stwierdzenie, że inne sposoby mogą uzyskać dostęp do tego samego przedmiotu podczas procesu otwierania jest przy użyciu obiektu (podział). To może zależeć od zamiarem innego procesu. W przeciwieństwie do oświadczenia, że ​​żaden inny proces może uzyskać dostęp do obiektu, niezależnie od innych procesów intencyjny (wyłącznego użytku).

Są one wymagane przez biblioteki języka programowania, który może zapewnić koordynację między modułami w procesie oprócz przekazania żądania do systemu plików.

Należy spodziewać się, że coś może pójść nie tak podczas przetwarzania otwarty.

  1. Obiekt lub intencją może być niewłaściwie określono (nazwa może zawierać niedopuszczalny charakter lub intencją jest nierozpoznany).
  2. Proces może być zabronione dostępu do obiektu (może być dostępny tylko dla określonej grupy lub użytkownika).
  3. System plików może nie być w stanie utworzyć lub zaktualizować struktur niezbędnych do koordynowania działań wśród użytkowników.
  4. W przypadku nowej (lub wymiany) obiektu, nie może być wystarczająca pojemność na nośniku.

W zależności od języka programowania, dodatkowe specyfikacje w otwarte mogą ustanowić moduły do obsługi tych warunków. Niektóre biblioteki określić moduł biblioteki do systemu plików umożliwiającego analizę należy program otwarcie będzie w stanie wykonywać żadnych sensownych działań w wyniku awarii. Na przykład, jeśli awaria jest na próbę otwarcia niezbędny plik wejściowy, jedyne działanie może być zgłosić awarię i przerwać program. Niektóre języki prostu wrócić kod wskazujący rodzaj awarii, które zawsze muszą być sprawdzane przez program, który decyduje co zgłosić i czy może on kontynuować.

Blisko może powodować demontaż lub wysuwanie nośników wymiennych i aktualizowania struktur bibliotecznych i systemu plików, aby wskazać, że obiekt nie jest już w użyciu. Minimalna opis odwołuje się do końca obiektu. Co więcej, niektóre systemy plików zapewnić określenie rozmieszczenie obiektu, który może wskazywać na przedmiot musi być odrzucone i nie jest częścią systemu plików. Podobny do otwarty, należy się spodziewać, że coś może się nie udać.

  1. W opisie przedmiotu może być nieprawidłowy.
  2. Może nie być wystarczające zdolności w mediach, aby zapisać wszelkie dane są buforowane lub do wyjścia strukturę wskazujący, że obiekt został pomyślnie zaktualizowany.
  3. Błąd urządzenie może wystąpić w mediach, gdzie obiekt jest przechowywany podczas pisania buforowane dane, strukturę zakończenia lub aktualizacji metadanych związanych z obiektem (na przykład czas ostatniego dostępu).
  4. Specyfikacja aby zwolnić przedmiot może kolidować z innymi procesami nadal używa obiektu.

Uwagi dotyczące obsługi awarii są podobne do tych z otwartym terenie.

zarządzania metadanymi

Informacja o danych w pliku jest nazywany metadanych.

Niektóre z metadanych jest utrzymywana przez system plików, na bieżąco przykład ostatniej modyfikacji (i różnych innych terminach, w zależności od systemu plików), położenie początku pliku, rozmiar pliku i jeżeli narzędzie kopii zapasowej systemu plików ma zapisane bieżącej wersji plików. Te elementy nie mogą zwykle być zmieniane przez program użytkownika.

Dodatkowe dane meta wspierane przez niektórych systemów plików mogą obejmować właściciela pliku, grupa, do której należy plik, a także uprawnień i / lub kontroli dostępu (tj Co dostępu i aktualizuje różne użytkownicy lub grupy mogą wykonywać), oraz czy plik jest zwykle widoczny, jeśli katalog jest na liście. Te elementy są zwykle modyfikowane przez narzędzia systemu plików, które mogą być wykonywane przez właściciela.

Niektóre aplikacje przechowywać więcej metadanych. W przypadku obrazów metadane mogą obejmować model aparatu i ustawienia, aby zrobić zdjęcie. Plików audio, dane meta może zawierać album, artysta, który nagrał nagrywanie i komentarze na temat nagrania, które mogą być specyficzne dla danej kopii pliku (tj różnych kopii tego samego nagrania mogą mieć różne komentarze aktualizować przez właściciela pliku). Dokumenty mogą zawierać elementy takie jak odprawy przez zatwierdzone po itp

zarządzanie katalog

Zmiana nazwy pliku, przenoszenia pliku (lub podkatalogu) z jednego katalogu do drugiego i usuwanie pliku to przykłady operacji zapewnienia przez system plików do zarządzania katalogami.

Operacje metadane, takie jak umożliwiające lub ograniczanie dostępu do katalogu przez różnych użytkowników lub grup użytkowników są zazwyczaj uwzględniane.

utrzymanie systemu plików

Jako system plików jest użyte katalogi, pliki i dokumenty mogą być dodawane, usuwane lub modyfikowane. To zazwyczaj powoduje nieefektywność w bazowych struktur danych. Rzeczy takie jak logicznie kolejnych bloków rozmieszczonych w mediach w sposób, który powoduje nadmierne repozycjonowanie, częściowo wykorzystane nawet pustych bloków zawarte w strukturach połączonych. Niekompletne struktury lub innych niezgodności może być spowodowane przez urządzenia lub nośnika błędów, niedostatecznego czasu pomiędzy zbliżającego utratą władzy i rzeczywistej straty energii, niewłaściwe zamknięcie systemu lub usunięcie nośnika, a w rzadkich systemem plików sytuacje kodowania.

Wyspecjalizowane procedury w systemie plików są uwzględniane w celu optymalizacji lub naprawy tych struktur. Nie są one zazwyczaj wywoływane przez użytkownika bezpośrednio, ale spowodowało wewnątrz samego systemu plików. Liczniki wewnętrzne liczby poziomów struktur, ilość wstawionych obiektów mogą być porównywane z progami. Mogą one spowodować dostępu użytkownika do być zawieszone do określonej struktury (zwykle do niezadowolenia użytkownika lub użytkowników dokonany) lub może być uruchomiony jako niski priorytet asynchroniczne zadań lub mogą zostać odroczone do czasu niskiej aktywności użytkownika. Czasami te procedury są wywoływane lub zaplanowane przez administratora systemu lub jak w przypadku defragmentacji .

Kernel-level API

API jest „kernel-level”, gdy jądro zapewnia nie tylko interfejs dla programistów systemów plików, ale także przestrzeń, w której kod plików przebywa.

Różni się on ze starego schematu, w który sama jądro wykorzystuje własne zaplecze rozmawiać z kierowcą plików i vice versa, a przeciwnie do jądra jest ten, który obsługuje układ systemu plików i system plików z jednej, że bezpośredni dostęp do sprzętu.

To nie jest najczystszym schemat ale rozwiązuje trudności głównych przepisać który ma starego systemu.

Z jądrami modułowych umożliwia dodanie systemów plików jak każdy moduł jądra, nawet tych osób trzecich. Z jądrami non-modułowych jednak wymaga to jądro rekompilacji z nowego kodu systemu plików (aw jąder zamknięty-source, to sprawia, że ​​system plików osoba trzecia niemożliwe).

Uniksy i uniksowe systemy takie jak Linux używali tego modułowego systemu.

Jest to odmiana tego schematu stosowanego w systemie MS-DOS (DOS 4.0 naprzód) i kompatybilne do wspierania systemów CD-ROM i plików w sieci. Zamiast dodawania kodu do jądra, jak w starym systemie, lub za pomocą obiektów jądra jak w schemacie oparty na jądrze, to wychwytuje wszystkie połączenia do pliku i określa, czy powinna ona zostać przekierowany do podobnej funkcji jądra lub jeśli ma być obsługiwane przez odpowiedni sterownik systemu plików, a kierowca plików „bezpośrednio” dostęp do zawartości dysku za pomocą niskiego poziomu BIOS funkcji.

API oparte kierowca

API jest „kierowca własnych” (nawet jako moduł jądra modułowej), gdy jądro zapewnia zaplecze ale kod systemu plików znajduje się całkowicie na zewnątrz jądra.

Jest to odkurzacz schemat jak kod systemu plików jest całkowicie niezależny, pozwala systemy plików mają być utworzone dla jąder zamkniętym źródłowych i internetowych dodatków systemie plików lub usunięć z systemu.

Przykłady tego programu są na Windows NT i OS / 2 odpowiednią IFSs .

Mieszane API jądra opartego kierowca

W tym API wszystkie systemy plików są w jądrze, jak w API oparty na jądrze, ale są one automatycznie uwięziony przez innego API, które jest oparte kierowca, przez system operacyjny.

Program ten został wykorzystany w Windows 3.1 dla zapewnienia systemu plików FAT sterownika w trybie chronionym 32-bitowym i buforowane (VFAT), która wyprowadziła sterownik DOS FAT w jądrze (MSDOS.SYS) całkowicie, a później w serii System Windows 9x ( 95 , 98 i Me ) do VFAT, ISO9660 sterownik systemu plików (wraz z Joliet), udziałów sieciowych i sterowników TRZECIĄ systemu plików, jak również dodanie do pierwotnego DOS Apis API LFN (czyli sterowniki IFS może nie tylko przechwytywać już API plików DOS ale istnieje również dodać nowe od wewnątrz 32-bitowym trybie chronionym wykonywalnego).

Jednak, że API nie został całkowicie udokumentowane, a osoby trzecie znalazły się w „zrób-to-sam” według scenariusza nawet gorzej niż z API oparty na jądrze.

Użytkownik przestrzeń API

API jest w przestrzeni użytkownika , gdy system plików nie ma bezpośredniego wykorzystania obiektów jądra, ale ma dostęp do dysków przy użyciu funkcji systemu operacyjnego na wysokim poziomie i zapewnia funkcje w bibliotece , że szereg narzędzi użyć, aby uzyskać dostęp do plików.

Funkcja ta jest przydatna do obsługi obrazów dysków.

Zaletą jest to, że system plików może być przenośny przez systemy operacyjne, jak na wysokim poziomie funkcji systemu operacyjnego, to zastosowania mogą być wspólne, jak ANSI C, ale wadą jest to, że API jest unikalny dla każdej aplikacji realizuje jeden.

Przykłady tego programu są hfsutils i adflib .

Współdziałania między między API systemu plików

Ponieważ wszystkie systemy plików (przynajmniej te dysku) muszą równoważne funkcje przewidziane przez jądro, możliwe jest łatwe portu kodu systemu plików z jednego interfejsu API do drugiego, nawet jeśli są one różnych typów.

Na przykład, kierowca ext2 dla OS / 2 jest po prostu otoki z Linux za VFS do OS / 2 za IFS i Linux za ext2 Kernel-based, a kierowca HFS for OS / 2 jest portem z hfsutils do OS / 2 w IFS. Istnieje również projekt, który używa sterownika Windows NT IFS wytwarzania NTFS działa pod Linuksem.

Zobacz też

Referencje

źródła

  • O'Reilly - Windows NT Wewnętrzne File System, Program Guide - By Rajeev Nagar - ISBN  1-56592-249-2
  • Microsoft Press - Inside Windows System NT File - Helen Custer - ISBN  1-55615-660-X
  • Wiley - UNIX Filesystems: Evolution, projektowanie i wdrażanie - Steve D. Pate - ISBN  0-471-16483-6
  • Microsoft Press - Inside Windows NT - Helen Custer - ISBN  1-55615-481-X

Linki zewnętrzne