system FAT12
Transkrypt
system FAT12
Instrukcja laboratoryjna Systemy operacyjne sem. 1 Ćwiczenie szóste (3 zajęcia) Temat: System plików FAT12 Opracował: mgr inż. Arkadiusz Chrobot 1. Wstęp Jedną z najprostszych wersji nośnika magnetycznego o swobodnym dostępie jest dyskietka. Informacje na niej przechowywane są w sektorach o pojemności 512 bajtów każdy. Sektory są zorganizowane w ścieżki, które mają postać okręgów. Ścieżki są koncentrycznie ułożone po obu stronach elastycznego dysku1. Aby więc znaleźć jakiś dane na dyskietce należy podać trzy współrzędne: numer sektora na ścieżce, numer ścieżki na stronie i numer głowicy obsługującej stronę. Większość systemów operacyjnych tworzy abstrakcyjną strukturę zwaną systemem plików, której zadaniem jest ułatwienie zarządzania i posługiwania się informacjami zapisanymi na dyskietce. W przypadku systemu DOS jest to system FAT12. Jego działanie jest oparte o tablicę alokacji plików (ang. file allocation table). W pierwszym sektorze dyskietki (oprócz programu ładującego) znajduje się MBR (ang. Master Boot Record) – rekord zawierający informacje o organizacji logicznej nośnika, takie jak: wielkość sektorów w bajtach, liczba sektorów na ścieżce, maksymalna liczba plików w katalogu głównym, liczba sektorów zajmowanych przez tablicę alokacji pliku, liczba kopii tablicy alokacji i inne. Za MBR znajdują się tablice alokacji pliku. Sektory fizyczne mają dwie wady: aby zaadresować jeden z nich należy podać trzy liczby, dodatkowo mają one małą pojemność. System DOS stosuje więc większe jednostki, nazywane Jednostkami Alokacji Pliku (JAP) lub klastrami (od angielskiego: cluster). Powstają one z połączenia kilku sektorów w jedną całość. W przypadku FAT12 jednostka alokacji pliku odpowiada dokładnie rozmiarowi jednego sektora, bo łączenie sektorów nie jest opłacalne, ze względu na pojemność dyskietki. Aby uniknąć skomplikowanego adresowania system stosuje linearyzację, czyli przeliczanie zestawu trzech współrzędnych na jedną. Indeksy tablicy alokacji plików są właśnie liniowymi numerami każdej z jednostek alokacji, natomiast elementy zawierają numery liniowe kolejnych jednostek alokacji należących do pliku lub informacje o bieżącej jednostce (wolna, uszkodzona, ostatnia z należących do pliku). Załóżmy, że pewien plik jest umieszczony w następujących klastrach: 8, 12, 17, 24. W tablicy alokacji plików, pod indeksem 8 będzie zapisana wartość 12, pod indeksem 12 wartość 17, pod 17 wartość 24, a pod 24 będzie wartość oznaczająca ostatnią jednostkę przydzieloną plikowi. W systemie FAT12 zdefiniowano również wartości specjalne określające np. jednostkę uszkodzoną. Należy pamiętać, że zarówno wartości, jaki i indeksy w tej tablicy są dwunastobitowe2 i należy je odczytywać w następujący sposób: 1 Ścieżki znajdujące się w tym samym miejscu, ale po przeciwnych stronach dyskietki tworzą cylinder. 2 Stąd liczba 12 w nazwie systemu plików. Oprócz niego istnieją również inne jak np.: FAT16, 2 Pomnóż numer JAP przez 1,5. Część całkowita określa numer bajta od początku FAT zawierającego numer kolejnej JAP. Odczytaj wskazany i następny bajt. Zamień kolejność tych bajtów. Jeśli ostatni numer JAP był parzysty to weź 12 mniej znaczących bitów otrzymanego w poprzednim kroku słowa, w przeciwnym przypadku, 12 najbardziej znaczących bitów. Tak otrzymana liczba wskazuje numer kolejnej JAP. Za tablicami FAT znajduje się obszar katalogu głównego dyskietki (korzenia). Każda pozycja tego katalogu jest strukturą zawierającą nazwę pliku wraz z rozszerzeniem, jego atrybuty, czas i datę jego utworzenia lub aktualizacji, numer pierwszej JAP przydzielonej plikowi, oraz rozmiar pliku. Czas przeliczony jest według następującego wzoru: czas = godziny * 2048 + minuty * 32 + sekundy/2, natomiast data jest otrzymywana poprzez przekształcenie: data = (rok-1980)*512 + miesiąc*32 + dzień. Więcej informacji o systemie FAT12 i obsłudze napędu dyskietek można znaleźć w rozdziałach 3 i 15 książki „DOS 5 od środka”. Uwaga: Należy posłużyć się formatem MBR dla systemu DOS w wersji 5.00, a nie 3.30. 2. Zadania Na każdych zajęciach należy rozwiązać co najmniej jedno zadanie. Uwaga, we wszystkich programach należy użyć przerwań BIOSu do odczytu zawartości dyskietki i pamiętać o obsłudze wyjątków. Proszę przynieść własne dyskietki. 1. [4 punkty] Napisz program, który odczyta zawartość MBR i wyświetli na ekran takie informacje, jak: wielkość sektora w bajtach, liczba sektorów w JAP, liczba kopii tablicy FAT, maksymalna liczba plików w katalogu głównym, liczba sektorów zajętych przez tablicę FAT, liczba stron dysku, liczba sektorów na ścieżce. FAT32. 3 2. [4 punktów] Korzystając z informacji dostarczonych przez poprzedni program napisz program, który wyświetli mapę dyskietki na ekranie, tzn. barwnymi znakami opisze które jednostki alokacji są zajęte, które puste, a które uszkodzone. 3. [4 punkty] Napisz program, który wyświetli na ekran zawartość katalogu głównego dyskietki, tzn. każdą pozycję opisującą plik, wraz ze wszystkimi zawartymi w niej informacjami – datę i godzinę należy przeliczyć na wartości zrozumiałe przez człowieka. 4