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