dysk fizyczny
BUDOWA FIZYCZNA DYSKU
Wewnątrz obudowy mieści się od jednego do kilku talerzy. Po obu stronach każdego z nich znajdują się ścieżki podzielone na sektory zawierające standardowo 512 bajtów. Liczba sektorów na ścieżce zależy zatem od odległości danej scieżki od środka dysku: im dalej w kierunku zewnętrznej krawędzi, tym więcej sektorów na ścieżce.
Zapisane na dysku informacje odczytywane są przez głowice umieszczone na ruchomym ramieniu. Te ścieżki, które można odczytać bez potrzeby przemieszczenia ramienia z głowicami, tworzą jeden cylinder. Cylindry, głowice i sektory zostały ponumerowane, aby łatwo odwoływać się do konkretnego miejsca (standard C/H/S; cylindry i głowice numerowane są od 0, sektory od 1).
Pierwszy sektor na każdym dysku (CHS=001) to MBR (sektor bootujący). MBR składa się z dwóch części: umieszczonego na początku kodu wykonywalnego i tablicy partycji. MBR kończy się sygnaturą 55 AA (takie są dwa ostatnie bajty).
Kod wykonywalny, inaczej IPL (Initial Program Loader) lub bootstrap, ładowany jest do pamięci RAM i uruchamiany podczas startu komputera. W samym kodzie znajdziemy program odpowiedzialny za odnalezienie i odczytanie tablicy partycji oraz określenie, która partycja jest aktywna - czyli z której powinien być uruchamiany system operacyjny. Kod wykonywalny zajmuje około 400 początkowych bajtów MBR. Musi się kończyć najpóźniej na bajcie nr 445.
Tablica partycji złożona jest z czterech rekordów o długości 16 bajtów każdy. W rekordach może być zapisana informacja maksymalnie o czterech partycjach podstawowych (albo o maksymalnie trzech partcjach podstawowych i jednej rozszerzonej). Każdy rekord ma następującą strukturę:
- pierwszy bajt określa stan partycji (aktywna to 80, nieaktywna to 00)
- trzy bajty (nr 2, 3, 4) to adres początkowy w formacie CHS
- piąty bajt to identyfikator (ID), który określa typ partycji (FAT, NTFS, ext2, itp.)
- trzy następne bajty (nr 6, 7, 8) to adres końcowy w formacie CHS
- cztery bajty (nr 9, 10, 11) to podana w sektorach odległość między początkiem dysku a początkiem partycji
- ostatnie cztery bajty to rozmiar partycji, określany jako liczba zajmowanych (alokowanych) przez nią sektorów.
Jeżeli na dysku znajduje się partycja rozszerzona, to zawiera ona kolejną tablicę partycji i informację o dyskach logicznych.
BUDOWA LOGICZNA DYSKU
Zanim zainstalujemy system operacyjny na nowym komputerze, musimy przygotować dyski twarde. Proces ten polega na podzieleniu dysku fizycznego na partycje i ich sformatowaniu. Typowy duży dysk twardy jest podzielony na jedną partycję podstawową (primary) i jedną rozszerzoną (extended), ta ostatnia zaś może się składać z kilku dysków logicznych. Dodatkowy fizyczny dysk twardy, na którym nie będzie instalowany żaden system operacyjny, może zawierać jedynie partycję rozszerzoną podzieloną na dyski logiczne.
Do tworzenia i zmian partycji służy program FDISK. Pozwala on wybrać wielkość i typ partycji. Ustawia się też która partycja podstawowa na dysku jest aktywna. Każda partycja dyskowa ma swoj wpis w tablicy partycji. W tablicy tej oprócz dokładnych adresów początku i końca partycji (numery cylindra, głowicy i sektora) zapisany jest jej identyfikator (ID). Na podstawie tego numeru system operacyjny jest w stanie określić, czy będzie potrafił odwoływać się do danej partycji.
Korzystając z programu FIPS do podziału partycji, z jednej partycji podstawowej możemy uzyskać do czterech partycji podstawowych. Jest to nieoficjalna możliwosc w DOS-ie. Przydaje się to pod Linuksem, gdy chcemy mieć Windows na pierwszej partycji podstawowej, LILO na partycji podstawowej typu Linux native, a trzecią partycję podstawową typu Linux swap.
Na partycji extended można utworzyć wiele dysków logicznych. Na początku każdego dysku logicznego znajduje się odpowiednik MBR - EMBR (Extended MBR), który zawiera adresy poczatku i konca dysku logicznego.
LICZBA I ROZMIAR KLASTRÓW W SYSTEMACH PLIKOW FAT
FAT12 FAT16,VFAT FAT32 Rozmiar wpisu w tablicy FAT 12 bitów 16 bitów 28 bitów Max liczba klastrow na partycji 2^12 2^16 2^28 Min rozmiar klastra 512 B 2 KB 4 KB Max rozmiar klastra 4 KB 32 KB 32 KB Max rozmiar partycji 16 MB 2 GB 2 TB
Rozmiar partycji | Klaster w: FAT16 FAT32 do 128 MB 2 KB --- do 256 MB 4 KB --- do 512 MB 8 KB --- do 1 GB 16 KB 4 KB do 2 GB 32 KB 4 KB do 4 GB 64 KB (NT) 4 KB do 8 GB --- 4 KB do 16 GB --- 8 KB do 32 GB --- 16 KB ponad 32 GB --- 32 KB
FAT16 to 16-bitowa tablica alokacji plików. Nośnik z systemem FAT16 składa się
- z części systemowej: MBR, dwie kopie tablicy alokacji plików i katalog główny dysku (zawiera nazwy plików oraz informacje o ich wielkości i pierwszym zajmowanym klastrze; maksymalnie może mieć zapisane 512 obiektów)
- części przeznaczonej na dane użytkownika - tu są też informacje o podkatalogach, atrybutach.
MBR (sektor bootujący) zawiera informacje potrzebne do uruchomienia zainstalowanego systemu operacyjnego. FAT to tablica zawierająca informacje łączącą dowolny plik zapisywany przez system operacyjny z jego fizycznym położeniem na dysku. FAT zawiera listę wszystkich plików i folderów oraz adresy kolejnych klastrów używanych przez dany obiekt. W ostatnim klastrze jako adres "następnego" (nie istniejącego) klastra zapisywana jest wartość 0xFFFF. Długość numeru klastra wynosi 16 bitów. Stąd liczba różnych numerów wynosi 2^16 = 65536 i tyle może być klastrów w systemie. Wpis w FAT zajmuje dwa bajty (to wynika z długości numeru). Stąd można oszacować wielkość tablicy alokacji FAT16 na 2^16 * 2 B = 2^17 B = 128 KB.
PRZYKŁAD: szukanie pliku. System zaczyna poszukiwania w katalogu głównym (w części systemowej nośnika). Tu odnajduje adres pierwszego klastra pliku. Adres ten jest jednocześnie wskaźnikiem do FAT. W miejscu wskazanym przez wskaźnik jest adres kolejnego klastra, a zarazem nowy wskaźnik do FAT. Wartość 0xFFFF oznacza, ze odczytano ostatni fragment pliku.
VFAT
VFAT pojawił się w Windows 95. Cechy:
- partycje o rozmiarach do 2 GB
- dyski twarde mogą mieć więcej niż 1024 cylindry
- długość nazwy pliku lub folderu zwiększono do 254 znakow
FAT32
FAT32 to 32-bitowa tablica alokacji plikow. FAT32 pojawił się w Windows 95 OSR2 (OEM Servise Release 2) i jest dostępny w Windows 98. Długość numeru klastra wynosi 28 bitów (4 bity są zarezerwowane). Stąd liczba różnych numerów wynosi 2^28. Wpis w FAT zajmuje cztery bajty. FAT może mieć więcej wpisów. MBR zajmuje dwa sektory fizyczne na dysku. Zawartość katalogu głównego nie jest zapamietana w części systemowej dysku, ale w części na dane, jak dla każdego innego katalogu. Stąd nie ma ograniczenia na 512 obiektów w katalogu głównym.
STRUKTURA PLIKÓW
Sformatowane dyski logiczne są dzielone na jednostki alokacji zwane klastrami. W zależności od rozmiaru dysku klastry mają rożną wielkość. Najmniejszy mieści jeden sektor (sektor ma zawsze 512 bajtów, ale tak małe klastry są tylko w FAT12). Liczba sektorów w klastrze jest przechowywana w systemie FAT16 przez system operacyjny w postaci jednego bajtu. Liczba ta musiała być mniejsza od 256 i musiała stanowić potęgę dwójki. W ten sposób największy możliwy do skonstruowania klaster mógł mieć 128 sektorow, co daje 128 * 512 B = 64 KB. Tak duży klaster może być w Windows NT. Daje to maksymalny rozmiar partycji 2^16 * 64 KB = 4 GB.
Dla klasycznego FAT16 maksymalny klaster zawiera 64 sektory i ma wielkosc 32 KB. Dyski w systemie FAT16 mogą zawierać 65536 (2^16) klastrów, co daje maksymalną pojemność dysku logicznego około 2 GB (2^16 * 32 KB = 2^16 * 2^5 * 2^10 B = 2^31 B = 2 GB).
Dyski w systemie FAT32 mogą zawierać 2^28 klastrów. Minimalna wielkość klastra dla FAT32 to 4 KB. Maksymalna wielkość partycji z FAT32 to 2 TB (2^41 B). NIE ROZUMIEM DLACZEGO. Jeżeli jeden klaster ma 32 KB, to dostajemy pojemność dysku 2^28 * 32 KB = 2^28 * 2^15 B = 2^43 B = 8 TB, a nie 2 TB.
KOMBINACJA OGRANICZEŃ: BIOS I IDE
PARAMETR BIOS IDE Ograniczenie Max liczba cylindrów 1024 65536=2^16 1024 Max liczba głowic 256 16 16 Max liczba sektorów 63 256 63 Max pojemność 8 GB 128 GB 504 MB
BARIERY POJEMNOŚCI DLA DYSKÓW TWARDYCH
- OGRANICZENIE: 504 MB dla standardowych dysków IDE/ATA.
PRZYCZYNA: BIOS potrafi zaadresować tylko 1024 cylindrów na dysku. 2^10 (C) * 2^4 (H) * 63 (S) * 512 B = 504 MB (w przybliżeniu 2^10*2^4*2^6*2^9 = 2^29)
ROZWIĄZANIE: upgrade BIOS-u lub zastosowanie nakładki software'rowej. - OGRANICZENIE: 2016 MB (1,97 GB).
PRZYCZYNA: niektóre BIOS-y pozwalają adresować tylko 4096 cylindrów. 2^12 (C) * 2^4 (H) * 63 (S) * 512 B = 2016 MB (w przybliżeniu 2^12*2^4*2^6*2^9 = 2^31
ROZWIĄZANIE: upgrade BIOS-u lub zastosowanie nakładki software'rowej. - OGRANICZENIE: 2 GB.
PRZYCZYNA: rozmiar klastrów w FAT16 może być maksymalnie 32 KB pod DOS, Windows 3.1x i 95.
ROZWIĄZANIE: duży dysk trzeba podzielić na partycje i co najmniej na dwa napędy logiczne. - OGRANICZENIE: 8 GB.
PRZYCZYNA: ograniczenia BIOS-u co do sposobu adresowania; funkcja obsługi przerwania Int 13H zapewnia dostęp do 16383 cylindrów (2^14 - 1), 16 głowic (2^4), 63 sektorów (2^6 - 1) zawierających klastry po 512 bajtów; adres miejsca na dysku jest przekazywany za pośrednictwem 24 bitów w konwencji CSH (cylinder-head-sector); można policzyć w przyblizeniu 2^24 * 512 B = 2^33 B = 8 GB.
ROZWIĄZANIE: wprowadzono w BIOS-ie nową metodę adresowania LBA; metoda ta przesyła pojedyńcze adresy długosci 28 bitów, co daje dostęp do danych o pojemności około 126 GB; można policzyć w przybliżeniu 2^28 * 512 B = 2^37 B = 128 GB; należy więc wymienić BIOS lub wykorzystać program wspomagający adresowanie, np. DiscWizard lub OnTrack Disk Manager.TRANSLACJA W BIOS-IE: ROZMIARY PARTYCJI I ILOŚCI BITÓW W ADRESIE
Liczba adresowanych cylindrów 1024 2048 4096 8192 16384 --- Bity wymagane do zaadresowania 10 11 12 13 14 --- cylindrów Liczna adresowanych głowic 16 16 16 16 16 --- Liczba cylindrow po translacji 1024 1024 1024 1024 1024 65536 Liczba głowic po translacji 16 32 64 128 256 256 Maksymalna pojemność 504MB 1008MB 2016MB 4032MB 8064MB 128GB Bity wymagane przez LBA CHS* 21 22 23 24 28