System Operacyjny Cz. 2

Miesiąc temu rozpoczęliśmy wielką wędrówkę w czasie, aby przyjrzeć sie powstaniu i rozwojowi systemów operacyjnych. Doszliśmy do etapu, gdy program zarządzający praca maszyny stał sie niezbędny. Jego zadanie to przyjmowanie od użytkownika poleceń wydawanych w jakimś, ogólnie mówiąc, cywilizowanym języku i ich wykonywanie. Chodzi oczywiście o polecenia sterujące praca maszyny, a wiec np. załaduj program do pamięci, wykonaj program, prześlij dane na drukarkę, itd.

Zauważmy, że takie właśnie funkcje są dostępne na prostych mikrokomputerach, choć na ogół nie w formie wyodrębnionego programu, lecz dołączone do interpretera BASIC-a. Widać tu również sygnalizowany już fakt wydzielenia na system części zasobów — pamięć ROM, zawierająca interpreter a wraz z nim system, zajmuje część przestrzeni adresowej procesora, a więc pomniejsza obszar pamięci maszyny dostępnej dla programów.

Wracamy do historii. Taśma magnetyczna to funkcjonalny odpowiednik perforowanej taśmy papierowej.- Jest oczywiście kilka różnic — magnetyczna jest szybsza, pojemniejsza, dużo pewniejsza w działaniu, mniej podatna na zniszczenie, nawet oszczędniejsza — można ją wykorzystywać, tzn. nagrywać i kasować, wielokrotnie. Co więc decyduje o tym, że wrzucamy obie do wspólnego worka? Jedna zasadnicza cecha: w obu przypadkach dostęp do zapisanych informacji jest sekwencyjny. To znaczy, że aby przeczytać coś co jest zapisane na końcu, muszę najpierw przejść przez wszystko, co było zapisane uprzednio. Natomiast nowe informacje muszę dopisywać na końcu — nie wolno tego zrobić w środku istniejącego zapisu. Oczywiście spowalnia to bardzo dostęp do danych. Może nie dla wszystkich zadań — są zadania doskonale pasujące do pamięci sekwencyjnej. Jednak dla bardzo wielu ważnych poważnych zastosowań dostęp sekwencyjny jest niewiarygodnie wprost nieekonomiczny. Musiały więc powstać pamięci o innym sposobie dostępu. I oczywiście powstały, doskonale znanym przykładem jest pamięć na dyskach elastycznych (dyskietkach). Dają one tzw. bezpośredni dostęp do danych — w uproszczeniu można powiedzieć, że czas dostępu do każdego fragmentu danych jest taki sam, nie zależy od położenia tegoż fragmentu*. Przykładem takiej pamięci jest również pamięć operacyjna komputera.

NOWE MOŻLIWOŚCI - NOWE KŁOPOTY

Do budowy nowych pamięci wykorzystywano walce (pamięć bębnowa) lub dyski pokryte substancją magnetyczną. Żeby na takim nośniku zapisać swoje dane muszę wiedzieć gdzie (pod jakimi-adresami**) jest jeszcze wolne miejsce, żeby zapisane dane móc później odczytać muszę zapamiętywać adresy podczas zapisu. Ponieważ grzebanie się w fizycznych adresach pamięci dyskowej jest dla człowieka żmudne i mało efektywne, więc wszyscy już chyba zgadują, że system operacyjny dostaje nową robotę. Do tej pory miał tylko pilnować maszyny, teraz będzie musiał również opiekować się naszymi danymi.

Żeby jakiekolwiek zadanie mogło być wykonane, trzeba je najpierw przekazać wykonawcy. Jak mogło by to wyglądać w tym przypadku. Może: „odczytaj z dysku program, który ostatnio zapisaliśmy w lewym górnym rogu”. Pomysł chyba nie rewelacyjny, bo nie wszystkie dyski mają rogi, poza tym naszym zamiarem było zwalić na system zajmowanie się szczegółami technicznymi, a więc nic nie chcemy wiedzieć o rozmieszczaniu danych. Więc może: „odczytaj mi ten program, cośmy zapisali w zeszły czwartek”. Też nie najlepiej, bo to i długo, i w czwartek zapisaliśmy 4 programy, więc trzeba by podawać również dokładną godzinę zapisu. Zdecydowanie potrzebne jest nam coś innego.

Rozwiązanie jest następujące: umawiamy się, że informacje będą zawsze przekazywane porcjami. Każdej porcji nadamy nazwę, jedyną i niepowtarzalną, czyli nazwa ta stanie się jednoznacznym identyfikatorem tej porcji informacji. Dzięki temu, podając tę nazwę jednoznacznie określamy systemowi operacyjnemu o co nam chodzi. Oczywiście musi on prowadzić aktualny spis wszystkich porcji, które ma na swoich dyskach. Spis ten zwykle nazywamy kartoteką, (ang. directory), zaś na porcję informacji mówimy zbiór lub plik (ang. file).

Minimum informacji, które musi znaleźć się w kartotece to nazwa zbioru, oraz adresy fizyczne, pod którymi zapisana jest zawartość (treść) zbioru. Dodatkowo można tam spotkać np. datę i godzinę założenia zbioru, jego typ, itp.

JEGO WYSOKOŚĆ ZBIÓR

Teraz uwaga, koncepcja zbioru jest podstawą praktycznej eksploatacji komputerów do dnia dzisiejszego. Pozwala przejść ze świata pojęć, na których operuje człowiek, do świata zer i jedynek maszyny w sposób w miarę bezboles- ny. Dla nas jednostką informacji jest np. tekst programu, dla maszyny taką jednostką jest fizyczny sektor na dyskietce Polecamy systemowi zapisać program w zbiorze o dowolnej nazwie np. PROGR. a on sam wybiera i przydziela odpowiednie, wolne fragmenty dysku, zapisuje na nich znaki tworzące program i zapamiętuje odpowiednie dane w kartotece. Tak to wygląda technicznie, w praktyce zaś nie pamiętamy o tych szczegółach technicznych — wydajemy polecenie zapisania i koniec, mamy zbiór, powiedzmy o nazwie PROGR. Jeśli teraz zechcemy przepisać program na inną dyskietkę, wydamy polecenie „skopiuj zbiór”, jeśli zechcemy się go pozbyć, wydamy polecenie „usuń zbiór”. Powtarzam raz jeszcze: zbiór jest w tej chwili podstawowym pojęciem podczas współpracy człowieka z maszyną.

Być może już zauważyliście, że wiję się jak piskorz, aby zamiast słowa dane używać słowa informacja. Powód jest oardzo prosty: w zbiorze możemy umieścić wszystko: program źródłowy, jego przetłumaczoną wersję binarną, dane, wyniki, tekst stworzony pod edytorem itd. Dzięki temu np. kopiowanie z dyskietki na dyskietkę, odbywa się zawsze taką samą komendą, czyli „kopiuj zbiór”, niezależnie od tego jaka treść jest kopiowana.

Zatrzymajmy się jeszcze przez chwilę przy terminologii Angielskie słowo file było tłumaczone na polski na wiele sposobów, ostatecznie największą popularność zdobyły: zbiór (nie mylić z pojęciem zbioru występującym w matematyce, ani z występującym w języku Pascal zbiorem elementów (ang. set)), oraz plik (nie jest to oczywiście plik czegoś, np. papierów). Można spotkać się z tłumaczeniem „file” na „kartoteka”***, wtedy tylko z kontekstu możemy zorientować się, że chodzi o zbiór, a nie o kartotekę zbiorów zapisanych na urządzeniu.

Często zdarza się tak, że kartoteki zbiorów, którymi zarządza system operacyjny są bardzo rozbudowane. Także funkcji wykonywanych na zbiorach jest dużo więcej niż zdążyłem zasygnalizować. Dlatego też, często mówimy nie o pojedynczych zbiorach lecz o systemie plików (zbiorów). Jednak jego szczegółowe omówienie musimy odłożyć na inną okazję, gdyż mamy śledzić dalsze losy systemu operacyjnego.

Oczywiście jest, że wzrost wymagań musiał spowodować rozbudowę systemu, a więc także wzrost jego komplikacji i ilości zajmowanego miejsca.

Tak się jednak szczęśliwie złożyło, że dzięki tym samym urządzeniom, które spowodowały wzrost wymagań, system zyskał możliwość rozbudowy, niezbędnej dla sprostania tym wymaganiom. Może trzymać część swoich, rzadziej używanych, podprogramów (część siebie) na dysku czy bębnie, i w razie potrzeby szybko ściągać je do pamięci operacyjnej.

Więc znowu było doskonale, ale już wkrótce błogi spokój zaczęły przerywać niemiłe zgrzyty.

TAŃCOWAŁY DWA MICHAŁY

Pamiętamy wszyscy, że jak ten duży zaczął krążyć, to ten mały nie mógł zdążyć. Procesor komputera osiągnął prędkości wielokrotnie przewyższające prędkości urządzeń służących do wprowadzania i wyprowadzania danych (tzw. urządzeń wejścia/wyjścia). Przyczyna była bardzo prosta: w dziedzinie elektroniki obserwujemy szalony postęp, stałe zwiększenie szybkości pracy układów (oczywiście także ich miniaturyzację). Natomiast w układach mechanicznych pewne progi ogromnie trudno przekroczyć. A czytniki czy drukarki, to przede wszystkim mechanika.

Co można zrobić w takiej sytuacji? Procesor powinien komunikować się z urządzeniami, które są możliwie jak najszybsze, a więc np. z pamięciami dyskowymi. Z nich pobierać dane, na nich zapisywać wyniki. Natomiast dane na dysku muszą być przygotowane zawczasu. W uproszczeniu może to wyglądać tak: wszystko co trzeba wczytać z kart dla policzenia jednego zadania jest wczytane i umieszczone w zbiorze dyskowym. Procesor rozpoczyna obróbkę zadania odwołując się tylko do dysku, a wyniki zamiast na drukarkę wysyła też na dysk. Takie podejście stwarza jednak nowe problemy, którymi zajmiemy się za miesiąc.

 

*) W przypadku taśmy najbardziej nam przeszkadzało właśnie to, że jak byśmy jej nie ustawili, to zawsze któreś dane będą daleko — trzeba będzie na nie długo czekać.

**) Cała powierzchnia dysku podzielona jest na fragmenty, aby można było się do tych fragmentów odwoływać każdy z nich musi mieć jakiś jednoznaczny identyfikator, pozwalający odróżnić go od innych. Tym identyfikatorem jest adres fizyczny fragmentu określający jego dokładne położenie na nośniku.

***) Słowo „file” w swoim pierwotnym, używanym w tradycyjnym biurze, znaczeniu to właśnie kartoteka dokumentów.

Andrzej Pilaszek