Podstawy systemów operacyjnych

Podobne dokumenty
Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wprowadzenie do systemów operacyjnych. mgr inż. Krzysztof Szałajko

Budowa systemów komputerowych

Systemy operacyjne. Paweł Pełczyński

Wykład 12. Ochrona. Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Działanie systemu operacyjnego

Wprowadzenie do systemów operacyjnych

Proces y i y w i ąt ą ki

Działanie systemu operacyjnego

Działanie systemu operacyjnego

Systemy Operacyjne. wykład 1. Adam Kolany. Październik, Instytut Techniczny Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

4. Procesy pojęcia podstawowe

projektowanie systemu

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Programowanie współbieżne Wykład 2. Iwona Kochańska

Działanie systemu operacyjnego

Zarządzanie procesami i wątkami

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Informatyka. informatyka i nauki komputerowe (computer science)

Wykład 2. Struktury systemów komputerowych. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

LEKCJA TEMAT: Zasada działania komputera.

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu. Blok kontrolny procesu

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Stan procesu. gotowy - czeka na przydział procesora, zakończony - zakończył działanie.

System plików. Warstwowy model systemu plików

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Struktura systemów komputerowych

Architektura i administracja systemów operacyjnych

Systemy operacyjne III

4. Procesy pojęcia podstawowe

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

5. Model komunikujących się procesów, komunikaty

Procesy, wątki i zasoby

Prezentacja systemu RTLinux

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Systemy operacyjne III

Systemy operacyjne III

Wprowadzenie do systemów operacyjnych

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Wprowadzenie do programowania współbieżnego

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Program wykładów. Strona WWW przedmiotu: Program ćwiczeń projektowych

Architektura systemu komputerowego

Wykład 11. Ochrona + Bezpieczeństwo cz. I. Wojciech Kwedlo,Krzysztof Bandurski, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

dr inż. Jarosław Forenc

Systemy operacyjne III

2.1 Pojęcie wątku Modele wielowątkowości Wybrane zagadnienia wielowątkowości Wątki POSIX... 18

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Podstawy Informatyki Systemy operacyjne

Systemy operacyjne. Literatura: A. Silberschatz, J.L. Peterson, P.B. Galwin, Podstawy systemów operacyjnych, WNT, Warszawa 2006

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Zarządzanie procesorem

Struktury systemów operacyjnych

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora)

4. Procesy pojęcia podstawowe

Systemy operacyjne. Wojciech Kwedlo Wydział Informatyki PB, p. 127 aragorn.pb.bialystok.pl/~wkwedlo

Systemy operacyjne system przerwań

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Urządzenia wejścia-wyjścia

Struktury systemów operacyjnych

Podstawowe wiadomości o systemach plików.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Technologia informacyjna. Urządzenia techniki komputerowej

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

SYSTEMY OPERACYJNE. kik.pcz.czest.pl/so. (C) KIK PCz Materiały pomocnicze 1 PROWADZI: PODSTAWOWA LITERATURA: ZAJĘCIA: STRONA

Mechanizmy pracy równoległej. Jarosław Kuchta

Czujniki obiektowe Sterowniki przemysłowe

Wykład 7. Zarządzanie pamięcią

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Architektura komputerów

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

ZADANIA SYSTEMÓW OPERACYJNYCH

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Systemy operacyjne System sieciowy UNIX-a

Systemy operacyjne. Studia podyplomowe Wydział Informatyki PB

Zarządzanie pamięcią operacyjną

Jądro systemu operacyjnego

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Procesy, zasoby i wątki

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Architektura komputerów

Transkrypt:

Podstawy systemów operacyjnych mgr inż. Szymon Rydzek szymon.rydzek@icis.pcz.pl

Literatura Abraham Silberschatz, Peter B. Galvin, Podstawy Systemów operacyjnych, WNT 2000. http://rainbow.mimuw.edu.pl/so/ 2

Zakres wykładu I Wprowadzenie, zadania Systemów Operacyjnych, klasyfikacja SO Czym jest system operacyjny Systemy wsadowe, wieloprogramowe SW Systemy z podziałem czasu Systemy dla komputerów osobistych Systemy równoległe i rozproszone Systemy czasu rzeczywistego Struktury systemów komputerowych Działanie systemu komputerowego Struktura wejścia-wyjścia Struktura i hierarchia pamięci Ochrona sprzętowa 3

Zakres wykładu II Procesy Pojęcie procesu Planowanie przydziału procesora Synchronizacja i szeregowanie procesów Zakleszczenia Interfejs i implementacja systemu plików Pojęcie pliku Budowa systemu plików Metody przydziału miejsca na dysku, zarządzanie wolną przestrzenią Rekonstrukcja 4

Zakres wykładu III Ochrona i bezpieczeństwo Mechanizmy ochrony w systemie UNIX Bit SUID w UNIXie Naruszenia bezpieczeństwa Uwierzytelnianie użytkowników 5

Czym jest system operacyjny I System operacyjny jest programem, który pośredniczy pomiędzy użytkownikiem a sprzętem komputerowym. Zadania SO: Ukrywa szczegóły sprzętowe poprzez tworzenie abstrakcji Jednolity dostęp do urządzeń zewnętrznych Zbiory bloków dyskowych widziane jako pliki o symbolicznych nazwach Współbieżne wykonywanie programów Zarządza zasobami Zasoby obiekty niezbędne do wykonywania programu (pamięć, czas procesora, urządzenia we-wy, porty kom.) Ustala strategie przydziału i odzyskiwania dostępu do zasobów (zarządzanie pamięcią, procesami, plikami, urządzeniami) Efektywność zarządzania zasobami decyduje o wydajności wykorzystania sprzętu komputerowego Dostarcza przyjazny interfejs użytkownika 6

Czym jest system operacyjny II Użytkownik 1 Użytkownik 2 Użytkownik n Edytor tekstu Gra komputerowa Programy użytkowe Program graficzny System Operacyjny Sprzęt komputerowy (hardware) 7

Systemy wsadowe I Do zadań systemów operacyjnych pierwszych komputerów należało automatyczne przekazywanie sterowania od jednego zadania do następnego. Zadania w postaci instrukcji sterujących, danych i programu były przekazywane do komputera za pośrednictwem kart perforowanych. Po pewnym czasie komputer wyprowadzał dane wyjściowe, lub obraz pamięci w przypadku, gdy działanie programu zakończyło się niepowodzeniem. W celu przyspieszenia przetwarzania, operator komputera sortował zadania o podobnych wymaganiach i wprowadzał je do komputera w postaci tzw. Wsadu. Jednostka centralna działająca pod nadzorem systemu wsadowego często pozostawała bezczynna, co wynikało z różnicy szybkości przetwarzania i szybkości wczytywania danych przez mechaniczne urządzenia wejściowe. 8

Systemy wsadowe II spool Simultaneous Peripheral Operation On-Line W celu rozwiązania problemu z opóźnieniami operacji we-wy wprowadzono buforowanie (spooling) tych operacji za pomocą dysków magnetycznych. 9

Wieloprogramowe systemy wsadowe Szeregowanie zadań (job scheduling) dzięki gromadzeniu zadań na dysku system może tak wybierać następne zadania do wykonania, aby zwiększyć efektywność wykorzystania czasu jednostki centralnej. Planowanie zadań umożliwia wieloprogramowanie system przechowuje w pamięci pewną liczbę zadań. Gdy aktualnie wykonywane zadanie będzie musiało poczekać na jakąś usługę (np. zakończenie operacji we-wy) system przekaże do wykonywania kolejne zadanie z pamięci. Gdy pierwsze zadanie zakończy oczekiwanie, uzyska z powrotem dostęp do procesora. Dopóki w pamięci są zadania do wykonania dopóty jednostka centralna nie pozostanie bezczynna. 10

Systemy z podziałem czasu Z punktu widzenia użytkownika podstawową wadą sytemu wieloprogramowego jest brak możliwości ingerencji w aktualnie wykonywany program. Zadanie do wykonania musi być odpowiednio przygotowane, a wyniki uzyskuje się po określonym czasie. Logicznym rozszerzeniem wieloprogramowości jest wielozadaniowość (multitasking). Procesor wykonuje na przemian wiele różnych zadań, przy czym przełączenia między nimi następują tak często, że użytkownicy mogą współdziałać z każdym programem podczas jego wykonania. Interakcyjny system komputerowy umożliwia bezpośredni dialog użytkownika z systemem. Użytkownik wydaje instrukcje systemowi lub programowi i uzyskuje natychmiastowe odpowiedzi. 11

Systemy dla komputerów osobistych W systemach operacyjnych dla mikrokomputerów wykorzystuje się wzorce sprawdzone podczas rozwoju systemów dla dużych systemów komputerowych. Przy projektowaniu systemów operacyjnych przeznaczonych dla komputerów osobistych kładzie się nacisk nie na efektywność wykorzystania procesora i zasobów lecz na wygodę użytkowania. W systemach tych szczególnie istotna jest ochrona danych przed niepożądanym dostępem (nieuprawnieni użytkownicy, złośliwe programy wirusy, itd.). 12

Systemy równoległe I Obecnie coraz częściej spotyka się systemy wieloprocesorowe, czyli takie, w których pewna liczba procesorów współpracuje ze sobą, dzieląc szynę komputera, zegar a także pamięć i urządzenia zewnętrzne. Zwiększając liczbę procesorów można oczekiwać, że większą ilość pracy da się wykonać w krótszym czasie. Współczynnik przyspieszenia przy n procesorach jest mniejszy od n. Wynika to z faktu, iż podczas współdziałania pewnej liczby procesorów traci się pewną część czasu na koordynację działania poszczególnych jednostek. Systemy wieloprocesorowe zapewniają większą niezawodność w przypadku awarii jednego procesora zadania dzielone są pomiędzy pozostałe (systemy z łagodną degradacją). 13

Systemy równoległe II W systemach wieloprocesorowych najczęściej używa się modelu wieloprzetwarzania symetrycznego (symmetric multiprocessing), w którym na każdym procesorze działa identyczna kopia systemu operacyjnego. W zależności od potrzeb kopie te komunikują się ze sobą. W niektórych systemach stosuje się wieloprzetwarzanie asymetryczne (asymmetric multiprocessing) polegające na tym, że każdy procesor ma przypisane różne zadania. Takim systemem zawiaduje procesor główny, a pozostałe procesory oczekują na instrukcje od niego, lub wykonują wcześniej przydzielone zadania. Procesor główny jest odpowiedzialny za planowanie i przydział zadań dla procesorów podporządkowanych. Różnica pomiędzy przetwarzaniem symetrycznym i asymetrycznym może wynikać albo z różnic sprzętowych, albo programowych. 14

Systemy rozproszone I W systemach rozproszonych procesory nie dzielą zegara ani pamięci. Każdy procesor ma własną pamięć lokalną. Procesory komunikują się przy pomocy linii komunikacyjnych (szybkich szyn danych, sieci ethernet, linii telefonicznych). Procesory w systemach rozproszonych mogą się znacznie różnić pod względem rozmiaru i przeznaczenia. Mogą być wśród nich mikrokomputery, stacje robocze, czy wielkie systemy komputerowe. Podział zasobów po połączeniu stanowisk o różnych możliwościach użytkownik jednego stanowiska może korzystać z zasobów bądź danych dostępnych na innym stanowisku. Przyspieszenie obliczeń dzielenie obciążenia (load sharing). Jeśli wykonywane zadania można podzielić na zbiór niezależnych obliczeń cząstkowych to system umożliwia współbieżne wykonanie takich obliczeń. 15

Systemy rozproszone II Niezawodność w przypadku awarii jednego węzła pozostałe mogą kontynuować pracę przejmując jego zadania. Warunkiem jest istnienie odpowiedniego zapasu danych i zasobów jeżeli awarii ulegnie węzeł odpowiadający (jako jedyny) za operacje wejściawyjścia to unieruchomiony zostanie cały system. Komunikacja użytkownicy sieci mogą swobodnie komunikować się ze sobą a także współdzielić dane. System rozproszony powinien zadbać o odpowiedni podział zadań na niezależne elementy i odpowiedni przydział obliczeń cząstkowych do węzłów (load balancing). 16

Systemy czasu rzeczywistego Systemy czasu rzeczywistego (real-time) są stosowane tam, gdzie istnieją surowe wymagania na czas wykonania operacji lub przepływu danych. Systemów takich używa się zazwyczaj jako sterownika w urządzeniu o ściśle określonym celu. Czujniki dostarczają dane do systemu, który analizuje otrzymane dane i w zależności od zaistniałej sytuacji tak reguluje działanie kontrolowanego obiektu aby zmieniły się wskazania wejściowe czujników. System czasu rzeczywistego ma ściśle określone ograniczenia czasowe. Przetwarzanie musi się zakończyć przed upływem wyznaczonego czasu, w przeciwnym wypadku system nie będzie spełniał wymagań. Przykładami systemów real-time mogą być: systemy nadzorowania eksperymentów naukowych, obrazowania badań medycznych, sterowania procesami przemysłowymi, sterowniki urządzeń gospodarstwa domowego i wiele innych. 17

Działanie systemu komputerowego Współczesny, uniwersalny system komputerowy składa się z jednostki centralnej (CPU), pewnej liczby sprzętowych sterowników urządzeń połączonych wspólną szyną umożliwiającą komunikację ze wspólną pamięcią. Sterownik pamięci ma za zadanie zapewnić uporządkowany, synchroniczny dostęp do wspólnej pamięci. Podczas rozruchu systemu program rozruchowy (bootstrap program) odpowiada za rozpoczęcie ładowania systemu operacyjnego. Program ten określa stan początkowy wszystkich elementów systemu od rejestrów jednostki centralnej, przez sterowniki urządzeń po zawartość pamięci. W pierwszej kolejności ładowane jest do pamięci jądro systemu operacyjnego, po czym system rozpoczyna wykonanie pierwszego procesu w rodzaju procesu init i oczekuje na wystąpienie jakiegoś zdarzenia. Ważnym elementem systemu operacyjnego jest system obsługi przerwań. 18

Przerwania Przerwania programowe (ang. trap) Wywołanie systemu operacyjnego (np. specjalny rozkaz syscall w procesorach MIPS) Rozkaz pułapki (brk w x86) Sprzętowe zewnętrzne (asynchroniczne względem programu) Kontroler we-wy informuje procesor o zajściu zdarzenia, na przykład - Zakończenie transmisji danych - Nadejście pakietu z sieci. - Przerwanie zegara. - Błąd parzystości pamięci. Sprzętowe wewnętrzne, głównie niepowodzenia (ang. fault) Dzielenie przez zero Przepełnienie stosu Brak strony w pamięci (w przypadku implementacji stronicowania) Naruszenie mechanizmów ochrony. 19

Obsługa przerwania Wykonywana przez system operacyjny Zapamiętanie stanu procesora (rejestrów i licznika rozkazów) Określenie rodzaju przerwania - przepytywanie (ang. Polling) - wektor przerwań (tablica adresów indeksowana numerem przerwania) Przejście do właściwej procedury obsługi Odtworzenie stanu procesora i powrót z przerwania Odtworzenie stanu procesora może dotyczyć innego procesu niż zapamiętanie. (context switch). Przykład: Wykonuje się proces A Przerwanie zegara=>zapamiętanie stanu procesu A System operacyjny stwierdza że A zużył cały przydzielony kwant czasu procesora i postanawia przekazać sterowanie procesowi B. Odtworzenie stanu procesu B(przełączenie kontekstu) => powrót z przerwania Wykonuje się proces B 20

Sterowniki urządzeń we-wy Sterownik Fragment kodu jądra usytuowany pomiędzy kontrolerem we-wy a resztą jądra. Sterownik komunikuje się z kontrolerem przy pomocy magistrali systemowej. Kontroler komunikuje się z urządzeniem we-wy. 21

Obsługa wejścia-wyjścia Synchroniczna i asynchroniczna obsługa wejścia-wyjścia 22

Przestrzeń adresowa urządzeń we-wy I Odrębna przestrzeń adresowa dla portów we-wy Specjalne rozkazy we-wy odwołujące się do portów 23

Przestrzeń adresowa urządzeń we-wy II Porty we-wy w tej samej przestrzeni adresów, co pamięć. Dostęp do portów we-wy za pomocą tych samych rozkazów, co dostęp do pamięci 24

Hierarchia pamięci Im wyżej tym: Mniejszy czas dostępu Większy koszt pamięci 25

Wykorzystanie pamięci podręcznych Wykorzystanie szybkiej pamięci do przechowywania najczęściej używanych danych Pamięć podręczna procesora Pamięć podręczna dysku Wymaga wprowadzenie polityki zarządzania pamięcią podręczną Problem spójności pamięci podręcznej: (ang. cache coherency) Informacja przechowywana w pamięci podręcznej niezgodna z informacją przechowywaną w pamięci głównej Przykład 1. System dwuprocesorowy. Każdy procesor ma własną pamięć podręczną. Zawartość jednej komórki pamięci przechowywana w obydwu pamięciach podręcznych. Procesor A zapisuje tę komórkę, Procesor B próbuje odczytu Przykład 2. Pamięć podręczna dysku. Zmodyfikowana zawartość pewnych sektorów dysku jest przechowywana przez pewien czas w pamięci operacyjnej zanim zostanie zapisana fizycznie na dysk. Jeżeli w tym czasie nastąpi załamanie systemu 26

Mechanizmy ochrony Potrzeba zapewnienia, że źle sprawujący się program nie zakłóci pracy innych programów i samego systemu operacyjnego. Program użytkownika nie może być w stanie wykonać pewnych operacji Przykłady złego zachowania się programu Bezpośrednia komunikacja z urządzeniami wejścia-wyjścia => ochrona we-wy Dostęp do pamięci należącej do innych procesów lub do systemu => ochrona pamięci Zablokowanie przerwań, zmiana wektora przerwań => ochrona systemu przerwań Nieskończona pętla => ochrona procesora Program użytkownika nie ma prawa wykonać żadnej z powyższych operacji!!! 27

Przykład realizacji ochrony pamięci Rejestry: bazowy i limitu Rejestry te określają zakres dopuszczalnych adresów procesu. B rejestr bazowy L rejestr limitu A adres pamięci, do którego odwołuje się program Jeżeli B A < B + L => w porządku W przeciwnym wypadku generuj przerwanie (obsługiwane przez system operacyjny) Rozkazy zmieniające wartość rejestrów bazowego i limitu są rozkazami uprzywilejowanymi 28

Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci Program jest pojęciem statycznym. Proces ma naturę dynamiczną (zmieniającą się). Zmianie ulegają m.in. Licznik rozkazów (adres ostatnio wykonywanej instrukcji) Rejestry procesora Wskaźnik stosu Proces ma przestrzeń adresową Kod Dane zainicjalizowane Dane niezainicjalizowane Stos 29

Stany procesu Nowy proces został utworzony. Gotowy proces czeka na przydział procesora. Aktywny wykonywane są instrukcje procesu. W systemie z jednym procesorem w danej chwili jeden proces może być aktywny Oczekujący proces czeka na zdarzenie (np. Zakończenie operacji we-wy) Zakończony proces zakończył działanie 30

Przejścia pomiędzy stanami procesu 1. (Nowy => Gotowy). Nowo utworzony proces przechodzi do kolejki procesów gotowych Planista długoterminowy (ang. long-term scheduler) w systemach wsadowych 2. (Gotowy => Aktywny) Proces otrzymuje przydział procesora 3. (Aktywny => Gotowy) Procesowi został odebrany procesor (i przekazany innemu procesowi) Przejściami 2 oraz 3 zarządza planista krótkoterminowy (ang. short-term) 4. (Aktywny => Oczekujący) Proces przechodzi w stan oczekiwania na zajście zdarzenia 5. (Oczekujący => Aktywny) Zdarzenie na które czekał proces nastąpiło 6. (Aktywny => Zakończony). Proces zakończył pracę (np. funkcja exit w Uniksach, błąd ochrony) 7. (Gotowy =>Zakończony oraz Oczekujący => Zakończony). Proces został zakończony przez inny proces (np. funkcja kill w systemie Unix) 31

Dodatkowy stan zawieszony Proces oczekuje bardzo długo na operacje we-wy (np. polecenie login) Przejście do stanu zawieszonego Pamięć zajmowana przez proces podlega wymianie (ang. swapping) tzn. zapisaniu na dysk do obszaru wymiany (swap area) Zwolniona pamięć może być wykorzystana przez inne procesy Po zajściu zdarzenia proces ponownie wczytywany z obszaru wymiany Inne przyczyny zawieszenie procesu Żądanie użytkownika Brak pamięci w systemie Proces co jakiś czas cyklicznie wykonuje jakąś czynność np. Sprawozdawczość Przejściami do i z stanu zawieszenie zarządza planista średnioterminowy (ang. medium-term scheduler) 32

Blok kontrolny procesu PCB PCB służy do przechowywania informacji o procesie istotnych z punktu widzenia systemu operacyjnego Stan procesu Identyfikator procesu Licznik rozkazów Rejestry procesora Informacja o przydzielonej pamięci Informacja o otwartych plikach Informacja o połączeniach sieciowych Informacja niezbędna do tworzenia systemowych struktur danych. System operacyjny posługuje się różnymi kolejkami procesów. Jeżeli kolejki są implementowane jako listy z dowiązaniami, PCB może zawierać dowiązanie (wskaźnik) do następnego elementu w kolejce 33

Utworzenie procesu Proces rodzicielski tworzy proces potomny, który z kolei może stworzyć kolejne procesy. Powstaje drzewo procesów. Współdzielenie zasobów. Procesy rodzicielski i potomny mogą Współdzielić część zasobów Współdzielić wszystkie zasoby Nie współdzielić żadnych zasobów Wykonywanie Procesy rodzicielski i potomny wykonują się współbieżnie Proces rodzicielski oczekuje na zakończenie procesu potomnego. Przestrzeń adresowa Odrębna przestrzeń adresowa dla procesu potomnego (fork w systemie Unix proces potomny wykonuje się w nowej przestrzeni adresowej będącej kopią przestrzeni procesu rodzicielskiego) Proces ma nowy program załadowany do nowej przestrzeni adresowej (CreateProcess wwin32) Proces potomny i rodzicielski wykonują się w tej samej 34 przestrzeni adresowej (clone w Linuksie; wątki Java i POSIX)

Zakończenie procesu Zakończenie na własne żądanie. Proces sam podejmuje decyzję o zakończeniu pracy wywołując odpowiednie wywołanie systemowe. (system Unix: exit ). W programie w języku C jest to robione automatycznie po zakończeniu funkcji main Proces został zakończony w wyniku akcji innego procesu Unix: proces otrzymał sygnał SIGKILL. Polecenie kill w shellu, funkcje systemowe raise oraz kill. Proces został zakończony przez system operacyjny Naruszenie mechanizmów ochrony. Przekroczenie ograniczeń na przyznany czas procesora. Proces rodzicielski się zakończył (w niektórych systemach) 35

Wielowątkowość Jeden proces wykonuje się w wielu współbieżnych wątkach (ang. thread). Każdy wątek (inna nazwa: proces lekki, ang. lightweight) Ma swój własny stan (Aktywny, Gotowy, Zablokowany,... ) Ma swoje wartości rejestrów i licznika rozkazów. Ma swój własny stos (zmienne lokalne funkcji!!!). Ma dostęp do przestrzeni adresowej, plików i innych zasobów procesu Operacje zakończenia, zawieszenia procesu dotyczą wszystkich wątków. Procesy są od siebie izolowane, wątki nie!!! 36

Procesy i wątki 37

Cechy wątków Zalety Utworzenie i zakończenie wątku zajmuje znacznie mniej czasu niż w przypadku procesu Możliwość szybkiego przełączania kontekstu pomiędzy wątkami tego samego procesu Możliwość komunikacji wątków bez pośrednictwa systemu operacyjnego Możliwość wykorzystania maszyn wieloprocesorowych SMP Wady Źle zachowujący się wątek może zakłócić pracę innych wątków tego samego procesu. W przypadku dwóch procesów o odrębnych przestrzeniach adresowych nie jest to możliwe 38

Synchronizacja procesów i wątków Potrzeba synchronizacji Procesy wykonują się współbieżnie. Jeżeli w 100% są izolowane od siebie, nie ma problemu. Problem, jeżeli procesy komunikują się lub korzystają ze wspólnych zasobów. Potrzeba utrzymywania wspólnych zasobów w spójnym stanie. Dotyczy także wątków 39

Problem sekcji krytycznej Każdy proces ma fragment kodu zwany sekcją krytyczną, w którym może zmieniać wspólne zmienne, aktualizować tablice, pisać do pliku, itd. Ważne jest aby w danym czasie tylko jeden proces wykonywał sekcję krytyczną. Problem polega na skonstruowaniu protokołu, który mógłby posłużyć do organizowania współpracy procesów. Założenia Proces na przemian przebywa w sekcji krytycznej albo wykonuje inne czynności Proces przebywa w sekcji krytycznej przez skończony czas. Rozwiązanie Każdy proces musi prosić o pozwolenie na wykonanie swojej sekcji krytycznej. Fragment kodu realizujący taką prośbę to sekcja wejściowa Po sekcji krytycznej może występować sekcja wyjściowa 40

Warunki dla rozwiązania s.k. Wzajemne wykluczanie. W danej chwili tylko jeden proces może być w sekcji krytycznej. Postęp Proces który nie wykonuje sekcji krytycznej nie może blokować procesów chcących wejść do sekcji. Ograniczone czekanie Proces nie może czekać na wejście do sekcji krytycznej w nieskończoność 41

Semafor (zliczający) Zmienna całkowita S na której, oprócz nadania wartości początkowej, mogą być wykonane dwie operacje Operacja P (czekaj, wait) Jeżeli S>0 to S:=S-1, w przeciwnym razie wstrzymaj działanie procesu wykonującego tę operacje P(S): while S 0 do nic; S := S - 1; Operacja V(sygnalizuj,signal). Jeżeli są procesy wstrzymane w wyniku operacji P, to wznów jeden z nich, w przeciwnym wypadku S:=S+1 V(S): S := S + 1; Operacje P i V są operacjami atomowymi 42

Semafor binarny Zmienna może przyjmować tylko wartość zero lub jeden Operacje mają symbole PB, VB Wartość jeden oznacza, że można wejść do semafora (wykonać PB) Wartość zero oznacza że operacja V wstrzyma proces. Mogą być prostsze w implementacji od semaforów zliczających. Implementacje Mutexy w POSIX threads. W win32 mutexy noszą nazwę sekcji krytycznych W Javie mutex jest związany z każdym obiektem 43

Blokada (Zakleszczenie, ang. deadlock) Zbiór procesów jest w stanie blokady, kiedy każdy z nich czeka na zdarzenie, które może zostać spowodowane wyłącznie przez jakiś inny proces z tego zbioru. Samochody nie mają wstecznego biegu = Brak wywłaszczeń zasobów 44

Zagłodzenie (ang. starvation) Proces czeka w nieskończoność, pomimo że zdarzenie na które czeka występuje. (Na zdarzenie reagują inne procesy) Przykład: Jednokierunkowe przejście dla pieszych, przez które w danej chwili może przechodzić co najwyżej jedna osoba. Osoby czekające na przejściu tworzą kolejkę. Z kolejki wybierana jest zawsze najstarsza osoba Bardzo młoda osoba może czekać w nieskończoność. Zamiast kolejki priorytetowej należy użyć kolejki FIFO (wybieramy tę osobę, która zgłosiła się najwcześniej) 45

Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo niskiego poziomu Duża podatność na błędy, trudno wykazać poprawność programu Przykład: Jeżeli zapomnimy o operacji V, nastąpi blokada Bardziej strukturalne mechanizmy synchronizacji Regiony krytyczne Monitory 46

Regiony krytyczne Współdzielona zmienna v typu T jest deklarowana jako: var v: shared T Dostęp do zmiennej v wykonywany przy pomocy operacji B jest wyrażeniem logicznym region v when B do S Tak długo, jak instrukcja S się wykonuje, żaden inny proces nie może się odwołać do zmiennej v. Jeżeli wyrażenie B nie jest spełnione, to proces jest wstrzymywany do momentu jego spełnienia. 47

Przekazywanie komunikatów I Dostarcza dwie operacje send(odbiorca,dane) receive(nadawca,dane) Na ogół wymaga kopiowania danych => możliwy spadek wydajności. Dobra metoda synchronizacji dla systemów rozproszonych. Wydajna realizacja pamięci współdzielonej w systemie rozproszonym jest bardzo trudna 48

Przekazywanie komunikatów II Gniazda Wykorzystujące protokół TCP/IP Gniazda domeny Uniksa Biblioteki PVM oraz MPI Zaprojektowane z myślą o obliczeniach równoległych Zdalne wywołanie procedury (ang. remote procedure call, RPC) Zdalne wywołanie metody (ang. remote method invocation, RMI) Kolejki komunikatów w Uniksie Nazwane (i nienazwane) potoki w Uniksie 49

Typy operacji send oraz receive Blokujące send i blokujące receive Obydwa procesy są zablokowane do momentu przekazania komunikatu Nazywane spotkaniem (Ada, CSP, Occam, Parallel C) Nieblokujące send i blokujące receive Proces wywołujący send nie musi czekać na przekazanie komunikatu Komunikat umieszczany jest w buforze Nieblokujące send i nieblokujące receive Żaden z pary procesów nie musi czekać na przekazanie komunikatu Operacja receive sygnalizuje brak komunikatu 50

Systemy plików Przechowują olbrzymie ilości informacji Przechowywana informacja nie jest tracona po zakończeniu procesu. Czas życia od sekund do lat. Potrzebny jest sposób odnajdywania informacji Wiele procesów musi być w stanie wykorzystywać tę samą informację współbieżnie. 51

Atrybuty pliku Nazwa pliku Rozmiar Właściciel Prawa dostępu Czasy (utworzenia/ostatniego dostępu/ostatniej modyfikacji). Hasło Inne informacje, z reguły niedostępne dla programu użytkownika Na przykład informacja o położeniu pliku na dysku 52

Operacje na plikach Utworzenie (ang. create) Usunięcie (ang. delete) Otwarcie (ang. open) przygotowanie pliku do dostępu. Zamknięcie (ang. close) wskazanie, że dostęp do pliku nie będzie dalej potrzebny. Odczyt (ang. read). Zapis (ang. write). Wyszukiwanie (ang. Seek) przy dostępie swobodnym. Dołączenie (ang. append) zapis na końcu pliku Odczyt/Zmiana atrybutów (w tym nazwy) 53

Katalogi Proste nadawanie nazw nie wystarcza w przypadku tysięcy plików na dysku. Problem: wiele plików o identycznej nazwie, np. różne wersje tego samego programu Ludzie mają tendencję do grupowania informacji związanych ze sobą. Systemy plików umożliwiają to przy pomocy katalogów (ang. directory), zwanych także folderami. Grupowanie pozwala na. Łatwiejsze znalezienie plików. Określenie, które pliki są ze sobą związane. 54

Katalog o strukturze drzewa 55

Katalog o strukturze grafu acyklicznego 56

Implementacja systemu plików Użytkownik, programista aplikacji jest zainteresowany interfejsem do systemu plików udostępnianym przez system operacyjny. Operacje na plikach i katalogach. Projektanta systemu interesuje, jak te operacje mogą zostać zaimplementowane. Jak przechowywać informację o blokach dyskowych zajętych przez plik. Jak szybko odnaleźć i-ty blok danego pliku (operacja seek) Jak przechowywać informacje o wolnych blokach (blokach nie zajętych przez żaden z plików, ale które mogą być przydzielone w przyszłości) Gdzie przechowywać informacje o atrybutach pliku Gdzie przechowywać informacje o strukturze (np. drzewiastej) systemu plików. 57

Podział dysku na partycje Bloki rozruchowe (boot blocks) zawierają kod ładujący system operacyjny do pamięci. Każda partycja zawiera odrębny system plików (mogą to być systemy różnych typów). Tablica partycji zawiera informacje o podziale dysku na partycje (początek i koniec) Super blok zawiera informacje ogólne o systemie (np. całkowita liczba bloków danych, całkowita liczba plików) 58

Ciągła alokacja bloków danych Każdy plik zajmuje nieprzerwany ciąg bloków. Bardzo szybki odczyt. Bardzo proste zarządzanie informacją o blokach danego pliku wystarczy tylko pamiętać numer pierwszego bloku oraz liczbę bloku. Bardzo szybka operacja seek. 59

Wady ciągłej alokacji Może powstać fragmentacja (podobnie jak w przypadku pamięci RAM) a kompakcja w pamięci dyskowej jest bardzo wolna. Musimy z góry znać maksymalny rozmiar pliku przy jego tworzeniu problemy przy zwiększaniu rozmiaru pliku. Powyższe wady sprawiają że ciągła alokacja jest stosowana w systemach plików tylko do odczytu np. ISO9600 dla pamięci CD- ROM. W tym przypadku kompletny system plików, wraz ze wszystkimi plikami jest tworzony przy wypalaniu (wytłaczaniu) płytki. Raz utworzony system plików nie będzie już modyfikowany (w płytkach wielosesyjnych każda sesja to odrębny system plików). Nie ma potrzeby zarządzania wolnymi blokami, uwzględnienia możliwości zwiększenia rozmiaru plików etc. 60

Alokacja listowa Ostatnie (dwa, cztery) bajty bloku danych są zarezerwowane na numer następnego bloku. W katalogu przechowywany jest numer pierwszego bloku + numer ostatniego (aby umożliwić rozrost pliku). -1 oznacza ostatni blok pliku. Zaleta: Plikowi możemy przydzielić dowolny blok danych na dysku. Wada: Nie nadaje się do dostępu swobodnego, ponieważ aby wykonać operację seek musimy przeczytać wiele bloków na liście. 61

Tablica alokacji plików FAT Odmiana alokacji listowej, w której numery następnych bloków przechowywane są w odrębnej tablicy (FAT). Specjalne znaczniki na blok wolny (w) i ostatni blok pliku (-1). Rozwiązany problem zarządzania wolnymi blokami danych. Tablica może znajdować się (w części lub w całości) w pamięci RAM, co zwiększa wydajność, zwłaszcza operacji seek. 62

Tablica alokacji plików FAT c.d. Problem zapewnienia spójności pomiędzy kopią tablicy w pamięci RAM, a oryginałem w pamięci dyskowej. Uszkodzenie tablicy FAT może prowadzić do utraty całego systemu plików. Potencjalnie bardzo duży rozmiar tablicy np. 80MB dla dysku 20GB 63

Ochrona (ang. protection) Pojęcie ochrony dotyczy mechanizmu kontrolującego dostęp programów, procesów, i użytkowników do zasobów systemu operacyjnego. Typowe zasoby to pliki i urządzenia Cel ochrony: zapewnienie że każdy komponent systemu używa zasobów zgodnie z zadeklarowaną polityką (ang. policy). Ochrona powinna dostarczać mechanizmy do wymuszania polityki. Mechanizm określa jak coś ma być realizowane (np. bity rwx dostępu do pliku dla właściciela, grupy i całego świata w Uniksie). Polityka określa co ma być realizowane (np. studenci nie mogą zmienić pliku wyniki_egzaminu.txt) Mechanizm powinien być na tyle elastyczny, aby politykę można było zmienić bez konieczności zmiany mechanizmu. Obowiązuje zasada wiedzy koniecznej: Proces powinien mieć dostęp tylko do tych zasobów, do których jest uprawniony, oraz których potrzebuje w danej chwili do zakończenia zadania. 64

Bezpieczeństwo System jest bezpieczny, gdy zasoby są używane tak jak jest to (przez system) zamierzone bez względu na okoliczności. System może zapewniać wspaniały mechanizm ochrony gwarantujący, że użytkownik który jest studentem nigdy nie otrzyma praw zapisu do do pliku wyniki_egzaminu.txt, ale Student może się zalogować do systemu jako prof. Kowalski. Student może poprzez złośliwe działanie (np. utwórz 10000 procesów, przydziel 10GB pamięci, inne...) zakłócić normalną pracę systemu atak typu denial of service. Student może wystartować z dyskietki własny system operacyjny i uzyskać dostęp do wszystkich plików na dysku twardym Student może wymontować dysk z komputera, wstawić do innego systemu i uzyskać dostęp do wszystkich plików na dysku twardym 65

Mechanizmy ochrony w systemie UNIX Superużytkownik (ang. root, superuser) może wszystko Każdy plik ma właściciela w postaci użytkownik.grupa. Użytkownik może należeć do wielu grup. Każdy plik i katalog ma określone uprawnienia do odczytu [r], zapisu [w] oraz wykonania. Uprawnienia są określane osobno dla właściciela grupy oraz pozostałych użytkowników. Np. -rwxr-xr-x 1 adam users plik5 Dla katalogu odczyt jest równoznaczny z przeglądaniem katalogu (ls), zapis z usunięciem albo dodaniem nowej pozycji lub zmianą nazwy a wykonanie z uczynieniem katalogu katalogiem bieżącym. Aby usunąć plik trzeba mieć uprawnienia do pisania w katalogu w którym plik się znajduje. 66

Bit suid w UNIXie Pytanie: W czyim imieniu wykonuje się proces załadowany z pewnego programu? Czy w imieniu właściciela programu, czy w imieniu tego użytkownika który uruchomił program? Odpowiedź domyślnie z uprawnieniami użytkownika który uruchomił program. Ale rozpatrzmy program passwd (właściciel root) uruchomiony przez użytkownika wkwedlo w celu zmiany hasła. Oczywiście modyfikacje pliku haseł mogą być wykonane tylko przez superużytkownika. W Uniksie ten problem rozwiązano przez wprowadzenie dodatkowej flagi suid. Plik mający tą flagę wykonuje się z uprawnieniami właściciela. Programy których właścicielem jest root i z bitem suid są potencjalnie olbrzymim źródłem problemów związanych z bezpieczeństwem. Bit suid stosuje się także do katalogów 67

Naruszenia bezpieczeństwa Całkowite bezpieczeństwo jest niemożliwe do osiągnięcia - ale należy projektować mechanizmy sprawiające, aby naruszenia były jak najrzadsze. Ogólnie można podzielić na przypadkowe bądź celowe, złośliwe (ang. malicious) - obrona przed złośliwymi jest dużo trudniejsza. Najważniejsze celowe naruszenia to: Nieautoryzowany dostęp do danych lub kradzież informacji. Nieautoryzowana modyfikacja danych. Nieautoryzowane zniszczenie danych. Uniemożliwienie normalnego korzystania z systemu (ang. denial of service, DOS). Niezbędne jest podjęcie niezbędnych środków na poziomie: Fizycznym: kluczyki, kasa pancerna, Ludzkim: świadomość użytkowników, Sieci: Komputery nie są izolowane, możliwość podsłuchu, ukrycia tożsamości, zmiany tożsamości Systemu operacyjnego. 68

Uwierzytelnianie użytkowników Jak sprawdzić, czy identyfikator użytkownika jest autentyczny? Istniejące podejścia oparte są na sprawdzeniu wiedzy (hasła), pomiarach biometrycznych (linie papilarne, wzór siatkówki), czy stanu posiadania (np. karty chipowe). Hasła są najpopularniejsza, ale sprawiają wiele problemów. Ludzie wybierają jako hasła słowa łatwe do odgadnięcia (np. swoje imię). Użytkownik może zapisać trudne hasło na kartce i pozostawić w łatwo dostępnym miejscu. Hasła są narażone na ujawnienie w wyniku monitoringu (np. spoglądanie zza ramienia, przechwyt pakietów w sieci (o ile nie są szyforwane)). 69