Systemy operacyjne - Zespół Szkół Nr 23
Transkrypt
Systemy operacyjne - Zespół Szkół Nr 23
Systemy operacyjne Dariusz Wawrzyniak ! Politechnika Poznańska Instytut Informatyki ul. Piotrowo 3a (pokój 409) 60-965 Poznań ! [email protected] " www.cs.put.poznan.pl/dwawrzyniak " (61) 665 28 09 1 Definicja systemu operacyjnego (1) ! System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na efektywne współdzielenie urządzeń maszyny cyfrowej Per Brinch Hansen ! System operacyjny (nadzorczy, nadrzędny, sterujący) jest to zorganizowany zespół programów, które pośredniczą między sprzętem a użytkownikami, dostarczając użytkownikom zestawu środków ułatwiających projektowanie, kodowanie, uruchamianie i eksploatację programów oraz w tym samym czasie sterują przydziałem zasobów dla zapewnienia efektywnego działania Alen Shaw Systemy operacyjne – wprowadzenie 2 Pojęcie systemu operacyjnego jest trudne do zdefiniowania, podobnie jak trudne jest określenie elementów składowych systemu operacyjnego, czyli: co jest częścią systemu operacyjnego, a co nią nie jest. 2 Definicja systemu operacyjnego (2) ! System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. Abraham Silberschatz ! System operacyjny jest warstwą oprogramowania operującą bezpośredni na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania. Andrew Tanenbaum Systemy operacyjne – wprowadzenie 3 3 Miejsce systemu operacyjnego w architekturze systemu komputerowego Programy użytkowe System operacyjny Sprzęt Systemy operacyjne – wprowadzenie 4 System operacyjny pośredniczy pomiędzy użytkownikiem a sprzętem, dostarczając wygodnego środowiska do wykonywania programów. Użytkownik końcowy korzysta z programów (aplikacji), które określają sposób wykorzystania zasobów. System operacyjny udostępnia te zasoby, dzięki czemu można uzyskać stosunkowo duży stopień niezależności programów od konkretnego sprzętu. 4 Zadania systemu operacyjnego ! Definicja interfejsu użytkownika ! Udostępnianie systemu plików ! Udostępnianie środowiska do wykonywania programów użytkownika # mechanizm ładowania i uruchamiani programów # mechanizmy synchronizacji i komunikacji procesów ! Sterowanie urządzeniami wejścia-wyjścia ! Obsługa podstawowej klasy błędów ! Zarządzanie zasobami (sprzęt i oprogramowanie) systemu komputerowego Systemy operacyjne – wprowadzenie 5 Definiowanie interfejsu użytkownika: system operacyjny dostarcza użytkownikom zbiór poleceń lub system okienkowy wraz z odpowiednim menu, który umożliwia interakcję z systemem komputerowym. Udostępnianie systemu plików: system operacyjny organizuje i ułatwia dostęp do informacji (zwłaszcza gramodzonej w pamięci masowej) np. w postaci hierarchicznego systemu plików. Udostępnianie środowisko do wykonywania programów: system operacyjny dostarcza struktur danych do organizacji wykonywania programu oraz zachowywania i odtwarzania stanu przetwarzania (procesy i przełączanie kontekstu). System operacyjny udostępnia też programistom mechanizmy komunikacji pomiędzy procesami (kolejki komunikatów, strumienie, pamięć współdzielona) oraz mechanizmy synchronizacji procesów (np. semafory, monitory). Sterowanie urządzeniami wejścia-wyjścia: inicjalizacja pracy urządzeń zewnętrznych oraz pośrednictwo w efektywnym przekazywaniu danych pomiędzy jednostką centralną a urządzeniami zewnętrznymi. Obsługa podstawowej klasy błędów: reakcja na błędy użytkowników (np. niedostępność zasobów, brak prawa dostępu), programistów (np. błąd dzielenie przez 0), systemu (np. błąd braku strony) Funkcja zarządzania zasobami nie jest funkcją bezpośrednio wspomagającą użytkownika lecz mającą na celu optymalizację wykorzystania zasobów przez wielu użytkowników 5 Zarządzanie zasobami systemu komputerowego ! Przydział zasobów ! Synchronizacja dostępu do zasobów ! Ochrona i autoryzacja dostępu do zasobów ! Odzyskiwanie zasobów ! Rozliczanie — gromadzenie danych o wykorzystaniu zasobów Systemy operacyjne – wprowadzenie 6 Przydział zasobów: realizacja żądań dostępu do zasobów w taki sposób, że zasoby używane są zgodnie z intencją użytkowników (np. zagwarantowanie wyłącznego dostępu drukarki). Synchronizacja dostępu do zasobów: strategia przydziału zasobów gwarantu-jąca bezpieczeństwo, żywotność, brak zakleszczenia, sprawiedliwość oraz optymalność ich wykorzystania. Ochrona i autoryzacja dostępu do zasobów: dopuszczanie możliwości użytkowania zasobu tylko przez osoby uprawnione i w zakresie przydzielonych im uprawnień. Odzyskiwanie zasobów: dołączanie zwolnionych zasobów do zbioru zasobów wolnych po zakończeniu ich użytkowania. Rozliczanie: rejestrowanie i udostępnianie informacji o wykorzystaniu zasobów w celach kontrolnych i rozrachunkowych. 6 Zasoby zarządzane przez system operacyjny ! Procesor — przydział czasu procesora ! Pamięć # alokacja przestrzeni adresowej dla procesów # transformacja adresów ! Urządzenia zewnętrzne # udostępnianie i sterowanie urządzeniami pamięci masowej # alokacja przestrzeni dyskowej # udostępnianie i sterownie drukarkami, skanerami itp. ! Informacja (system plików) # organizacja i udostępnianie informacji # ochrona i autoryzacja dostępu do informacji Systemy operacyjne – wprowadzenie 7 Procesor jest zasobem współdzielonym przez wiele procesów, w związku z czym zadaniem systemu operacyjnego jest przydział kwantu czasu procesora i wywłaszczanie procesu, który wykorzystał już swój czas lub nie może kontynuować przetwarzania ze względu na brak gotowości urządzeń wejściawyjścia. Pamięć jest zasobem, do którego proces musi najczęściej mieć wyłączny dostęp. Zadaniem systemu jest zatem utrzymywanie informacji o zajętości przestrzeni adresowej, znajdowanie i przydzielanie odpowiednich fragmen-tów wolnej pamięci na żądanie procesów lub innych modułów systemu operacyjnego. System operacyjny pośredniczy również w transformacji adresów wirtualnych na fizyczne w systemach z segmentacją lub stronicowaniem przez organizacja tablicy segmentów lub stron, obsługę błędów strony itp. Urządzenia zewnętrzne są stosunkowo wolne, w związku z czym w celu poprawy efektywności zarządzanie tymi urządzeniami wymaga odpowiedniej organizacji systemu przerwań oraz buforowania danych, ewentualnie spoolingu. Osobnym zagadnieniem jest zarządzanie urządzeniami pamięci masowej, zwłaszcza odpowiednia organizacja przestrzeni dyskowej oraz optymalizacja ruchu głowic dyskowych. Informacja jest z punktu widzenia użytkownika najważniejszym zasobem, gdyż jej przetwarzanie jest celem systemu komputerowego. System ope-racyjny odpowiada za organizację gromadzenia i udostępniania informacji, jej ochronę przed niepowołaną ingerencją, spójność w przypadku awarii itp. 7 Klasyfikacja systemów operacyjnych ze względu na sposób przetwarzania ! Systemy przetwarzania bezpośredniego (ang. on-line processing systems) — systemy interakcyjne # występuje bezpośrednia interakcja pomiędzy użytkownikiem a systemem # wykonywanie zadania użytkownika rozpoczyna się zaraz po przedłożeniu ! Systemy przetwarzania pośredniego (ang. off-line processing systems) — systemy wsadowe # występuje istotna, nieznana zwłoka czasowa między przedłożeniem zadania a rozpoczęciem jego wykonywania # niemożliwa jest ingerencja użytkownika w wykonywanie zadania Systemy operacyjne – wprowadzenie 8 W przypadku systemu przetwarzania bezpośredniego użytkownik przedkłada zadanie i oczekuje na wyniki. W trakcie przetwarzania jest zatem możliwa interakcja pomiędzy użytkownikiem a systemem (aplikacją). W przypadku przetwarzania pośredniego zadanie jest realizowane w czasie wybranym przez system. Po przedłożeniu zadania ingerencja użytkownika jest niemożliwa. Wszystkie dane muszą być zatem dostępne w momencie przedkładania zadania, a jakikolwiek błąd programowy (np. niekompletność danych) oznacza konieczność przedłożenia i wykonania zadania ponownie. 8 Klasyfikacja systemów operacyjnych ze względu na dopuszczalną liczbę wykonywanych programów ! Systemy jednoprogramowe — niedopuszczalne jest rozpoczęcie wykonywania następnego zadania użytkownika przed zakończeniem poprzedniego ! Systemy wieloprogramowe — dopuszczalne jest istnienie jednocześnie wielu zadań (procesów), którym kolejno przydzielany jest procesor. Zwolnienie procesora następuje w wyniku # żądania przydziału dodatkowego zasobu # zainicjowaniu operacji wejścia-wyjścia # przekroczenia ustalonego limitu czasu (kwantu czasu) — systemy z podziałem czasu (ang. time-sharing systems) Systemy operacyjne – wprowadzenie 9 Systemy jednoprogramowe zwane też jednozadaniowymi umożliwiają uruchomienie jednego zadania użytkownika, które ewentualnie może być wykonywane współbieżnie z pewnymi procedurami systemu operacyjnego. Systemy wieloprogramowe (wielozadaniowe) dostarczają mechanizm przełączania kontekstu umożliwiający zachowanie stanu wykonywania określonego programu (stanu procesu), a następnie odtworzenie stanu wykonywania innego programu (w szczególności innego wykonywania tego samego programu). 9 Klasyfikacja systemów operacyjnych ze względu na liczbę użytkowników ! Systemy dla jednego użytkownika — zasoby systemu przeznaczone są dla jednego użytkownika (np. w przypadku komputerów osobistych), nie ma mechanizmów autoryzacji dostępu, a mechanizmy ochrony informacji są ograniczone ! Systemy wielodostępne — wielu użytkowników może jednocześnie korzystać ze współdzielonych zasobów systemu w taki sposób, że żaden z nich nie musi być świadomy istnienia innych użytkowników, a system synchronizuje dostęp do zasobów i gwarantuje ochronę informacji przed niepowołaną ingerencją Systemy operacyjne – wprowadzenie 10 W systemach dla jednego użytkownika nie ma problemu autoryzacji, czyli konieczności identyfikowania zleceniodawcy poszczególnych zadań. Mechanizmy ochrony są ograniczone w tym sensie, że nie ma potrzeby ochrony zasobów jednego użytkownika przed drugim użytkownikiem tego samego systemu operacyjnego, ale w czasie powszechności sieci rozległych istnieje jednak problem ochrony zasobów przed ingerencją z zewnątrz. System operacyjny w przypadku wielodostępu musi zagwarantować, że jeden użytkownik nie jest w stanie zakłócić pracy innych użytkowników. Jest to problem właściwego udostępniania zasobów oraz dostępności mechanizmów ochrony „prywatnych” zasobów jednego użytkownika przed ingerencją innego. 10 Inne rodzaje systemów operacyjnych ! Systemy czasu rzeczywistego (ang. real-time systems) — umożliwiają wyspecyfikowanie czasu zakończenie przetwarzania zadania, tzw. linii krytycznej (ang. deadline) ! Systemy sieciowe i rozproszone (ang. network and distributed systems) — umożliwiają zarządzanie zbiorem rozproszonych jednostek przetwarzających, czyli zbiorem jednostek (komputerów), które są zintegrowane siecią komputerową i nie współdzielą fizycznie zasobów Systemy operacyjne – wprowadzenie 11 W systemach czasu rzeczywistego priorytetem jest minimalizacja czasu odpowiedzi (czyli czasu realizacji zadania). Jest to szczególnie istotne we wszelkiego rodzaju systemach sterowania w czasie rzeczywistym (np. w komputerach pokładowych samochodów, samolotów, jednostek pływających itp.) Rozproszone systemy operacyjne zapewniają, że system komputerowy złożony z autonomicznych jednostek przetwarzających połączonych siecią komputerową postrzegany jest jako całość, a zasoby tego systemu udostępniane są w taki sam sposób niezależnie od ich fizycznej lokalizacji. Cecha ta odróżnia systemy rozproszone od systemów sieciowych, które również umożliwiają dostęp do zdalnych zasobów, ale nie ukrywają faktu fizycznego rozproszenia tych zasobów. Inaczej mówiąc, w systemie sieciowym odróżnia się dostęp lokalny i dostęp zdalny do zasobów. 11 Znaczenie wiedzy z zakresu systemów operacyjnych ! Wybór systemu operacyjnego jest jedną z najważniejszych decyzji przy wyborze całego systemu komputerowego ! Funkcje systemu operacyjnego są często bezpośrednio wykorzystywane przez użytkownika ! Wiele koncepcji i technik wyrastających i związanych z systemami operacyjnymi ma znaczenie uniwersalne Systemy operacyjne – wprowadzenie 12 12 Ogólna struktura systemu operacyjnego interpreter poleceń programy systemowe Jądro systemu operacyjnego Sprzęt Systemy operacyjne – wprowadzenie 14 Nie ma precyzyjnego określenia, które składniki wchodzą w skład systemu operacyjnego jako jego części. W ogólnym przypadku w strukturze systemu operacyjnego wyróżnia się jądro oraz programy systemowe, które dostarczane są razem z systemem operacyjnym, ale nie stanowią integralnej części jądra. Jądro jest zbiorem modułów, które ukrywają szczegóły sprzętowe realizacji systemu komputerowego, udostępniając pewien zestaw usług wykorzystywanych między innymi do implementacji programów systemowych. Z punktu widzenia kontaktu z użytkownikiem istotny jest interpreter poleceń, który może być częścią jądra lub programem systemowym (np. w systemie UNIX). Interpreter wykonuje pewne polecenia wewnętrznie (tzn. moduł lub program interpretera dostarcza implementacji tych poleceń), jeśli natomiast nie może ich wykonać wewnętrznie zleca wykonanie odpowiednich programów na zewnątrz interpretera. 14 Zasada działania systemu operacyjnego ! Odwołania do jądra systemu przez system przerwań lub specjalne instrukcje (przerwanie programowe) ! Dualny tryb pracy — tryb użytkownika (ang. user mode) i tryb systemowy (ang. system mode) ! Wyróżnienie instrukcji uprzywilejowanych, wykonywanych tylko w trybie systemowym ! Sprzętowa ochrona pamięci ! Uprzywilejowanie instrukcji wejścia-wyjścia ! Przerwanie zegarowe Systemy operacyjne – wprowadzenie 15 Konstrukcja jądra systemu operacyjnego wymaga wspomagania sprzętowego. Wspomaganie sprzętowe polega na tym, że w określonych sytuacja sprzęt (np. procesor, sterownik przerwań) lub program w wyniku wykonania specjalnej instrukcji zgłasza przerwanie, które powoduje przekazania sterowania do jądra systemu operacyjnego. Program jądra systemu operacyjnego jest więc zbiorem procedur obsługi przerwań. Znaczna część przerwań obsługiwanych przez system operacyjny to przerwania sprzętowe, zgłaszane wewnętrznie przez procesor lub pochodzące z urządzeń zewnętrznych i przekazywane przez sterownik przerwań. Część przerwań to przerwania programowe, wynikające z wykonania specjalnej instrukcji procesora, umożliwiające programom użytkownika dostęp do wybranych funkcji jądra systemu operacyjnego. Wyróżnienie dwóch (w niektórych procesorach nawet większej liczby) poziomów pracy (trybów pracy) umożliwia narzucenie sprzętowych restrykcji odnośnie wykonywania niektórych instrukcji. Proces użytkownika uruchamiany jest w trybie nieuprzywilejowanym, w związku z czym nie może wykonać pewnych instrukcji dostępnych tylko w trybie uprzywilejowanym i tym samym ma ograniczoną możliwość swobodnego ingerowania w „obszary” zastrzeżone dla systemu operacyjnego. Sprzętowa ochrona pamięci jest niezbędna w celu zabezpieczenia przed niewłaściwą ingerencją (dotyczy to szczególnie pamięci jądra systemu operacyjnego) przy jednoczesnym zachowaniu efektywności dostępu. Przerwanie zegarowe umożliwia okresowe oddanie sterowania do jądra systemu operacyjnego (uniemożliwia utratę kontroli przez jądro na systemem komput.). 15 Przerwania w systemie komputerowym Przerwanie jest reakcją na asynchroniczne zdarzenie, polegającą na automatycznym zapamiętaniu bieżącego stanu procesora w celu późniejszego odtworzenia oraz przekazaniu sterowania do ustalonej procedury obsługi przerwania. Podział przerwań ze względu na źródło: ! przerwania zewnętrzne — od urządzeń zewnętrznych ! przerwania programowe — wykonanie specjalnej instrukcji ! przerwania diagnostyczne — pułapki, błędy programowe i sprzętowe Systemy operacyjne – wprowadzenie 16 System przerwań umożliwia niesekwencyjne (współbieżne) wykonywanie programów. Zmiana sekwencji wykonywania instrukcji polega na tym, że w reakcji na przerwanie następuje zapamiętanie bieżącego stanu przetwarzania (najważniejszych rejestrów procesora), przekazanie sterowania do ustalonej procedury obsługi i rozpoczęcie wykonywania instrucji tej procedury. W szczególności może to prowadzić do tzw. przełączenia kontekstu, tj. przkazania sterowania po zakończeniu procedury obsługi przerwania do innego przetwarzania, niż to które zostało przerwane. Przerwania od urządzeń zewnętrznych zgłaszane są po zakończeniu operacji wejwyj i przkezywane do procesora najczęściej przez sterownik przerwań. Przerwania programowe są wynikiem wykonania specjalnej instrukcji procesora, np. int (interrupt) w procesorach firmy Intel, sc (system call) w procesorach PowerPC firmy Motorola. Przerwania diagnostyczne są generowane przez wewnętrznie przez procesor w sytuacji zajścia określonego stanu. Należą do nich pułapki, błędy programowe i sprzętowe. Pułapka jest przerwaniem które pojawia się, gdy licznik rozkazów osiągnie określoną wartość, tzn. będzie wskazywał na instrukcję, na której założono pułapkę. Mechanizm ten wykorzystywany jest w konstrukcji debugger’ów. Przykładem błędu programowego jest błąd dzielenia przez 0 lub naruszenie ochrony pamięci. W reakcji na to przerwanie jądro usuwa proces, który je spowodował. Błędem sprzętowym wymagającym odpowiedniej obsługi ze strony systemu operacyjnego jest błąd braku strony w przypadku systemów z pamięcią stronicowaną. 16 Zasady ochrony pamięci adres ! W wyniku wykonywania programu następuje odwołanie do komórek pamięci o określonych adresach ! Zaalokowane obszary pamięci opisane są przez dwa parametry: bazę (ang. base) i granicę (ang. limit) rejestr bazowy ú TAK < TAK rejestr graniczny pamięć Systemy operacyjne – wprowadzenie 17 Rejestr graniczny określa rozmiar opisywanego obszaru pamięci. Adresy dostępne w tym obszarze należą do przedziału <baza, baza+granica). Jeśli żądany adres jest mniejszy niż baza lub jest nie mniejszy niż baza+granica następuje zgłoszenie przerwania typu pułapka i sterowanie przekazywane jest do odpowiedniej procedury systemu operacyjnego. W wyniku wykonania tej procedury następuje najczęściej zakończenie wykonywania procesu, który spowodował naruszenie ochrony pamięci. 17 Przerwanie zegarowe programy użytkow. ! Przerwanie zegarowe generowane jest przez czasomierz (ang. timer) po wyznaczonym okresie czasu. ! Obsługa przerwania zegarowego oznacza przekazanie sterowania do jądra systemu operacyjnego, umożliwiając w ten sposób wykonanie pewnych zdań okresowych oraz uniemożliwiając zawłaszczenie procesora przez program użytkownika. program 2 przerwanie zegarowe program 1 program jądra czas Systemy operacyjne – wprowadzenie 18 Czasomierz jest licznikiem, na którego jedno z wejść podawane są impulsy o stałej częstotliwości, niezależnej od częstotliwości zegara procesora. Do licznika wpisywana jest pewna wartość, która zmniejszana jest z każdym impulsem. Po osiągnięciu wartości 0 generowane jest przerwanie zegarowe. W wyniku przerwania zegarowego system operacyjny przejmuje sterowanie wykonuje pewne zadania okresowe (zbiera dane statystyczne w celu optymializacji pracy systemu) i podejmuje decyzje, któremu procesowi przekazać procesor. Jeśli procesor przekazywany jest cyklicznie kolejnym procesom, a stan procesu, który został przerwany, jest zapamiętywany w celu późniejszego odtworzenia stanu i kontynuacji przetwarzania, to mamy do czynienia z systemem z podziałem czasu (ang. time-sharing systems). Zapamiętanie stanu jednego procesu i odtworzenie stanu innego procesu nazywane jest przełączeniem kontekstu. W przypadku systemów z podziałem czasu czas nie przerwanej pracy jednego procesu, zwany kwantem czasu, jest stosunkowo krótki, żeby każdy z procesów (użytkowników) miał wrażenie, że ma procesor do swojej wyłącznej dyspozycji. W systemach wsadowych czas nie przerwanej pracy systemu jest dłuższy i jest często dostarczany przez użytkownika. Przekroczenie tego czasu może oznaczać odrzucenie zadania i konieczność powtórzenia wykonania w czasie późniejszym od początku. System operacyjny może też zdecydować o przydziale dodatkowego czasu. 18 Uruchamianie zdań — podstawowe pojęcia ! Użytkownik (ang. user) — jednostka zlecająca wykonywanie zadań ! Praca (ang. job) — zbiór akcji niezbędnych do realizacji określonego przetwarzania, np. sekwencja: kompilacja, załadowanie (uruchomienie) programu i wykonanie programu ! Proces (zadanie, ang. process, task) — najmniejsza jednostka aktywności zarządzana przez system operacyjny, która może ubiegać się o zasoby systemu komputerowego Systemy operacyjne – wprowadzenie 19 Użytkownikiem systemu może być określona osoba lub jakiś inny system (np. system zarządzania bazą danych), które potrzebuje takiej samej ochrony i dostępności zasobów na takich samych zasadach, jak użytkownik-człowiek. Praca, jako zbiór zadań, może być różnie zorganizowana, tzn. przedłożenie następnego zadania może zależeć od wyników wykonania akcji poprzednich, wyniki poprzednich zadań mogą być przekazywane bezpośrednio jako dane wejściowe dla innych zadań (np. potok). 19 Rodzaje użytkowników systemu operacyjnego ! Użytkownik końcowy — korzysta z poleceń i programów użytkowych ! Programista — w swoich programach korzysta z usług jądra (jako użytkownik końcowy głównie z edytorów, kompilatorów i debuggerów) ! Administrator — poprzez system praw ustala zasady dostępności zasobów dla użytkowników oraz rozwiązuje bieżące problemy związane w funkcjonowaniem systemu ! Programista systemowy — modyfikuje program jądra stosownie do aktualnych potrzeb użytkowników lub urządzeń Systemy operacyjne – wprowadzenie 20 Użytkownik końcowy korzysta najczęściej z poleceń systemu operacyjnego lub programów dostarczanych wraz z systemem oraz aplikacji przygotowanych dla konkretnych zastosowań (np. system finansowo-księgowy, kadrowy, magazynowy itp.) Programista tworzy programy (aplikacje), w których wykorzystywane są usługi jądra systemu operacyjnego oraz ewentualnie programy lub biblioteki procedur zbudowane ponad jądrem. Usługi jądra wykorzystywane są zatem bezpośrednio lub pośrednio poprzez procedury biblioteczne, dostępne w systemie na potrzeby aplikacji tworzonych w odpowiednich narzędziach do budowy aplikacji. Administrator jest użytkownikiem uprzywilejowanym, którego dostęp do zasobów systemu nie jest ograniczony żadnymi restrykcjami. Jego zadaniem jest nadzorowanie pracy systemu oraz wykonywanie zadań, które ze względów bezpieczeństwa całości systemu nie mogą być wykonywane przez dowolnego użytkownika. Programista systemowy jest użytkownikiem, który zna budowę systemu operacyjnego oraz sprzęt, związany z danym systemem i potrafi dokonać odpowiednich modyfikacji programu jądra w celu dostosowania go do bieżących potrzeb zarówno w zakresie funkcjonalności (obsługa nowych urządzeń) jak i efektywności pracy systemu. 20 Koncepcja procesu ! Proces jest elementarną jednostką pracy (aktywności) zarządzaną przez system operacyjny, która może ubiegać się o zasoby systemu komputerowego ! Proces = wykonujący się program ! Zasoby potrzebne do wykonania procesu # czas procesora # pamięć operacyjna # pliki # urządzenia wejścia-wyjścia ! Proces wykonuje kod programu użytkownika (proces użytkownika) lub kod systemowy (proces systemowy) Systemy operacyjne – wprowadzenie 21 Koncepcja procesu jest jednym z najważniejszych pojęć we współczesnych systemach operacyjnych. Proces służy do organizowania wykonywania programu w ten sposób, że stanowi on powiązanie niezbędnych zasobów systemu komputerowego i umożliwia kontrolę stanu tych zasobów, związaną z wykonywaniem programu. Istotne jest rozróżnienie pomiędzy procesem a programem. Program jest zbiorem instrukcji. W tym sensie jest tylko elementem procesu, znajdującym się w jego segmencie kodu (zwanym też segmentem tekstu). Poza tym do wykonania programu potrzebne są dodatkowe zasoby (procesor, pamięć itp.) Program najczęściej nie zmienia się w czasie wykonywania (nie ulega modyfikacji), podczas gdy stan procesu ulega zmianie: zmienia się stan wykonywania programu podobnie jak stan większości zasobów z tym związanych. Zmianie w wyniku wykonywania procesu ulega np. segment danych, segment stosu, stan rejestrów procesora itp. Procesem jest więc cały ten kontekst niezbędny do wykonania programu. 21 Stany procesu ! Nowy (ang. new) — proces jest tworzony ! Aktywny (ang. active) — wykonywane są instrukcje programu ! Zawieszony (oczekujący, ang. suspanded, waiting) — proces oczekuje na jakieś zdarzenie, np. na zakończenie operacji wejścia-wyjścia, na przydział dodatkowego zasobu, synchronizuje się z innymi procesami ! Gotowy (ang. ready) — proces czeka na przydział procesora ! Zakończony (ang. terminated) — proces zakończył działanie i zwalnia zasoby Systemy operacyjne – wprowadzenie 22 W zależności od stanu wykonywania programu i dostępności zasobów można wyróżnić następujące, ogólne stany procesu: NOWY — formowanie procesu, czyli gromadzenia zasobów niezbędnych do rozpoczęcia wykonywania procesu z wyjątkiem procesora (kwantu czasu procesora), a po zakończeniu formowania oczekiwanie na przyjęcie do kolejki procesów gotowych. AKTYWNY — wykonywanie instrukcji programu danego procesu i wynikająca z ich wykonywania zmiana stanu odpowiednich zasobów systemu. ZAWIESZONY — zatrzymanie wykonywania instrukcji program danego procesu ze względy na potrzebę przydziału dodatkowych zasobów, konieczność otrzymania danych lub osiągnięcia odpowiedniego stanu przez obiekty na zewnątrz procesu (np. urządzenia zewnętrzne lub inne procesy). GOTOWY — dostępność wszystkich niezbędnych zasobów z wyjątkiem procesora (kwantu czasu procesora). ZAKOŃCZONY — zakończenie wykonywania programu, zwolnienie większości zasobów i oczekiwanie na możliwość przekazania informacji o zakończeniu innym procesom lub jądru systemu operacyjnego. 22 Cykl zmian stanów procesu przerwanie nowy zakończony gotowy decyzja planisty wyjście aktywny przyjęcie zakończenie operacji wej-wyj lub wystąpienie zdarzenia oczekujący Systemy operacyjne – wprowadzenie zażądanie operacji wejwyj lub oczekiwanie na zdarzenie 23 Przejście ze stanu gotowy do aktywny wynika z decyzji modułu szeregującego procesy, która oparta jest na priorytetach procesów. Jeśli w systemie jest jeden procesor, to aktywny może być tylko jeden proces, podczas gdy inne znajdują się w pozostałych stanach. Przejście ze stanu aktywny bezpośrednio do gotowy wynika z wywłaszczenia w systemach z podziałem czasu, w których proces otrzymuje tylko kwant czasu na wykonanie kolejnych instrukcji, po czym następuje przełączenie kontekstu i kolejny kwant czasu otrzymuje inny proces (rotacyjny algorytm szeregowania zadań). 23 Elementy składowe jądra systemu operacyjnego ! Moduł zarządzania procesami ! Moduł zarządzania pamięcią operacyjną ! Moduł zarządzania plikami ! Podsystem wejścia-wyjścia ! Moduł zarządzania pamięcią pomocniczą ! Interfejs sieciowy ! Podsystem ochrony ! Interpreter poleceń (?) Systemy operacyjne – wprowadzenie 24 24 Moduł zarządzania procesami ! Tworzenie i usuwanie procesów ! Wstrzymywanie i wznawianie procesów (przełączanie kontekstu) ! Planowanie przydziału procesora (szeregowanie procesów) ! Dostarczanie mechanizmów synchronizacji i komunikacji procesów ! Dostarczanie mechanizmów obsługi zakleszczeń (ang. deadlock) Systemy operacyjne – wprowadzenie 25 25 Moduł zarządzania pamięcią operacyjną ! Przydzielanie i zwalnianie obszarów pamięci ! Ochrona pamięci — utrzymywanie informacji o stanie zajętych obszarów pamięci (prawa dostępu, właściciel itp.) ! Realizacja wymiany procesów ! Realizacja wymiany stron w przypadku wirtualizacji Systemy operacyjne – wprowadzenie 26 26 Zarządzanie plikami ! Tworzenie i usuwanie plików ! Tworzenie i usuwanie katalogów ! Dostarczanie elementarnych operacji manipulowania zawartością plików (zapis, odczyt, usuwanie zawartości) ! Dostarczanie elementarnych operacji do manipulowania katalogami ! Odwzorowanie plików na obszary pamięci pomocniczej ! Składowanie plików na trwałych nośnikach pamięci Systemy operacyjne – wprowadzenie 27 27 Podsystem wejścia-wyjścia ! Zarządzanie pamięcią przeznaczoną na potrzeby obsługi urządzeń zewnętrznych # buforowanie # zarządzanie pamięcią podręczną # spooling (simultaneous peripheral operation on-line — jednoczesna, bezpośrednia praca urządzeń) ! Zapewnianie dostępności modułów sterujących urządzeń (programów obsługi, ang. device drivers) ! Udostępnianie ogólnego interfejsu do modułów sterujących urządzeń Systemy operacyjne – wprowadzenie 28 Udostępnianie ogólnego interfejsu do modułów sterujących urządzeń oznacza, że urządzenia dostępne są poprzez taki sam lub zbliżony zbiór funkcji, które są jednak wykonywane w różny sposób stosownie do rodzaju urządzenia. Dostarczanie implementacji tych funkcji jest zadaniem samego modułu sterującego określonego urządzenia. Spooling polega na tym, że dysk używany jest jako olbrzymi bufor służący do przechowywania danych czytanych z maksymalnym wyprzedzeniem z wolnych urządzeń wejściowych (np. czytników kart) lub gromadzenia danych przesyłanych do wolnych urządzeń wyjściowych (np. drukarek). Umieszczanie danych bezpośrednio w pamięci przez cały czas ich czytania lub zapisywania oznaczałoby konieczność utrzymywania odpowiedniego obszaru pamięci przez stosunkowo długi czas. 28 Zarządzanie pamięcią pomocniczą (przestrzenią dyskową) ! Zarządzanie obszarami wolnymi ! Przydzielanie przestrzeni dyskowej ! Planowanie przydziału obszarów pamięci dyskowej Systemy operacyjne – wprowadzenie 29 29 Podsystem ochrony ! Utrzymywanie praw dostępu ! Kontrola praw przy dostępie do zasobów ! Udostępnianie mechanizmu zmian praw dostępu ! Autoryzacja (ang. authorisation) i uwierzytelnianie (ang. authentication) użytkownika Systemy operacyjne – wprowadzenie 30 Prawa dostępu określają, w jaki sposób i w jakim zakresie użytkownik (lub jego procesy) może korzystać z zasobów systemu operacyjnego. Autoryzacja oznacza konieczność identyfikowania użytkownika (procesu) w systemie przy dostępie do zasobów, czyli konieczność „podpisania się” pod odpowiednim żądaniem zgłaszanym do systemu operacyjnego. Uwierzytelnienie oznacza potwierdzenie (uwiarygodnienie, udowodnienie) swojej tożsamości w taki sposób, żeby uniemożliwić użytkownikom podanie się za kogoś innego. Uwierzytelnianie najczęściej wykonuje się podczas logowania użytkownika w systemie poprzez podanie hasła, analizę linii papilarnych, badanie tęczówki oka itp. 30 Interpreter poleceń ! Pobieranie poleceń od użytkownika ! Interpretowanie poleceń ! Wykonywanie poleceń ! Przekazywanie użytkownikowi wyników wykonania poleceń, informacji o problemach lub błędach Systemy operacyjne – wprowadzenie 31 Interpreter poleceń może być zrealizowany jako część jądra systemu operacyjnego. Może też być zrealizowany poza jądrem, działa wówczas jako proces w trybie użytkownika, korzystając z usług jądra systemu operacyjnego na zasadach ogólnych (tak jest w systemie UNIX). Interpreter wykonuje pewne polecenia wewnętrznie (tzn. moduł lub program interpretera dostarcza implementacji tych poleceń), jeśli natomiast nie może ich wykonać wewnętrznie zleca wykonanie tych poleceń na zewnątrz poprzez uruchomienie odpowiednich programów. 31 Warstwy jądra systemu operacyjnego zarządzanie informacją (system plików) zarządzanie urządzeniami zewnętrznymi zarządzanie procesami (warst. wyż.) zarządzanie pamięcią zarządzanie procesami (warstwa niższa) maszyna podstawowa Systemy operacyjne – wprowadzenie 32 Struktura warstwowa jest najczęściej stosowaną w projektowani i implementacji jądra systemu operacyjnego. Idea podejścia warstwowego polega na tym, że operacje warstwy wyższej implementowane są z wykorzystaniem usług warstwy niższej. Maszynę podstawową stanowi sprzęt (procesor, pamięć, interfejs urządzeń zewnętrznych). Warstwa niższa moduł zarządzania procesami odpowiedzialna jest za planowanie przydziału procesora (szeregowanie zadań) oraz synchronizacje procesów. Warstwa wyższa odpowiedzialna jest za tworzenie i usuwanie procesów oraz za mechanizmy komunikacji pomiędzy procesami. Zarządzanie pamięcią sprowadza się do przydziału i zwalniania bloków pamięci. Zarządzanie urządzeniami wejścia wyjścia obejmuje przydział i zwalnianie tych urządzeń oraz utrzymywanie ich stanu. Warstwa zarządzanie informacją dostarcza podstawowych operacji na plikach (tworzenie, usuwanie, zapis, odczyt itp.) 32 Literatura 1. A. Silberschatz, J.L. Peterson, Podstawy systemów operacyjnych, WNT, W-wa, 2000. 2. Maurice J. Bach: Budowa systemu operacyjnego Unix®, WNT, W-wa 1995 3. Berny Goodheart, James Cox: Sekrety magicznego ogrodu. UNIX® System V Wersja 4 od środka, WNT, Warszawa 2001 4. Peter P. Silvester: System operacyjny Unix™, WNT, Warszawa 1990 5. Jerzy Marczyński: UNIX użytkowanie i administrowanie, Helion, 1995 6. Marc J. Rochkind: Programowanie w systemie Unix dla zaawansowanych, WNT, Warszawa 1993 7. Richard W. Stevens: Programowanie zastosowań sieciowych w systemie Unix, WNT, Warszawa 1995 8. Michel Gabassi, Bertrand Dupouy: Przetwarzanie rozproszone w systemie Unix, Lupus, Warszawa 1995 9. E. Nemeth, G. Snyder S. Seebass, T. R. Hein: Przewodnik administratora systemu UNIX®, WNT, Warszawa 1998 10. Æleen Frisch: UNIX. Administracja systemu, Of. Wyd. READ ME, W-wa 1997 Systemy operacyjne – wprowadzenie 33 Pozycja nr 1 ma charakter teoretyczny i dotyczy ogólnej budowy i funkcjonowania systemów operacyjnych. Pozycje nr 2 i 3 maja charakter zbliżony do pozycji nr 1 w odniesieniu do systemu UNIX. Pozycje 4 i 5 dotyczą użytkowania systemu UNIX, czyli omawiają kwestie istotne dla użytkownika końcowego. Pozycje 6–8 dotyczą zagadnień programowania z wykorzystaniem funkcji jądra systemu operacyjnego UNIX oraz częściowo innych mechanizmów systemowych funkcjonujących poza jądrem. Pozycje 9 i 10 omawiają zagadnienia administracyjne w systemie UNIX. 33