1 Spis treci Praca semestralna Podstawy systemów operacyjnych 1. Wprowadzenie 1. Architektura współczesnych komputerów - maszyna von Neumanna 2. Definicja systemu operacyjnego 3. Struktura systemu operacyjnego 2. Zarzdzanie czasem procesora 1. Definicje procesu, wieloprocesowoci, wielodostpu i wywłaszcania procesora 2. Graf stanów procesu 3. Kolejki i priorytety 4. Wtki 5. Kontekst procesu 6. Procesy interakcyjne i wsadowe 3. Zarzdzanie pamici 1. Do czego procesowi pami 2. Gospodarka pamici w systemach bez mechanizmu pamici wirualnej 3. Mechanizm pamici wirtualnej 4. Zarzdzanie wejciem-wyjciem 1. Ogólna architektura podsystemu wejia/wyjcia 2. Zasoby urzdze fizycznych 3. Sterowniki i urzdzenia logiczne 4. Urzdzzenia dyskowe 5. Systemy plików 5. Zagadnienia bezpieczestwa 1. Autentykacja na przykładzie haseł wielokrotnych 2. Autoryzaja czyli o uprawnieniach 3. Audyt 4. Kopie bezpieczestwa 5. Kryptografia 6. Inne zagadnienia Literatura Literatura podstawowa (dla zainteresowanych) 1. Zbigniew Weiss "Komputery jak ludzie", WNT, Warszawa 1996; 2. Abracham Silberschatz, James L. Peterson, Peter B. Gavin "Podstawy systemów operacyjnych", WNT, Warszawa 1993; 3. Maurice J. Bach "Budowa systemu operacyjnego Unix", WNT, Warszawa 1995; 4. Simson Garfinkel, Gene Spafford "Bezpieczestwo w unixie i internecie", Wydawnictwo RM, Warszawa 1997; 5. Helen Custer "Inside Windows NT", Microsoft Press 1992;
2 6. Paul Tyler "Windows NT server - czarna ksiga administratora", Helion, Gliwice 1997; Podrczniki dla pocztkujcych uytkowników komputerów 7. T. Kołodziejczak "Podstawy Informatyki", Prószyski i S-ka, Warszawa 1992; 8. Witold Wrotek "PC i ty, pierwszy krok", PLJ, Warszawa 1995; 9. Stanisław Jachimek "Informatyka dla szkół", Helion, Gliwice 1996/97; 10. Anna Kurzydłowska et al "Kompendium Obsługi Komputera", Mikom, Warszawa 1997; 11. Zdzisław Dec, Robert Konieczny "Abc komputera", Edition 2000, Kraków 1998; 12. Shelly O'Hara "Komputer od A do Z", Read Me, Warszawa 1998; 13. Dan Gookin "Komputer dla opornych", Read Me, Warszawa 1997; Literatura pomocnicza 14. Don Sellers "Nie daj si, czyli jak komputer moe ci wykoczy", Helion, Gliwice 1996.
3 Rozdział 1: Wprowadzenie Architektura współczesnych komputerów - maszyna von Neumanna W drugiej połowie lat 40. John von Neumann zaproponował schemat blokowy elektronicznej maszyny liczcej (rys. 1.1). Schemat ten a do dzisiaj z niewielkimi modyfikacjami jest podstaw budowy komputerów. Gdzie: Procesor (ang. processor) - układ dokonujcy operacji na danych zgromadzonych w pamici lub płyncych z/do urzdze wejcia wyjcia, sterowany programem, którego kod znajduje si w pamici. Do przechowywania swojego wewntrznego stanu procesor wyposaony jest w pen ilo rejestrów, z których najwaniejsze to: o Wskanik instrukcji (ang. instruction pointer) - wskazuje komórk pamici, z której pobrany bdzie nastpna instrukcja do wykonania. o Rejestr flag stanu (ang. flag register, flags) - składaj si na niego jednobitowe flagi przechowujce informacje o stanie procesora (np. dopuszczalnoci
4 o o przerwa) lub rezultacie ostatnio wykonanej instrukcji (np. czy otrzymano zero). Wskanik stosu (ang. stack pointer) - wskazuje pierwsz woln komórk pamici na stosie procesora - strukturze danych typu FILO (ang. first in last out - pierwszy przyszedł,ostatni wyszedł) wykorzystwanej przy skokach do podprogramów dla przechowywania adresu powrotu i zmiennych lokalnych. Akumulator (ang. accumulator) - słuy jako argument a zarazem miejsce umieszczania rezultatów operacji arytmetycznych. Pami (pami operacyjna, ang memory) - przechowuje dane i kod prgramu. Jeeli jej konstrukcja umoliwia oprócz odczytu dokonywanie w niej modyfikacji nazywamy j RAM (ang. random access memory), jeli jej konstrukcja pozwala jedynie na odczyt nazywana jest ROM (ang. read only memory). Obecnie konstruaowane pamici RAM trac swoj zawarto w chwili wyłczenia zasilania w przeciwiestwie do ROM. Niezalenie od typu, pami dzieli si na komórki, z których kada jest w stanie przechowa liczb całkowit z ustalonego dla danej architektury zakresu. Najczciej jest to 0, 1,...,255. Do zakodowania takich liczb potrzeba 8 bitów t.j. 1 bajt. Kada komórka pamici posiada unikalny numer zwany adresem fizycznym, który słuy procesorowi do owoływania si do niej. Jeli nie decyduj o tym inne wane wzgldy, komórkom pamici przydziela si adresy fizyczne poczynajc od zera bez luk w numeracji. Zegar - odmierza cykle wykonywania instrukcji programu. Magistrale (ang. buses) słu do przesyłania danych i synchornizacji midzy elementami komputera: o Magistrala danych (ang. data bus) słuy do przesyłania danych midzy pamici, układami we/wy a procesorem. Ilo uytych tutaj linii jest równa długoci słowa masynowego i jest równa rozmiarowi komórki pamici, lub jest jego wielokrotnoci. o o Magistrala adresów (ang. address bus) słuy procesorowi do wysyłania numerów komórek pamici lub rejestrów we/wy na których bdzie doknane nastpne przesłanie danych. Ilo uytych tutaj linii decyduje o iloci pamici jak mona zaadresowa. Magistrala sterujca (ang. control bus) słuy do wzajemnej synchronizacji oraz przekazywania i potwierdzania przyjcia/wykonania zlece. Wejcie/Wyjcie pozwala kompuerowi kontaktowa si z zewntrznym wiatem (klawiatura, monitor, czytniki, adaptery sieciowe itp) lub przechowywa dane poza pamici operacyjn (dyski). Na wejcie wyjcie składaj si nastpujce układy i urzdzenia: o Sprztowe sterowniki wejcia wyjcia. Układy te potrafi si porozumiewa z procesorem poprzez rejestry we/wy, przerwania, kanały DMA i własn adresowaln przez procesor pami układu. Wykonujc zlecenia procesora steruj urzdzeniami wejcia wyjcia. W technologii mikrokomputerowej s montowane jako karty rozszerzajce wewntrz obudowy komputera. o o Urzdzenia zewntrzne - zapewniaj kontakt komputera ze wiatem. Mog to by klawiatury, monitory, dyski, drukarki, modemy ale take czujniki i ramiona robotów w procesie produkcyjnym. Interfejsy. Interfejs jest to specyfikacja sposobu przesyłania danych midzy dwoma urzdzenami. Pojcie to bywa czsto przenoszone na realizacj sprztow interfejsu w postaci gniazd, wtyków i kabli. Bywa te rozszerzane na komunikacj człowiek-maszyna, mówimy wtedy o interfejsie uytkownika.
5 Pod wzgldem funkcjonalnym komputer von Neumanna składa si z uwidocznionego na rys. 1.1 sprztu i oprogramowania zawartego w pamici (nieuwidocznionego). Przez system komputerowy (informatyczny) rozumie si komputer (sprzt + oprogramowanie) i osoby zwizane z jego działaniem. Wród osób zwizanych z działaniem komputera wyodrbnia si nastpujce typy: Uytkownicy - wykorzystuj komputery jako narzdzia ułtwiajce pewne rutynowe czynnoci przetwarzania informacji. Administratorzy - personel dbajcy o poprawne działanie systemu informatycznego. Twórcy oprogramowania - tworz oprogramowanie działajceme w systemie informatycznym i zapewniaj mu serwis. Dostawcy sprztu - produkuj i dostarczaj sprzt działajcy w systemie informatycznym oraz zapewniaj mu serwis. Definicja systemu operacyjnego Definicje Oprogramowanie komputera daje si podzieli na oprogramowanie wykonujce uyteczne dla uytkownika obliczenia i oprogramowanie dbajce o poprawn prac systemu komputerowego jako całoci, jednake nie zawsze ten podział jest oczywisty i precyzyjny. Oprogramowanie tworzone z przeznaczeniem do wykonywania uytecznych oblicze nazywamy aplikacjami. Oprogramowania tworzone z przeznaczeniem do zapewniania poprawnej pracy systemowi informatycznemu nazywamy oprogramowaniem systemowym. Rdzeniem oprogramowania systemowego jest system operacyjny. Z powodu trudnoci w precyzyjnym zdefiniowaniu tego co jest, a co nie jest systemem operacyjnym, niektórzy autorzy definiuj system operacyjny jako wszystko to opragramowanie, które producent wkłada do pudełka z tak nazw. Silberschatz et al w [2] podaj nastpujce definicje systemu operacyjnego: System operacyjny jest dystrybutorem zasobów komputera. System operacyjny jest programem sterujcym. Program sterujcy nadzoruje działanie programów uytkownika, przeciwdziała błdom i zapobiega niewłaciwemu uyciu komputera. Zajmuje si zwłaszcza obsługiwaniem i kontrolowaniem pracy urzdze wejcia/wyjcia. Nie ma [...] w pełni adekwatnej definicji systemu operacyjnego. Istnienie systemów operacyjnych jest uzasadnione tym, e pozwalaj one w rozsdny sposób rozwiza problem kreowania uytecznego rodowiska pracy. Przez zasoby rozumie si wszystkie te elementy komputera, którymi daje si dysponowa jako odrbnymi obiektami, np: procesor (w sensie przydziału jego czasu pracy), obszary pamici, obszary dyskowe, drukarki itp. Na potrzeby niniejszego wykładu system operacyjny zostanie zdefiniowany jako zbiór programów i podprogramów wywoływanych przez inne programy lub uytkownika, które maj zapewni uytkownikowi i jego aplikacjom niezawodne, zestandaryzowane, wygodne i wydajne rodowisko pracy. Mona w zwizku z powyszym przyj, e oprogramowanie rozdziela si na dwie warstwy, system operacyjny jest t warstw, która separuje warstw aplikacji od sprztu, a przez to je od niego uniezalenia (rys. 1.2).
6 Dla uytku aplikacji system operacyjny tworzy pewne abstrakcje zasobów sprztowych, zrealizowane w postaci pewnych struktur danych i podprogramów, w dalszej czci wykładu równie zwane zasobami. Separacj aplikacji od sprztu naley rozumie w ten sposób, e aplikacje nie steruj bezporednio sprztem, a jedynie posługuj si strukturami danych dostarczonymi przez system operacyjny (abstrakcjami zasobów sprztowych) i wywołuj systemowe podprogramy. Zalety istnienia w komputerze systemu operacyjnego moliwo posługiwania si komputerem przez osoby nie bdce ekspertami budowy komputerów oraz moliwo wydajnej pracy tych osób, brak koniecznoci gruntownych szkole personelu w razie wymiany komputerów lub ich podzespołów, minimalizacja iloci oprogramowania do wymiany w razie wymiany komputerów lub ich podzespołów, moliwo zamawiania, tworzenia, czy wreszcie kupowania aplikacji bez koniecznoci dokładnego precyzowania parametrów sprztu, moliwo tworzenia sterowników programowych urzdze niezalenie od aplikacji, które ja wykorzystaj, w połczeniu z jzykami programowania wysokiego poziomu, mona we wzgldnie łtwy sposób tworzy wersje oprogramowania dla rónych komputerów, moliwo wyegzekwowania zasad ochrony danych przed niepowołnym dostpem, dostpu do innych zasobów (jak drukarki) czy przestrzegania godzin pracy systemu, moliwo rozliczania uytkowników/klientów za wykorzystanie czasu pracy procesora i innych zasobów. Struktura systemu operacyjnego Jdro systemu Aby zabezpieczy si przed moliwoci bezporedniego sterowania sprztem przez aplikacje, konstruktorzy procesorów podzielili zbiór instrukcji procesora na dwie czci (niekiedy na wicej, ale pominiemy te przypadki). Jeden zbiór instrukcji, zawierajcy jedynie instrukcje nie sterujce bezporednio sprztem i odwołujce si do wydzielonych obszarów pamici, dopuszczono do uytku przez aplikacje (i oczywicie system operacyjny). Drugi zbiór, zawierajcy instrukcje sterujce sprztem, lub odwołujce si do dowlnych miejsc w pamici dopuszczono do uytku tylko przez system
7 operacyjny. Aby w praktyce zorganizowa właciwe uycie tych instrukcji wprowadzono take dwa tryby pracy procesora: tryb uytkownika i tryb jdra. W trybie uytkownika dopuszczone s tylko instrukcje nie sterujce sprztem i o ograniczonym dostpie do pamici, jest on przeznaczony dla aplikacji. W trybie jdra dopuszczone s wszystkie instrukcje, jest on przeznaczony dla systemu operacyjnego. Nie cały system operacyjnym musi si wykonywa w trybie jdra, wobec czego wyodrbnia si z systemu operacyjnego zbiór podprogramów o ywotnym znaczeniu. Zbiór ten nosi nazw jdra systemu operacyjnego. Wywołanie podprogramu jdra przez aplikacj (w celu dostpu do zasobów) powoduje natychmiastowe przełczenie si procesora w tryb jdra, w trybie tym wykonuje si wielokrotnie sprawdzony podprogram jdra, który tu przed powrotem do aplikacji przełcza si z powrotem do trybu uytkownika. Twórcy nowoczesnych systemów operacyjnych nadaj jdru modułow budow, co midzy innymi pozwala wydzieli grupy podprogramów zwane sterownikami programowymi we/wy (ang. driver) obsługujcych konkretne urzdzenia i włcza je do jdra zalenie od potrzeb. Programy Uytkownik nie moe wywoływa bezporednio podprogramów jdra systemu operacyjnego. Oprogramowanie, które moe by wywoływane bezporednio przez uytkownika nazywamy programami. Zgodnie z tym, co zostało powiedziane wczeniej programami s aplikacje i cz systemu operacyjnego przeznaczona do bezporedniego wywoływania przez uytkownika tj. powłoki i programy narzdziowe. Podstawow rzecz jak system operacyjny musi udostpni uytkownikowi jest moliwo wywoływania aplikacji i innych programów. Do tego słu powłoki. Powłoka jest to program przeznaczony do bezporedniej konwersacji z uytkownikiem, przyjmowania od niego zlece i wywoływania na jego polecenie innych programów. Zadaniem programów narzdziowych jest wsparcie administratorów w pielgnacji komputera. Zadaniem programów usługowych (zwanych serwerami lub demonami) jest wspieranie jdra w tych czynnociach, których samo nie moe z rónych wzgldów wykona (np. wymiatanie pamici podrcnej) lub zarzdzanie abstrakcyjnymi zasobami (np. kolejki wydruków, silniki baz danych, serwery stron www). Start komputera
8 W czasie startu komputera (ang. boot) pierwsze ładowane jest jdro (np. w MS-DOS s to pliki IO.SYS i MSDOS.SYS), nastpnie jdro ładuje wymagane sterowniki (w MS-DOS nastpuje to w trakcie interpretacji pliku CONFIG.SYS), startuje programy usługowe i uruchamia powłok (COMMAND.COM w MS-DOS). Jeli system przewiduje kontrol dostpu, przed uruchomieniem powłoki autentykuje uytkownika. Po starcie powłoki uytkownik moe podj prac, jao e powłoka daje mu moliwo uruchamiania własnych aplikacji. Czsto startujca powłoka wykonuje skrypt startowy aby skonfigurowa rodowisko uytkownika i uruchamia przy tym odpowiednie aplikacje (w MS- DOS skryptem startowym jest AUTOEXEC.BAT). Rozdział 2: Zarzdzanie czasem procesora Definicje procesu, wieloprocesowoci, wielodostpu i wywłaszcania procesora Pierwsze systemy operacyjne pozwalały na wykonanie jednego programu na raz. W raz z rozwojem informatyki w szczególnoci pojawieniem si interakcyjnych wielodostpnych systemów operacyjnych, a póniej wprowadzeniem graficznych interfejsów uytkownika wystpiła opotrzeba jednoczesnego uruchamiania na tym samym procesorze wielu programów w taki sposób by zminimalizowa moliwoci wzajemnych zakłóce midzy procesami. System operacyjny nazyway wielodostpnym, jeeli wielu uytkowników moe jednoczenie z nim pracowa, kady z nich ma wraenie cigłej pracy systemu na jego rzecz. Podobn drog przeszły mikrokomputery od systemu CP/M i MS-DOS do dzisiejszych MAC-OSa i MS Windows NT. W nowoczesnym systemie operacyjnym dany program moe by wykonywany przez wielu uytkowników jednoczenie, w zwizku z tym wprowadza si pojcie procesu. Silberschatz et al w [2] definiuj proces jako program, który jest wykonywany. Sprecyzowa naley, e kady załadowany do pamici operacyjnej celem wykonania egzempla programu razem z danymi na których operuje stanowi oddzielny proces. System operacyjny nazywamy wieloprocesowym jeeli dopuszcza jednoczesne istnienie w nim wielu procesów. Takim systemem jest np. MS-DOS, przy czym w tym wypadku proces raz uruchomiony blokuje innym procesom dostp do procesora a do swego zatrzymania, dopiero wówczas moe na nowo podj swe wykonanie jego proces macierzysty. Takim systemem nie jest np. CP/M, w którym moe istnie tylko jeden proces. Jak to ju stwierdzono w MS-DOSie po uruchomieniu procesu potomnego dany proces był zamraany i faktycznie nie mógł si wykonywa a do zakoczenia potomka. Jeeli oczekujemy od komputera z jednym procesorem aby był wielodostpny, musimy zadba o to by dzieli czas procesora midzy róne procesy, niezalenie od tego, czy aktualnie wykonujcy si proces ma ochot zwolni procesor, czy nie. Takim mechanizmem jest wywałaszczanie procesora. Kady proces w systemie wieloprocesowym z wywłaszczaniem w chwili uzyskania procesoraotrzymuje te kwant czasu. Po wyczerpaniu swego kwantu czasu proces jest przerywany, a na jego miejsce wykonywany jest inny proces. Wywłaszczony proces trafia na koniec kolejki procesów ubiegajcych si o procesor. Przykładami takich systemów s Unix, Windows NT i Windows 95.
9 Graf stanów procesu Współbiena praca wicej ni jednego procesu niesie z sob mozliwo konfliktów przy dostpie do zasobów. W takich warunkach ujawnia si rola systemu operacyjnego jako dystrybutora zasobów. System operacyjny (a w zasadzie jego jdro) rozstrzyga konflikty o zasoby przydzielajc je jednym ubiegajceym si o nie procesom a innne procesy powstrzymujc do czasu zwolnienia zasobów przez dotychczasowych zwycizców. Proces, który zadał dostpu do zasobu (w szczególnoci wykonania operacji we/wy) i go nie otrzymał nie moe by dalej wykonywany a do chwili uzyskania zasobu (zakoczenia operacji we/wy). O takim procesie mówi si e jest w stanie upionym. Zwalnia on procesor pozwalajc innym procesom na wykonywanie si. W systemach z wywłaszczaniem procesora wyrónia si pewien specjalny stan - oczekiwanie na przydział procesora. Mamy z nim do czynienia gdy proces posiada wszystkie niezbdne mu zasoby, nie wykonuje operacji wejcia wyjcia a czeka jedynie na przydzielenie mu [czasu] procesora. O takim procesie mówimy, e jest w stanie gotowy do wykonania. Róne systemy operacyjne wyróniaj róny zestaw stanów, przez które przechodzi proces w trakcie ycia, ale w kadym systemie wieloprocesowym z wywłaszczaniem mona wyróni nastpujce stany: Wykonywany - jest aktualnie wykonywany przez procesor, Gotów do wykonania - oczekuje na swoj kolejk do wykonania, Upiony - oczekuje na dostp do zasobu lub operracj wejcia/wyjcia, np. wcisnicie klawisza przez uytkownika, Niszczony - w trakcie zwalniania zasobów po zakoczeniu. Kolejki i priorytety Procesy oczekujce na zwolnienie procesora mog mie rón wano. Przykładowo, moe to by proces dokonujcy pomiaru w toczcym si eksperymencie, edytor teksu, proces systemowy uruchomiony celem zrobinia okresowych porzdków i zadanie symulacji numerycznej pewnego układu fizycznego wykonywane długi czas w tle. Pierwsze dwa procesy maj to do siebie, e wikszo czasu oczekuj na zajcie operacji wejcia wyjcia, a gdy ju to nastpi, powinny natychmiast reagowa, z kolei dwa ostatnie wykorzystuj
10 głównie czas procesora, ale nie s na tyle pilne, by nie mogły ustpowa w razie potrzeby innym. W zalenoci od pilnoci zadania i jego dotychczasowego przebiegu, system operacyjny nadaje procesowi priorytet. Generalnie, czym mniejsz liczb jest wyraony, tym lepiej z punktu widzenia procesu - ma wiksy dostp do procesora. Dla kadego priorytetu tworzona jest osobna kolejka procesów gotowych do wykonania. Dopóki w kolejce o priorytecie wyraonym mniejsz liczb czekaj procesy, prcesy z kolejki wikszego priorytetu nie bd wykonywane. Najmniejsze priorytety s zarezerwowane dla uytku systemu operacyjnego, s one do tego stopnia uprzywilejowane, e procesy wykonujce si z tymi priorytetami nie s wywłaszczane. Std te s uywane jedynie w wyjtkowych okolicznociach przez krótkie procedury systemowe. Uytkownik ma zwykle moliwo wyboru priorytetu dla uruchamianego procesu, jednake jest w swym wyborze ograniczony "z dołu". System operacyjny rezewuje sobie moliwo zmiany priorytetu w trakcie działania procesu, celem wyrównania szans rónych procesów. Wtki Niektóre systemy operacyjne dopuszczaj współbieno w ramach jednego procesu. Okrela si wówczas wtek jako jednostk wykonania. Kady wykonujcy si proces ma przynajmniej jeden wtek, kady wtek wykonuje si w ramach jednego procesu. Wtki konkuruj ze sob o czas procesora. Pozostałe zasoby przydzielane s na rzecz procesu. System operacyjny zostawia programicie aplikacji woln rk w rozstrzyganiu konfliktów pomidzy wtkami o dostp do zasobów przydzielonych procesowi. System operacyjny nazywamy wielowtkowym, jeeli dopuszcza istnienie wielu wtków wykonania w ramach jednego procesu. Przykładami systemów wielowtkowych s Windows NT, Windows 95 i niektóre odmiany Uniksa. W systemach nie bdcych wielowtkowymi pojcie wtku i prcesu utosamia si. Przedstawiony na rys. 2.1 graf stanów procesu oraz kolejkowanie w systemie wielowtkowym dotyczy oczywicie wtków. Proces nie posiada stanów, jest koczony w momencie gdy skoczy si jego ostatni wtek. Jeeli nie bdzie to wyranie zaznaaczone, w dalszej czci wykładu procesy i wtki bd ze sob utosamiane. Kontekst procesu Aby proces/wtek mógł by wznowiony od miejsca w którym przerwane zostało jego wykonanie, naley zachowa pewne informacje o stanie procesora w chwili przerywania działania procesu. Zbiór wszystkich informacji niezbdnych do podjcia prez proces działania z miejsca, w którym si znajduje nazywamy kontekstem procesu. Zdarzenie zapamitania kontekstu aktualnego procesu i wprowadzenia do procesora wczeniej zachowanego kontekstu innego procesu celem rozpoczcia jego wykonania nazywamy przełczeniem kontekstu. Kontekst procesu składa si z zawartoci rejestrów procesora, w szczególnoci wskanika instrukcji, rejestru flag stanu i wskanika stosu. W przypadku systemów z pamici wirtualn w skład kontekstu wchodz tablice stron. Procesy interakcyjne, wsadowe i demony
11 Nie wszystkie procesy wymagaj cigłej współpracy uytkownika w trakcie działania. Te które wymagaj - nazywamy interakcyjnymi. S to m.in. edytory tekstu, programy do odbierania poczty itp. Programy interakcyjne maj zawsze przypisany jaki zasób umoliwiajcy konwersacj z uytkownikiem. W przypadku Uniksa jest to terminal znakowy. W przypadku programu z graficznym interfejsem uytkownika jest to okienko graficzne na ekranie komputera. Procesy nie wymagajce uwagi uytkownika dziel si na dwie kategorie: demony - programy wiadczce usługi dla systemu jako całoci (program wymiatajcy pami podrczn) lub dla ogółu uytkowników (silnik bazy danych) oraz zadania wsadowe - zadania uruchomione przez jednego uytkownika, wykonujce długotrwałe obliczenia, których nie trzeba nadzorowa, np: sysmulacje numeryczne, tworzenie grafiki w oparciu o techniki ledzenia promieni, itp.) System operacyjny dostarcza administratorowi narzdzi do uruchamiania i nadzorowania procesów pierwszego typu, a pozostałym uytkownikom drugiego typu. Rozdział 3: Zarzdzanie pamici Do czego procesowi pami Kady prces działajcy w komputerze wymaga pamici operacyjnej do przechowywania kodu swego prograamu i danych które przetwarza. Dane, które przetwarza proces reprezentowane s przez zmienne programu. Przez zmienn programu rozumie si obszar pamici o ustalonym adresie pocztkowym i długoci, do którego mona odwoływa si z programu poprzez symbol zwany nazw zmiennej. Kada zmienna posiada swój typ, definiowany jako zbiór, którego elementy mog by kodowane przez wartoci zmiennej, np. typ char jzyka C koduje znaki zbioru ASCII lub liczby z przedziału -128 do 127. Typ decyduje o długoci obszaru przeznaczonego na zmienn. Wanymi typami zmiennych s zmienne wskanikowe. Przechowuj one adresy (adresy pocztku obszaru) innych zmiennych. Z punktu widzenia zarzdzania pamici wyrónia si trzy klasy zmiennych: Zmienne statyczne - s tworzone przy starcie procesu i istniej przez cały czas jego ycia. Okrelenie zmienna statyczna moe by mylce. Zmienna ta, oczywicie, moe by modyfikowana przez program. Okrelenie statyczna odnosi si do sposobu gospodarowania pamici tej zmiennej - rezerwuje si j przy starcie a zwalnia przy kocu procesu. Przez cały czas ycia procesu dany obszar pamici wykorzystywany jest w ten sam sposób - na przechowywanie aktualnej wartoci danej zmiennej. Zmienne lokalne podprogramów zwane te automatycznymi - s tworzone dla kadego wywołania podprogramu i usuwane po jego zakoczeniu. Zmienne dynamiczne - s tworzone i usuwane w miar potrzeby. Wyrónia si trzy zasadnicze grupy obszarów pamici, z których korzysta proces:
12 Obszary zajmowane przez kod programu i bibliotek. Na pamici wchodzcej w skład tych obszarów po załadowaniu programu (lub biblioteki) procesor wykonuje jedynie operacje odczytu. Obszary te mog by wspólny dla rónych procesów wykonujcych ten sam program, lub korzystajcych z tej samej bibloteki ładowanej dynamicznie. Obszary zajmowany przez prywatne dane programu, w tym zmienne statyczne i dynamiczne. Obszar ten jest inicjowany przy starcie procesu pocztkowymi wartociami zmiennych globalnych (czsto zerami). W trakcie ycia procesu dokonywane s zarówno operacje odczytu jak i zapisu. Obszar przechowujcy zmienne dynamiczne nazywany jest stert. Tworzenie i niszczenie zmiennych dynamicznych moe powodowa zwikszanie si i zmniejszanie tego obszaru w trakcie ycia procesu. Kady proces wymaga własnego obszaru prywatnych danych. Jeeli proces składa si z wtków, wtki współdziel obszar danych procesu. Obszar stosu. W obszarze tym zapamituje si adresy powrotów z podprogramów oraz przechowuj zmienne lokalne (dla kadego wywołania podprogramu tworzony jest jego własny komplet zmiennych lokalnych). Obszar ten jest rezerwowany w pamici przy starcie procesu. Z pocztku jest pusty. Wypełnia si i oprónia w miar jak wywoływane i koczone s poszczególne podprogramy. Kady wtek wymaga własnego obszaru stosu. Powysze obszary pamici bywaj czsto nazywane segmentami odpowiednio kodu, danych i stosu. Mona wyróni dodatkowe obszary pamici dostpnej procesowi: Obszary systemowe. W nowoczesnych systemach operacyjnych dostp do tych obszarów proces ma tylko wtedy, gdy wykonuje w trybie jdra podprogram jdra systemu operacyjnego. o Dane systemu operacyjnego w tym np. bufory dyskowe, o kod jdra systemu operacyjnego, o o kod sterowników urzdze w pamici ROM, adresowalna pami urzdze wejcia wyjcia, np. pami obrazu karty graficznej. Pami dzielona - obszary pamici przechowujce dane, do których dostp ma wicej ni jeden proces. Pliki dyskowe mapowane na pami. Rozwamy prosty program w C #include <stdio.h> #include <string.h> char napis[] = "Hello world!"; void main() { char *tymczasowa; tymczasowa=strdup(napis); printf("%s\n",tymczasowa); free (tymczasowa); } Rys. 3.1 Przykładowy program w C uywajcy rónych klas zmiennych W trakcie działania powyszego programu tworzone s (a potem usuwane) nastpujce zmienne:
13 zmienna statyczna ``napis '' zawierajca łacuch "Hello World!"; bezimienna zmienna statyczna zawierajca łacuch "%s\n"; zmienna lokalna funkcji ``main'' typu wskanikowego (wskanik do typu char) o nazwie ``tymczasowa''; zmienna dynamiczna, bdca duplikatem zmiennej ``napis'', wskanik do niej podstawiany jest do zmiennej ``tymczasowa''. inne zmienne zadeklarowane w standardowej bibliotece C, których deklaracje znajduj si w plikach nagłówkowych stdio.h i string.h Przy starcie procesu wykonujcego powyszy program w obszarze kodu programu znajdzie si skompilowana funkcja ``main'' oraz skompilowane niezbdne funkcje biblioteczne w tym funkcje ``printf'', ``strdup'' i ``free''. W obszarze danych statycznych utworzone bd zmienne ``napis'', bezimienna zmienna zawierajca łacuch "%s\n" oraz niesprecyzowane tutaj bliej zmienne tworzone dla potrzeb bibliotek. Po zainicjowaniu pamici proces zaczyna wykonywa swój kod poczynajc od funkcji ``main''. W trakcie prologu tej funkcji rezerwowane jest na stosie miejsce na zmienn ``tymczasowa''. W trakcie wykonania (druga linijka) tworzona jest zmienna dynamiczna bdca duplikatem zmiennej ``napis'' a jej adres wstawiany jest do zmiennej ``tymczasowa''. Przy kocu programu zmienna dynamiczna (której adres wci przechowuje zmienna ``tymczasowa'') jest niszczona. Epilog funkcji ``main'' niszczy zmienn lokaln ``tymczasowa''. Zakoczenie si tej funkcji koczy jednoczenie proces. W trakcie usuwania zakoczonego procesu niszczone s pozostałe zmienne. Gospodarka pamici w systemach bez mechanizmu pamici wirtualnej CP/M Najprostsz gospodark pamici prezentuje system operacyjny CP/M. Poniewa w systemie tym moe istnie tylko jeden proces, dostaje on cał pami w swoje władanie. System operacyjny iinformuje go jedynie, gdzie znajduj si jego obszary pamici. Poza tym ostrzeeniem, system operacyjny nie chroni swej pamici przed procesem. Systemy wieloprocesowe W wieloprocesowych systemach operacyjnych naley stworzy mechanizmy przydzielania pamici wielu procesom oraz ochrony pamici przydzielonej poszczególnym procesom i pamici zajmowanej przez kod i dane jdra przed innymi procesami. W pierwszych sysemach wieloprocesowych z ochron pamici uruchamiany proces otrzymywał sztywn pul pamici wyznaczn przez adresy graniczne. Proces musiał zmieci swój kod i dane w zadanym obszarze. Uycie zmiennych dynamicznych było w zwizku z tym ograniczone. W przypadku odwołania si do adresów spoza wyznaczonych granic proces wpadał w pułapk i był koczony. MS-DOS W systemie operacyjnym MS-DOS proces przy starcie moe zarezerwowa pewn ilo tzw. segmentów pamici operacyjnej połoonej poniej adresu 655360. W trakcie ycia moe zarezerwowa dodatkowe segmenty lub zwolni je. Moe te rezerwowa i zwalnia pami powyej 1MB. Nowy proces bdzie uruchomiony pod warunkiem, e jest do segmentów dla niego w obszarze pierwsych 640kB pamici. MS-DOS nie zapewnia ochrony pamici.
14 MS-Windows 3.x Windows 3.x s nakładk na MS-DOS czciowo modyfikujc jego zachowanie, m in. zarzdzanie pamici. Przede wszystkim znika ograniczenie wielkoci pamici procesu do 640kB. MS-Windows równie nie zapewniaj pamici. Obszary pamici mona rezerwowa jako: Fixed - Obszar ten cały czas dostpny jest pod adresami przydzielonymi mu przy rezerwacji. W obszarach tej klasy lokuje si kod, dane statyczne i stos procesu. Movable - Aby odwoływa si do adresów w tym obszarze, naley go zablokowa. System operacyjny gwarantuje, e po odblokowaniu zawarto obszaru nie bdzie zniszczona, jednak nie gwarantuje, e po powtórnym zablokowaniu znajdowa si bdzie w tym samym miejscu pamici. W zwizku z tym, adresy zmiennych zawartych w tym obszarze, po jego odblokowaniu trac wano. Obszary tej klasy wykorzystuje si na współdzielone dane i pewne mniej potrzebne zmienne dynamiczne. Discardable - Aby odwoływa si do adresów w tym obszarze, naley go zablokowa. Po odblokowaniu obszaru moe on zosta zniszczony. W zwizku z tym, adresy zmiennych zawartych w tym obszarze, po jego odblokowaniu trac wano. Obszary tej klasy wykorzystuje si na pewne mniej potrzebne zmienne dynamiczne. MS-Windows zapewnia dwa mechanizmy gospodarowania pamici: 1. Konsolidacja. W przypadku gdy dla nowotworzonego procesu, lub procesu, który zarzdał pamici brak miejsca, odblokowane obszary klasy discardable s niszczone, a odblokowane obszary klasy movable przesuwane tak by utworzy spójny obszar
15 mogcy zaspokoi danie. 2. Wymiana. Jeeli powysze operacje nie pozwalaj uzyska spójnego obszaru pamici odpowiedniej wielkoci, jeden lub wicej z obszarów klasy fixed, lub zablokowanych obszarów klas movable i discardable nalecych do innych procesów trafia na dysk do pliku wymiany. Zmiana kontekstu (uzyskanie procesora przez inny proces) powoduje e obszary pamici danego procesu umieszczone w pliku wymiany s sprowadzane do pamici operacyjnej, a obszary nalece do innych procesów, pokrywajce si w pamici operacyjnej z nimi s konsolidowane lub trafaj do pliku wymiany. Jak wida na rysunku 3.2 pomimo zastosowania konsolidacji pamici, jest ona wci pofragmentowana, cho najwikszy spójny obszar znaczco wzrósł. Fragmentacja pamici powoduje, e dania przydziału pamici, domagajce si mniej pamici ni jest w sumie wolne, ale wicej ni zawiera najwikszy spójny obszar mog nie zosta spełnione. Z pomoc przychodzi wymiana (mechanizm zapewniany przez system operacyjny) i nakładkowanie (mechanizm zapewniany przez programist lub jego kompilator). Polegaj one na czasowym usuwaniu pewnych obszarów pamici na dysk do specjalnie utworzonego pliku wymiany. Mechanizmem nakładkowania nie bdziemy si tu zajmowa, jest on zbliony do mechanizmu wymiany, a dotyczy głównie wymiany zestawów podprogramów. Wad mechanizmu wymiany jest to, e pami jest usuwana na dysk wielkimi blokami, a w razie przełczenia kontekstu cała pami procesu musi by przeniesiona od razu z pliku
16 wymiany do pamici operacyjnej. Nie mona równie zarezerwowa obszaru wikszego ni dostpna pami operacyjna. Mechanizm pamici wirtualnej Zalety i wady Mechanizm pamici wirtualnej nie posiada wad przedstawionych w poprzednim paragrafie. Jego cechy to: Powstanie prywatnych przestrzeni adresowych dla kadego procesu. Procesy nie widz nawzajem swoich przestrzeni adresowych. Niewidoczny dla procesu podział pamici na niewielkie (rzdu 1kB) obszary pamici podlegajce wymianie zwane stronami. Praktyczne nieistnienie problemu fragmentacji pamici. Moliwoc przechowywania w pamici operacyjnej w trakcie wykonywania procesu jedynie najczciej ostatnio uywanych stron. Długo niewykorzystywane strony trafiaj na dysk do pliku wymiany. Przy przełczaniu kontekstu nie ma potrzeby ładowa całej przestrzeni adresowej do pamici operacyjnej, wystarczy strona z komórk zawierajc nastpn instrukcj programu, oraz strona z wierzchem stosu. Proces ma iluzj posiadania przez maszyn znacznie wikszej iloci pamici operacyjnej ni ma ona w rzeczywistoci, w szczególnoci mona tworzy zmienne o rozmiarze przekraczajcym rozmiar pamici operacyjnej. Moliwo poddania ochronie obszarów przestrzeni adresowej procesu, w szczególnoci obszarów systemowych, obszaru kodu i pamici współdzielonej. Moliwo spójnego implementowania pamici wirtualnej, pamici współdzielonej, mapowania pliku na pami operacyjn i buforowania operacji dyskowych. Wadami mechanizmu pamici wirtualnej s Narzut na pami zwizany z przechowywaniem dodatkowych struktur danych t.j. tablic stron. Narzut na wydajno i złoono procesora zwizany z wyliczaniem adresów fizycznych z adresów wirtualnych. Narzut na wydajno systemu zwizany z koniecznoci wczytania do procesora czsci tablicy stron nowego procesu przy przełczaniu kontekstu. Narzut na wydajno systemu zwizany z operacjami dyskowymi wymiany stron. Trzeba tu jednak zaznaczy, e dobre algorytmy wymiany stron minimalizuj ten narzut. Zasada działania Najistotniejszym elementem mechanzmu jest rozrónienie midzy adresem logicznym a fizycznym komórki pamici i sposób odwzorowania adresu logicznego na fizyczny. Adresem fizycznym komórki nazywamy adres, jaki wysyła na magistral adresow procesor, aby odwoła si do tej komórki. Kada komórka pamici operacyjnej ma swój niezmienny adres fizyczny. Kady adres fizyczny odnosi si zawsze do tej samej komórki pamici lub jest zawsze błdny. Adresem logicznym (lub wirtualnym) nazywamy adres jakim posługuje si program, aby odwoła si do zmiennej lub instrukcji. Adres logiczny moe odnosi si zarówno do komórki
17 pamici operacyjnej jak i słowa maszynowego zapisanego na dysku. Przypisanie adresu logicznego do konkretnej komórki pamici, czy konkretnego miejsca na dysku jest inne dla kadego procesu i moe si zmienia w trakcie jego ycia. Pami operacyjna dzielona jest na ramki, to jest spójne obszary o stałym romiarze zwanym wielkoci ramki. Przestrze adresów wirtualnych dzielona jest na strony, to jest spójne obszary o stałym rozmiarze zwnym wielkoci strony. Wielko strony równa si wielkoci ramki i jest wielokrotnoci rozmiaru sektora dyskowego. Wielko strony jest rzdu 1kB, i tak, w systemie VMS wynosi ona 512B, w Linuksie - 1kB a w Windows NT - 4kB. Analogicznie do pamici operacyjnej, mona przyj, e plik wymiany dzieli si równie na ramki. Strona pamici wirtualnej moe znajdowa si w jednej z ramek pamici operacyjnej, jednej z ramek pliku wymiany lub by stron niezarezerwowan (błdn). Odwzorowania stron pamici wirtualnej w ramki pamici operacyjnej lub ramki pliku wymiany dokonuje procesor za kadym razem, gdy oblicza adres fizyczny z adresu wirtualnego (celem pobrania instrukcji, lub odwołania si do zmiennej). Do odwzorowywania stron w ramki słu mu tablice stron wirtualnych. Szczegóły tłumaczenia adresu logicznego na fizyczny w prypadku, gdy strona znajduje si w pewnej ramce pamici operacyjnej ilustruje rys. 3.3. Adres logiczny składa si z dwóch cci: numery strony i przesunicia na stronie. Numer strony słuy jako indeks do tablicy stron wirtualnych. W tablicy tej odnajdywana jaest pozycja odpowiadajca dnej stronie. Na podstawie atrybutów procesor ustala, czy strona znajduje si w pamici operacyjnej i jeli tak, pobiera numer ramki po czym łczy go z przesuniciem na stronie otrzymujc adres fizyczny, który moe by wysłany na magistral adresow. Jeeli atrybut dostpnoci strony wskazuje, e znajduje si ona w pamici wymiany, nastpuje tzw. ``page fault'' - wyjtek pamici wirtualnej. Procesor przerywa proces (wtek), który
18 odwołał si do nieobecnej strony i przenosi go w stan upiony. Jednoczenie podejmowane s działania majce na celu sprowadzenie strony do pamici t.j. wyszukiwana jest wolna ramka. Jeli wolnej ramki brak, jedna z ramek zajtych zapisywana jest na dysk i zwalniana. Uzyskana ramka pamici operacyjnej zapełniana jest zawartoci przywracanej strony przechowywan w pliku wymiany. Tablice stron mog rezydowa tak jak to pokazano na rysunku w specjalnych obszarach pamici, które s znane procesorowi przez ich adres fizyczny (a nie logiczny) lub te mog by czciowo przechowywane w podrcznej pamici asocjacyjnej procesora. Wiele systemów operacyjnych dopuszcza by cz tabeli stron mogła by przenoszona do pliku wymiany. Dua cz mechanizmu pamici wirtualnej musi by realizowana sprztowo przez procesor. System operacyjny dochodzi do głosu gdy nastpuje page fault i trzeba sprowadzi stron do pamici, usuwajc by moe inn stron oraz dokona przełczenia kontekstu. Mechanizm ten moe zatem działa jedynie w systemach operacyjnych działajcych na procesorach wspierajcych go, takich jak np. Intel i386 i nowsze procesory Intela, procesory Alpha, nowsze procesory Motorolli itd. Izolacja procesów i ochrona pamici. Aby zapewni kademu procesowi prywatn przestrze adresow, dostaje on własn tablic stron wirtualnych. W zwizku z tym tablica ta jest elementem kontekstu procesu. Przełczenie kontekstu wymaga wczytania do procesora tablicy stron nowego procesu (a przynajmniej jej czci). Atrybutem strony moe by uprawnienie procesu do posługiwania si t stron: Uprawnienie do odczytu i zapisu (read/wite). To uprawnienie otrzymuj strony obszarów danych i stosu programu. Uprawnienie do odczytu (read only). To uprawnienie nadaje si m.in. stronom zawierajcym kod programu. Mona dziki temu współdzieli te strony midzy procesami wykonujcymi ten sam program bez obawy, e jeden proces zmodyfikuje kod programu i tym samym wpłynie katastrofalnie na przebieg działania drugiego procesu. Uprawnienie zabraniajce wszelkich operacji (no access). Tym atrybutem oznacza si strony przechowujce kod i dane jdra systemu operacyjnego oraz strony nie zarezerwowane dotd przez proces. Niektóre systemy operacyjne wyróniaj bardziej złoony system uprawnie np. copy on write i execute only, pod warunkiem, e procesor wspiera takie upranienia. Proces, diałajc w trybie uytkownika, nie ma moliwoci bezporedniej zmiany zawartoci tablicy stron. Moe on zleci systemowi operacyjnemu rezerwacj nowych stron (np. na zmienne dynamiczne) lub zwolnienie tych które przestał uywa. Odbywa si to przez wywołanie odpowiednich podprogramów jdra (działajcych w trybie jdra). Rozdział 4: Zarzdzanie wejciem-wyjciem Ogólna architektura podsystemu wejia/wyjcia
19 Ogóln architektur wejcia/wyjcia przedstawiono na rys. 4.1. Na sprzt (patrz rozdział 1 i rys. 1.1) składa si pewna ilo urzdze wejcia wyjcia zwanych dalej urzdzeniami fizycznymi (ang. phisical device), kade z tych urzdze sterowane jest przez sterownik sprztowy (ang. hardware controller). Do komunikacji z urzdzeniami fizycznymi wykorzystuje si zasoby urzdze t.j. rejestry we/wy, przerwania, adresowaln pami urzdze i kanały DMA. Jdro systemu operacyjego zawiera pewn ilo modułów zwanych stertownikami programowymi urzdze (ang. device driver), które potrafi sterowa urzdzeniami. Jeden sterownik moe obsługiwa wiele urzdze podobnego typu (np. sterownik dysków) lub uzupełniajcych si typów (np. sterownik terminala obsługuje klawiatur i kart graficzn wraz z monitorem). Sterowniki programowe tworz dla wyszych warstw oprogramowania urzdzenia logiczne (ang. logical device). Urzdzenie logiczne jest obiektem bdcym abstrakcj urzdzenia fizycznego. Na urzdzeniu logicznym mona dokonywa operacji zapisu i odczytu poprzez podprogramy dostarczane przez sterownik. Wysze warstwy oprogramowania nie musz zna
20 szczegółów sterowania danym urzdzeniem. Wsród urzdze logicznych mona wyodrbni nastpujce typy: Urzdzenia znakowe lub strumieniowe (ang. character device). Z urzdzenia znakwego mona czyta w sposób sekwencyjny cigi bajtów, lub w sposób sekwencyjny zapisywa cigi bajtów. Przykłady urzdze fizycznych dla których tworzy si logiczne urzdzenia znakowe: zegar systemowy, porty szergowe i równoległe oraz widoczne przez nie drukarki, modemy, myszy i terminale, komsola, streamery itp. Urzdzenia blokowe (ang. block device). Z urzdzenia blokowego mona odczytywa i zapisywa bloki bajtów okrelonej dla danego urzdzenia wielkoci. Dostp do danych w urzdzeniu blokowym w przeciwiestwie do urzdze znakowych jest swobodny t.j. poprzez podanie adresu bloku. Przykłady urzdze fizycznych dla których tworzy si logiczne urzdzenia blokowe: dyski, niektóre skanery. Inne. Urzdzenia te oferuj funkcje, która wykraczaj znaczco poza operacje odczytu/zapsu na urzdzeniu znakowym lub blokowym. Przykłady urzdze: karty sieciowe, karty graficzne. Modyły jdra odpowiedzialne za wysze funkcje to moduły systemów plików, protokołów sieciowych, interfejsu uytkownika itp. Systemy plików mog by zakładane na urzdzeniach blokowych. System plików umoliwia przechowywanie na tym samym urzdzeniu rónych informacji w sposób pozwalajcy wyszuka potrzebne zbiory danych oraz zabezpieczy dane przed niepowołanym dostpem. Wysze funkcje we/wy dostpne s przez tzw. API (application programmer's interface - interfejs programisty aplikacji) czyli zbiory podprogramów dostpnych do wywołania przez aplikacje. Istniej pewne złoone operacje, które nie powinny lub nie musz by wykonywane w jdrze systemu operacyjnego ze wzgldu np. na wydajno systemu, denie do zmniejszenia stopnia komplikacji jdra czy bezpieczestwo. Do wykonania tych operacji uruchamia si przy starcie systemu programy usługowe zwane te demonami (ang. daemon). Przykłady zastosowa: zarzdzanie kolejkami wydruków, implementacja czci usług sieciowych czy wymiatanie buforów dyskowych. Programy usługowe i aplikacje mog si odwoływa bezporednio do urzdze logicznych, jeeli konfiguracja systemu na to pozwala lub do odpowiednich API. adna warstwa oprogramowania z wyjtkiem sterowników programowych nie odwołuje si bezporednio do sprztu. Zasoby urzdze fizycznych Zasoby urzdze fizycznych umoliwiaj procesorowi i wykonywanemu si na nim oprogramowaniu komunikowa si z urzdzeniami fizycznymi. Wyrónia si cztery klasy zasobów urzdze fizycznych: rejestry we/wy (ang. I/O registers), przerwania (ang. interrupts), adresowalna pami sterownika, kanały DMA. Rejestry we/wy