Budowa i zadania systemu MS-DOS.
I. BUDOWA SYSTEMU
Zasadniczy system operacyjny MS-DOS składa się z czterech programów:
- programu ładującego, umieszczanego przez program FORMAT na ścieżce zerowej strony zero w sektorze pierwszym dyskietki; na dysku twardym program umieszczany jest w pierwszym sektorze strefy (partycji) podstawowej dysku przeznaczonej dla systemu DOS;
- pliku IO.SYS, zawierającego wbudowane programy obsługi standardowych urządzeń, współpracujące z procedurami wejścia-wyjścia programu BIOS umieszczonego w pamięci stałej komputera;
- pliku MSDOS.SYS, zawierającego procedury realizujące zadania właściwego systemu operacyjnego (jądro systemu), m.in. zarządzania plikami, pamięcią, procesorami;
- pliku COMMAND.COM – interpretatora (procesora) poleceń systemu.
Pliki te muszą znajdować się na dysku, z którego następuje zainicjowanie systemu. Miejsce umieszczenia pierwszych dwóch programów jest ściśle określone. Dwa pierwsze pola katalogu głównego zawierają dane o plikach IO.SYS i MSDOS.SYS w podanej kolejności; IO.SYS zaczyna się w początkowych sektorach dysku przeznaczonych dla pliku.
Polecenia systemu DOS dzielą się na wewnętrzne i zewnętrzne. Te ostatnie są samodzielnymi programami, umieszczonymi w plikach z rozszerzeniem nazwy COM lub EXE (tzw. pliki wykonywalne). Polecenia zewnętrzne systemu stanowią podstawową grupę programów systemowych.
II. INICJACJA SYSTEMU.
Inicjacja systemu operacyjnego rozpoczyna się od próby załadowania przez BIOS programu ładującego z dyskietki znajdującej się w napędzie A lub z dysku twardego C, jeżeli w napędzie A nie ma dyskietki. Program ładujący sprawdza, czy na dysku znajdują się pliki IO.SYS i MSDOS.SYS; jeśli tak, to ładuje do pamięci operacyjnej program IO.SYS i przekazuję mu sterowanie. Program IO.SYS ma część inicjującą, która określa konfigurację systemu, inicjuje system dysków oraz układy wejścia-wyjścia, wpisuje część tablicy wektorów przerwań oraz ładuje MSDOS.SYS. Podczas tych operacji jest odczytywany, o ile znajduje się na dysku, i interpretowany plik CONFIG.SYS. Po zakończeniu działania części inicjującej IO przekazuje sterowanie do programu MSDOS. Program MSDOS inicjuje tablice robocze systemu, wpisuje pozostałą część tablicy wektorów przerwań i tworzy blok wstępny programu (PSP) dla programu COMMAND.COM, a następnie go ładuje.
Procesor poleceń COMMAND.COM składa się z trzech zasadniczych części. Części pierwsza i druga są ładowane do pamięci operacyjnej o najmniejszych dostępnych adresach (bezpośrednio za blokiem PSP przeznaczonym dla COMMAND.COM). Część trzecia jest ładowana do obszaru o największych adresach konwencjonalnej pamięci operacyjnej i jest tak zwaną częścią „zamazywalną”, która nie jest chroniona i może być zniszczona przez programy użytkowe.
Część pierwsza zawiera procedury obsługi przerwań 22H,23H i 24H oraz procedury ładujące część trzecią COMMAND.COM, jeżeli nastąpiło jej zniszczenie.
Część druga jest częścią inicjującą. Zawiera ona procesor pliku wsadowego AUTOEXEC.BAT oraz procedury określające najmniejszy adres segmentu, od którego mogą być ładowane programy użytkowe. Adres ten zostaje określony w ten sposób, że pierwszy program użytkowy jest ładowany na miejsce zajmowane przez niepotrzebną dalej, drugą część programu COMMAND.COM.
Część trzecia jest właściwym procesorem poleceń systemu. Zawiera ona procesor poleceń wewnętrznych, procesor plików wsadowych, procedury obsługi klawiatury, wyświetlania znacznika zgłoszenia systemu oraz procedury ładujące i inicjujące wykonanie programów (plików z rozszerzeniem nazwy COM i EXE), w tym poleceń zewnętrznych systemu.
System pozostawia możliwie duży obszar pamięci operacyjnej dla programów użytkowych. Po zakończeniu działania programu użytkowego system sprawdza, obliczając sumę kontrolną dla obszaru pamięci zajmowanego przez część „zamazywalną”, czy należy ponownie załadować część trzecią procesora poleceń.
III. ORGANIZACJA DYSKÓW
Przyjętą w systemie DOS wielkością sektora, dla wszystkich typów pamięci dyskowych, jest 512 bajtów. Część sektorów każdego dysku zajmują informacje systemowe, konieczne do zarządzania systemem plików; pozostałe sektory są przeznaczone dla plików użytkowych. Sektory systemowe są inicjowane podczas formatowania dysków za pomocą programu FORMAT.
Dyski twarde przed formatowaniem należy podzielić (poleceniem FDISK) na partycje. W wersjach systemu poprzedzających 3.30 zakładano, że dysk twardy może składać się z co najwyżej czterech partycji, z których jedna może być przeznaczona dla systemu DOS, a pozostałe dla innych systemów operacyjnych. W miarę pojawiania się dysków twardych o coraz większej pojemności, z uwagi na wbudowane w system (do wersji 3.30 włącznie) ograniczenie do 32 MB rozmiaru pojedynczego dysku (logicznego), powstała potrzeba organizowania wielu dysków logicznych na jednym dysku fizycznym. W tym celu w wersji 3.30 systemu wprowadzono nowy typ partycji, tzw. partycję rozszerzoną systemu DOS. Zatem na dysku twardym przeznaczonym dla systemu DOS może istnieć partycja podstawowa, stanowiąca w całości jeden dysk logiczny, oraz partycja rozszerzona. W partycji rozszerzonej można utworzyć do 23 dysków logicznych.
Dysk logiczny utworzony w partycji przeznaczonej dla systemu DOS nie różni się pod względem zawartych w nim informacji systemowych od dyskietki. W systemie DOS (na poziomie poleceń operatorskich) dyski logiczne są oznaczane kolejnymi literami alfabetu, przy czym oznaczenia A i B są przeznaczone dla dyskietek, natomiast C,D,E itd. dla dysków logicznych na dyskach twardych. System odwołując się do sektorów na dyskach (logicznych) posługuje się numerami logicznymi sektorów.
Podczas formatowania, w określonych sektorach dyskietek lub dysków logicznych w partycjach systemu DOS dysku twardego są umieszczane następujące informacje:
- rekord ładujący;
- tablica rozmieszczenia plików (FAT);
- kopia tablicy rozmieszczenia plików;
- katalogi plików.
III.1. TABLICA ROZMIESZCZENIA PLIKÓW FAT
Tablica rozmieszczenia plików tworzy „mapę” plików zapisanych na dysku. Miejsce na dysku jest przydzielane plikom w jednostkach nazywanych jednostką alokacji plików(JAP). Sposób określenia miejsca na dysku jest następujący.
W katalogu pliku jest wpisany początkowy numer JAP, określający logiczny numer sektora, w którym znajduje się początek pliku, i równocześnie miejsce w tablicy rozmieszczenia plików, w której jest wpisany numer kolejnej JAP. Numer we wskazanym miejscu tablicy rozmieszczenia plików wskazuje pierwszy sektor następnej części pliku i równocześnie położenie w tablicy FAT numeru następnej JAP. W ten sposób tworzy się łańcuch, określający położenie całego pliku. Jak widać pliki te muszą być umieszczone sekwencyjnie w kolejnych sektorach.
W wersjach 2.xx systemu DOS w tablicy rozmieszczenia plików są stosowane liczby 12-bitowe.zakres 0-4096 w zupełności wystarcza do określenia JAP na dyskietkach. Dla dysków twardych konieczne jest jednak zwiększenie jednostki alokacji plików do 4 KB lub 8 KB. Zwiększenie JAP powoduje nieoptymalne wykorzystanie dysku. Na przykład przy JAP równej 8 KB, jeżeli na dysku o pojemności 20 MB zapiszemy 1000 plików, to zakładając, że dla każdego pliku średnio 4 KB nie zostanie wykorzystane, otrzymujemy około 20 % straty pojemności dysku. W wersjach 3.xx systemu wprowadzono dla dysków logicznych o pojemności większych niż 10 MB tablicę FAT z liczbami 16-bitowymi. Umożliwia to efektywną obsługę dysków twardych. Rozmiar dysku logicznego (w tym strefy podstawowej) do wersji 3.30 systemu włącznie nie może przekraczać 32 MB, ponieważ system DOS obliczając logiczny numer sektora operuje 16-bitowymi liczbami całkowitymi. W wersji 5.00 oprócz 16-bitowych stosuje się również 32-bitowe numery logiczne sektorów.
III.2. KATALOGI PLIKÓW
Pliki w systemie DOS mogą być zorganizowane w drzewiastą strukturę katalogów. Każdy dysk ma tzw. katalog główny, który oprócz plików może zawierać podkatalogi. Te z kolei mogą zawierać następne podkatalogi itd.
Na katalog główny dysku jest przeznaczona określona dla danego typu dysku liczba sektorów (bezpośrednio za kopią tablicy FAT), a zatem katalog główny ma określoną, ograniczoną pojemność. Podkatalogi nie są ograniczone co do wielkości; są one zapisywane na dysku w sposób identyczny jak pliki użytkowe.