Systemy operacyjne. Studia podyplomowe Wydział Informatyki PB

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

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

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

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

Systemy operacyjne. Paweł Pełczyński

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

Działanie systemu operacyjnego

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

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

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

Działanie systemu operacyjnego

Wprowadzenie do systemów operacyjnych

Działanie systemu operacyjnego

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

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

projektowanie systemu

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

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

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

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

Działanie systemu operacyjnego

Proces y i y w i ąt ą ki

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

Budowa systemów komputerowych

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

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Systemy operacyjne III

Systemy operacyjne III

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

4. Procesy pojęcia podstawowe

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

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

Informatyka. informatyka i nauki komputerowe (computer science)

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

System komputerowy. System komputerowy

Procesy, wątki i zasoby

Systemy operacyjne II

Architektura systemu komputerowego

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

Struktura systemów komputerowych

4. Procesy pojęcia podstawowe

Zarządzanie procesami i wątkami

4. Procesy pojęcia podstawowe

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

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

Prezentacja systemu RTLinux

Systemy operacyjne. wykład 1- System operacyjny i jego zadania. dr Marcin Ziółkowski

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Systemy operacyjne. Zadania systemu operacyjnego. System komputerowy. Wprowadzenie. Dr inż. Ignacy Pardyka

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Architektura komputerów

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

ZADANIA SYSTEMÓW OPERACYJNYCH

Wprowadzenie do systemów operacyjnych

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

Jądro systemu operacyjnego

Urządzenia wejścia-wyjścia

Podstawy Informatyki Systemy operacyjne

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

Czujniki obiektowe Sterowniki przemysłowe

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

Architektura i administracja systemów operacyjnych

Podstawy systemów operacyjnych

Struktury systemów operacyjnych

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

Technologia informacyjna. Urządzenia techniki komputerowej

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

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

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Temat zajęć: Tworzenie i obsługa wątków.

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

1.1 Definicja procesu

SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)

Przerwania. Przerwania. Budowa systemu komputerowego. Zdarzenia powodujące przerwanie: Wektor przerwań

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

LEKCJA TEMAT: Zasada działania komputera.

SYSTEMY OPERACYJNE WYKLAD 6 - procesy

Architektura systemów komputerowych. dr Artur Bartoszewski

Celem wykładu jest wprowadzenie fundamentalnych pojęć, integralnie związanych z systemem operacyjnym, na których opiera się przetwarzanie we

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1. Etapy rozwoju systemów komputerowych

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Mikroprocesor Operacje wejścia / wyjścia

System operacyjny MACH

Metody obsługi zdarzeń

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Opis efektów kształcenia dla modułu zajęć

System operacyjny System operacyjny

Zarządzanie procesorem

Przerwania, polling, timery - wykład 9

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

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

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

System operacyjny wstęp

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Transkrypt:

Systemy operacyjne Studia podyplomowe 2015-2016 Wydział Informatyki PB dr inż. Marcin Czajkowski materiały przygotowane przez dr inż. Wojciecha Kwedlo

Literatura - ogólne pozycje na temat systemów operacyjnych A. Silberschatz, P. B. Galvin, Podstawy systemów operacyjnych, wydanie 7, WNT, Warszawa, 2003. A.S. Tanenbaum, Systemy Operacyjne, Wydanie III, Wydawnictwo Helion, 2010. ~100 zł. W. Stallings, Systemy operacyjne. Struktura i zasady budowy. PWN, 2006. ~40 zł Gorąco polecam powyższe pozycje.

Literatura - pozycje na temat programowania współbieżnego Z. Weiss, T. Gruźlewski, Programowanie współbieżne i rozproszone w przykładach i zadaniach, WNT, Warszawa, 1993. M. Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, WNT, Warszawa, 1996. Programowanie w Linuxie przy pomocy biblioteki wątków POSIX threads jest omówione w: M. Mitchell, J. Oldham, A. Samuel, Linux - programowanie dla zaawansowanych, Wydawnictwo RM, 2002 J. Shapley Gray, Arkana: Komunikacja między procesami w Unixie, rozdz. 11.

Literatura - opisy jąder różnych wersji Unixa Bach M., Budowa systemu operacyjnego UNIX, WNT Warszawa, 1995, Opis jądra Systemu V Release 4. U. Vahalia, Jądro systemu Unix - nowe horyzonty, WNT Warszawa,2001, Opis historii Unixa i różnych cech jądra systemów Unixowych (System V, BSD, Solaris, Mach) - gorąco polecam. M. Beck, H. Bohm, M. Dziadzka, U. Kunitz, R. Magnus, D. Verworner, Linux Kernel - Jądro systemu, wydanie II, Wydawnictwo MIKOM, Warszawa, 2000, jądro Linuxa 2.0.x D. P. Bovet, M. Cesati, Linux kernel, Wydawnictwo RM, Warszawa, 2001, jądro Linuxa 2.2.x

Literatura - API wywołań systemowych Linuksa M. Mitchell, J. Oldham, A. Samuel, Linux - programowanie dla zaawansowanych, Wydawnictwo RM, 2002 Kurt Wall, Linux : programowanie w przykładach, Mikom, 2000. Michael K. Johnson, Erik W. Troan, Oprogramowanie użytkowe w systemie LINUX, WNT, 2000.

Tematyka wykładów poznanie podstawowych pojęć związanych z systemami operacyjnymi; mechanizmy zarządzania procesami: algorytmy szeregowania procesów, metody komunikacji i synchronizacji procesów oraz wątków; rodzaje pamięci: operacyjna, zewnętrzna, wirtualna; systemy plików; planowanie przydziału procesora, wieloprogramowość, wielozadaniowość.

Czym jest system operacyjny Program kontrolujący wykonywanie aplikacji (programów użytkownika). Umożliwia wykonywanie programów użytkownika. (być może wielu równocześnie). Jednocześnie kontroluje pracę tych programów, uniemożliwiając nieprawidłowe wykorzystanie komputera. Dostarcza usługi umożliwiające dostęp do wejścia-wyjścia (pliki, ekran, klawiatura, sieć) Zarządza zasobami maszyny (procesor, pamięć operacyjna, pamięć dyskowa). Tworzy abstrakcje ułatwiające korzystanie z komputera, takie jak: plik, pamięć wirtualna, proces Cele stojące przed projektantem systemu Przenośność: programy użytkowe działające na różnym sprzęcie. Wydajność: efektywne wykorzystanie sprzętu (procesora,pamięci,we-wy). Zapewnienie ochrony systemu oraz procesów (przed innymi procesami, niepowołanym dostępem, wirusami,...) Wygoda użytkownika. Możliwość ewolucji systemu (poprawki etc.) Definicja: nie ma powszechnej definicji ( Wszystko, to co dostarcza producent, gdy kupuje się system operacyjny )

System operacyjny na tle innych składników komputera

Jądro systemu operacyjnego (ang. kernel) Określenie co jest częścią systemu operacyjnego, a co nie, nie jest proste. czy kompilator C jest częścią systemu? edytor tekstu (np. notepad)? Interpreter poleceń (ang. shell) w Unixie? Dla potrzeb tego wykładu przez system operacyjny będziemy rozumieli jądro systemu, które możemy (z grubsza) scharakteryzować jako: Część systemu przebywająca na stałe w pamięci. Wykonuje się w trybie uprzywilejowanym. Zarządza zasobami maszyny Udostępnia interfejs programom użytkownika w postaci wywołań systemowych. Unix, Linux jądro monolityczne: jeden olbrzymi program Możliwość dynamicznego ładowania i usuwania fragmentów jądra, zwanych modułami Interpreter poleceń i inne narzędzia są zwykłymi programami użytkownika. Powyższy podział jest charakterystyczny dla systemów Unixowych, w świecie Microsoftu są odstępstwa (np. wiele funkcji z API Win32 wykonuje się na poziomie procesu użytkownika)

Perspektywa historyczna Na ewolucję oraz rozwój systemów operacyjnych olbrzymi wpływ miał czynnik ekonomiczny relatywny (względny) koszt sprzętu oraz pracy ludzkiej. Początkowo koszt komputera był fantastycznie wysoki w porównaniu z kosztem pracy ludzi z niego korzystających. Główny cel stojący przed systemem, to maksymalizacja wykorzystania sprzętu (procesora, pamięci masowych drukarek). Rozwiązania typu: przetwarzanie wsadowe, wieloprogramowość, spooling Obecnie koszt komputera jest bardzo niski w porównaniu z kosztem pracy ludzi z niego korzystających. Cel stojący przed systemem to stworzenie środowiska zapewniającego jak największą wygodę i produktywność użytkowników. Może to oznaczać rezygnację z kryterium maksymalnego wykorzystania sprzętu na rzecz kryterium minimalnego czasu odpowiedzi. Praca interakcyjna (początkowo wielu użytkowników na jednej maszynie poprzez podział czasu procesora), praca interakcyjna z wieloma programami, graficzne interfejsy użytkownika + wielowątkowość

Generacje komputerów i systemów operacyjnych (1945-55) - Lampy próżniowe i brak systemu operacyjnego. (1955-65) Tranzystory i proste systemy wsadowe (1965-80) Układy scalone i wieloprogramowe systemy wsadowe (oraz systemy z podziałem czasu) 1980 obecnie komputery PC.

Brak systemu operacyjnego Lata 40 połowa lat 50, komputery zbudowane z lamp próżniowych Programista rezerwuje w specjalnym zeszycie czas komputera W zarezerwowanym czasie ma pełną kontrolę nad maszyną poprzez konsolę Wczytuje program z czytnika kart perforowanych lub taśmy magnetycznej Kompiluje program (w tym celu wczytuje kompilator np. Fortranu) Uruchamia program.. Drukarka drukuje wyniki. Problemy: Duża część czasu spędzana na przygotowaniu programu do uruchomienia Nieefektywne wykorzystanie czasu pracy systemu. Zaleta: w przypisanym czasie mam pełną kontrolę nad komputerem

Proste systemy wsadowe Programista zostawia zadanie (ang. job) w postaci pliku kart perforowanych (program źródłowy, dane) operatorowi. Czynności o podobnym charakterze (np. Kompilacja) grupowane są razem Zadania łączone we wsad (ang. Batch) i wykonywane. Programista po jakimś czasie (kilka godzin) otrzymuje wyniki. Program monitora (protoplasta systemu operacyjnego) Wczytuje program użytkownika do pamięci Przekazuje mu sterowanie Po zakończeniu pracy program użytkownika powraca do monitora Może zawierać procedury obsługi wejścia wyjścia Zaleta: lepsze wykorzystanie (bardzo drogiego) sprzętu. Wada: programista czy też użytkownik nie ma kontroli nad wykonywaniem zadania (ale jego zdanie się nie liczy względy ekonomiczne).

Prosty system wsadowy - jednoprogramowość Musimy przeznaczyć część pamięci na monitor Jeden program w pamięci. Pożądane wprowadzenie sprzętowej ochrony monitora przed programami użytkownika. W niektórych zastosowaniach biznesowych (banki ubezpieczenia) wejście-wyjście może zajmować dużą część czasu wykonania zadania. W takim przypadku procesor nie jest efektywnie wykorzystany. Potrzebne są mechanizmy pozwalające na jednoczesne wykorzystanie procesora i we-wy.

Spooling Simulateneous Peripheral Operation On-Line Wykorzystuje szybką pamięć dyskową. Dane i program z czytnika kart są przesyłane na dysk Program wczytany z dysku, wykonywany, wyniki są zapisywane na dysk Wyniki z dysku przesyłane są na drukarkę Wykonując zadanie i jednocześnie: Wczytuj kod następnych zadań z czytnika kart na dysk Drukuj wyniki już zakończonych zadań. Pula gotowych zadań na dysku algorytmy szeregowania (ang. scheduling)

Wada jednoprogramowości Podczas wykonywania we-wy procesor jest bezczynny Rozwiązanie: wieloprogramowość (ang. Multiprogramming) W pamięci przechowywanych jest kilka programów

Wieloprogramowość Kiedy zadanie zgłasza zapotrzebowanie na usługę systemu wymagającą oczekiwania, wykonywany jest inne zadanie Potrzebny jest specjalny hardware (przerwania, DMA, ochrona pamięci)

Wieloprogramowy system wsadowy Zapewnianie usług we-wy. Przydzielanie urządzeń we-wy zadaniom. Zadania wstępnie na dysku - zarządzanie pamięcią dyskową. Wybór zadania wczytywanego do pamięci (szeregowanie zadań) Przydzielenie procesora jednemu z zadań rezydującemu w pamięci Zarządzanie dostępną pamięcią

Współdzielenie procesora (ang. time sharing) W systemach wsadowych celem jest maksymalizacja przepustowości. Programista (użytkownik) nie ma kontroli nad wykonywaniem zadań. Problem w przypadku np. błędu kompilacji. Niektóre typy zadań wymagają pracy interakcyjnej (np. rezerwacja biletów) A w między czasie relatywne koszty pracy ludzkiej względem kosztów sprzętu wzrosły, ale nie na tyle aby każdemu przydzielić dedykowany komputer. Podział czasu procesora Wiele użytkowników korzystających z terminali (praca interakcyjna) System otrzymuje polecenia kontrolne z terminala. Procesor wykonuje na przemian programy poszczególnych użytkowników (redukcja mocy obliczeniowej dostępnej pojedynczemu użytkownikowi) Załadowany do pamięci i wykonywany w niej program nazywany jest procesem. Nowe funkcje systemu operacyjnego: wymiana (ang. swapping), pamięć wirtualna. W systemach z podziałem czasu celem jest minimalizacja czasu odpowiedzi.

Systemy operacyjne dla komputerów osobistych Komputer dedykowany jednemu użytkownikowi. Mała cena sprzętu sprawia, że maksymalizacja wykorzystania procesora przestaje być głównym celem. Priorytetem jest wygoda użytkownika i minimalizacja czasu odpowiedzi. Systemy graficznego interfejsu użytkownika. Z przyczyn ekonomicznych pierwsze wersje sprzętu były prymitywnie proste. Nastąpiło stopniowe zaadoptowanie technologii rozwiniętych dla większych maszyn. MS-DOS (brak podziału czasu, brak ochrony systemu) Windows 3.1 (współdzielenie procesora wymagające współpracy procesów, pamięć wirtualna, brak ochrony) Windows NT (współdzielenie procesora, pamięć wirtualna, pełna ochrona, mechanizmy bezpieczeństwa)

Systemy równoległe Architektura postaci Symmetric Multiprocessing (SMP). System ze współdzieloną pamięcią (ang. shared memory, tightly coupled system). Każdy procesor wykonuje identyczną kopię systemu operacyjnego Pozwala na wykonywanie wielu procesów jednocześnie Wspierana przez większość nowoczesnych systemów operacyjnych (Linux, Win NT i pochodne) Upowszechnione dzięki procesorom wielordzeniowym (ang. multicore)

Systemy czasu rzeczywistego (ang. real-time) Reakcja na zdarzenie musi się zakończyć przed upływem określonego czasu. (ang. hard real-time). Innymi słowy: Poprawność systemu nie zależy tylko od poprawności uzyskanej odpowiedzi, ale także od czasu oczekiwania na tę odpowiedzi. Przykłady: odtwarzacz DVD, symulator samolotu, sterownik wtrysku paliwa, system naprowadzania rakiety. Z reguły system w ROM-ie, brak pamięci dyskowej. Konflikt z zasadą podziału czasu. Warunek hard real-time nie jest spełniony przez większość współczesnych systemów ogólnego przeznaczenia. Systemy klasy soft real-time: zadanie do obsługi w czasie rzeczywistym otrzymuje pierwszeństwo nad pozostałymi zadaniami. Nie gwarantują nieprzekraczalnego czasu reakcji. Większość systemów Unixowych i Win NT spełnia te wymagania.

Systemy rozproszone (ang. distributed) Luźno związany (ang. loosely coupled) system komputerowy. Każdy procesor dysponuje własną pamięcią, niedostępną innym procesorom. Koordynacja i synchronizacja poprzez wymianę komunikatów Zalety Współdzielenie zasobów (ang. resource sharing) Przyspieszenie obliczeń. Większa wiarygodność systemu. Udostępnienie możliwości komunikacji.

Systemy rozproszone Sieciowe systemy operacyjne Umożliwia współdzielenie plików, drukarek Dostarcza mechanizm komunikacji System na jednej maszynie wykonuje się niezależnie od pozostałych maszyn w sieci Rozproszone systemy operacyjne Mniejsza autonomia poszczególnych maszyn Sprawia wrażenie, że pojedynczy system operacyjny kontroluje pracę sieci (jednej wielkiej maszyny) Obecnie przedmiot badań naukowych (Amoeba, Mach, Locus, systemy typu Grid...)

Systemy typu hand-held Tablety Telefony komórkowe Cechy charakterystyczne Ograniczona pamięć Wolne procesory (nacisk na niski pobór mocy) Małe rozmiary wyświetlaczy Główna różnica pomiędzy systemami hand-held a PDA: brak wielogigabajtowych dysków twardych (pamięć wirtualna) (ale są systemy plików na pamięciach Flash) Przykłady: ios, Android.

Wbudowane systemy operacyjne Systemy dla urządzeń nie uznawanych za komputery i nie posiadających możliwości instalowania aplikacji przez użytkowników. Kuchenki mikrofalowe, odtwarzacze MP3, samochody, odbiorniki telewizyjne Mamy gwarancje że nigdy nie będzie działało niezaufane oprogramowanie Przykłady: QNX, VxWorks

Migracja cech i własności systemów operacyjnych

Struktury systemów komputerowych istotne z punktu widzenia systemu operacyjnego

Uproszczony schemat architektury komputera Procesor, pamięć i urządzenia we-wy podłączone są do wspólnej magistrali. W rzeczywistych systemach mamy do czynienia z kilkoma fizycznymi magistralami (PCI, ISA, USB,...)

Praca systemu komputerowego Procesor i urządzenia wejścia-wyjścia mogą pracować współbieżnie Każdy kontroler we-wy obsługuje jeden typ urządzeń Każdy kontroler-posiada lokalny bufor Procesor przesyła dane do/z pamięci oraz do/z lokalnych buforów Wejście-wyjście przeprowadzane jest pomiędzy lokalnym buforem kontrolera a urządzeniem. Kontroler informuje o zakończeniu operacji zgłaszając przerwanie. SYSTEM OPERACYJNY OPIERA SIĘ NA PRZERWANIACH!!!

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.

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 Uwaga: Odtworzenie stanu procesora może dotyczyć innego procesu niż zapamiętanie. (przełączenie kontekstu ang. 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. System postanawia przekazać sterowanie procesowi B. Odtworzenie stanu procesu B(przełączenie kontekstu) => powrót z przerwania Wykonuje się proces B

Krótko o procesach Najprościej możemy określić proces jako Wykonujący się program Ta definicja ma pewne niuanse. Rozpatrzmy przypadek procesu powstałego w wyniku uruchomienia programu użytkownika. Proces może wywoływać kod tego programu. Mówimy, że proces proces wykonuje się w trybie użytkownika. Może także wywoływać funkcję bibliotek współdzielonych (.so w Linuksie, biblioteki dynamiczne.dll w Windows), które formalnie nie są częścią programu. Po pewnym czasie proces (tzn. kod programu lub biblioteki) decyduje się wykonać funkcję systemową, np. otworzyć plik Mówimy wtedy, że proces wykonuje się w trybie jądra. W tej sytuacji proces wykonuje kod systemu operacyjnego, a nie kod programu z którego został wczytany. Widzimy, że nie ma relacji 1<=>1 pomiędzy procesami i programami, ponieważ proces wykonuje kod dwóch programów: swojego i jądra systemu

Różnice w prędkości transmisji urządzeń zewnętrznych Urządzenie Keyboard Mouse 56K modem Printer / scanner USB Digital camcorder Fast Ethernet Hard drive FireWire (IEEE 1394) XGA monitor PCI bus Prędkość transmisji 10 bytes/sec 100 bytes/sec 7 KB/sec 200 KB/sec 1.5 MB/sec 4 MB/sec 12.5 MB/sec 20 MB/sec 50 MB/sec 60 MB/sec 500 MB/sec

Hierarchia pamięci Przemieszczając się w dół hierarchii Zwiększamy czas dostępu Zmniejszamy koszt jednego bajtu

Wykorzystanie pamięci podręcznych (ang. caching) Wykorzystanie szybkiej pamięci do przechowywania najczęściej używanych danych. Pamięć podręczna procesora. Pamięc 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...

Mechanizmy ochrony (ang. protection) 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!!!

Podwójny tryb pracy Procesor może wykonywać instrukcje w jednym z dwóch trybów Tryb jądra (instrukcje wykonywane przez system operacyjny) Tryb użytkownika (instrukcje wykonywane przez program użytkownika) Przerwanie (programowe lub sprzętowe) tryb jądra System operacyjny Ustaw tryb użytkownika Tryb użyt. Program użytkownika Instrukcje uprzywilejowane mogą być wywoływane wyłącznie w trybie jądra Próba ich wykonania w trybie użytkownika powoduje przerwanie i przejście do systemu operacyjnego

Mechanizmy ochrony Instrukcje uprzywilejowane Instrukcje do komunikacji z urządzeniami we-wy Blokowanie/odblokowanie przerwań Zmiana wektora przerwań Aby zapewnić, że program użytkownika nigdy nie wykona się w trybie jądra Przerwanie zegara: gwarantuje ochronę procesora przed programem użytkownika z nieskończoną pętlą

Procesy i wątki

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 Uruchom program Dane niezainicjalizowane Stos

Model procesów Pojedynczy licznik rozkazów (punkt widzenia procesora) A B C B D A Wiele liczników rozkazów (punkt widzenia systemu oper.) B C D Z punktu widzenie procesora na komputerze jest wykonywany jeden program Z punktu widzenia systemu jednocześnie jest wykonywanych wiele programów. D C B A Czas

Stany procesu Nowy proces został utworzony. Nowy 1 Gotowy 2 Gotowy proces czeka na przydział procesora. Proces mógłby się wykonywać, ale nie wykonuje się, ponieważ w tej chwili wykonuje się jakiś inny proces. Aktywny wykonywane są instrukcje procesu. 5 3 W systemie z jednym procesorem w danej chwili jeden proces może być aktywny Oczekujący 4 Aktywny Oczekujący (uśpiony) proces czeka na zdarzenie (np. Zakończenie operacji we-wy). 7 7 Zakończony 6 Na poprzednim wykładzie proces, który zainicjalizował transmisję DMA lub wysłała znak do drukarki, był usypiany w oczekiwaniu na przerwanie. Proces w stanie uśpionym nie otrzyma procesora. Zakończony proces zakończył działanie

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. (np. na zakończenie transmisji wejścia -wyjścia patrz poprzedni wykład) 5 (Oczekujący => Gotowy) Zdarzenie na które czekał proces nastąpiło (przerwanie we/wy na poprzednim wykładzie). Przejścia 4 oraz 5 są wykonywane przy przeprowadzeniu synchronicznej operacji wejścia wyjścia (ale nie tylko). 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).

Dodatkowy stan zawieszony (ang. suspended) 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)

Diagram przejść z uwzględnieniem stanu zawieszenia. Planista długoterminowy Planista krótkoterminowy najważniejszy i występujący w każdym systemie. Rozstrzyga problem: Któremu procesowi w stanie gotowym mam przydzielić procesor Planista średnioterminowy

Blok kontrolny procesu ang. Process Control Block - 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

Przełączenie kontekstu pomiędzy procesami

Przełączenie kontekstu (ang. context switch), a przełączenie trybu (ang. mode switch) P 1 P 2 P 3 P 4 Przełączenie kontekstu to zmiana procesu. Jądro Jądro Jądro Jądro Przełączenie kontekstu Przełączenie trybu zmiana trybu pracy procesora (jądra <=> użytkownika) W większości systemów (Uniksy,Windows) przyjęto model, w którym funkcje systemu wykonują się w kontekście procesu użytkownika. W uproszczeniu model ten zakłada że system operacyjny jest kolekcją procedur wywoływanych przez procesy w celu wykonania pewnych usług. Stąd mówiłem o procesie wykonującym się w trybie jądra (jeżeli wykonywany jest kod jądra). Przejście od programu użytkownika do programu jądra w wyniku wywołania funkcji systemowej (przerwanie programowe) lub przerwania sprzętowego wiąże się z przełączeniem trybu. Zmiana trybu jest znacznie mniej kosztowna niż zmiana kontekstu.

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 w Win32) Proces potomny i rodzicielski wykonują się w tej samej przestrzeni adresowej (clone w Linuksie; wątki Java i POSIX)

Wywołania systemowe fork, exec, wait w Unix-ie #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { int pid; pid = fork(); if (pid < 0) { /* Błąd!!! */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* proces potomny */ execlp("/bin/ls","ls",null); } else { /* proces rodzicielski */ wait(null); printf("child Complete"); exit(0); } } fork tworzy nowy proces Wywoływana z procesu rodzicielskiego Powracają z niej proces potomny i rodzicielski exec zastępuje obraz bieżącego procesu nowym programem. proces wołający nigdy nie wraca z exec (chyba że powstanie błąd) wait blokuje proces do momentu zakończenia procesu potomnego

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) Cascading termination

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 WSZYSTKIE WĄTKI TO WSPÓŁDZIELĄ!!! Operacje zakończenia, zawieszenia procesu dotyczą wszystkich wątków. Procesy są od siebie izolowane, wątki nie!

Procesy i wątki Wątek 1 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan Proces Przestrzeń adresowa Otwarte pliki Procesy potomne Obsługa sygnałów Sprawozdawczość Zmienne globalne Wątek 2 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan Wątek 3 Licznik rozkazów Rejestry Stos i wskaźnik stosu Stan

Proces z jednym wątkiem Standardowy Unix MS-DOS

Proces z wieloma wątkami Linux MS-Windows POSIX OS/2 Solaris

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

Wątki na poziomie użytkownika ang. user-level threads System operacyjny nie jest świadom istnienia wątków. Zarządzanie wątkami jest przeprowadzane przez bibliotekę w przestrzeni użytkownika. Wątek A wywołuje funkcję read Standardowo funkcja systemowa read jest synchroniczna (usypia do momentu zakończenia operacji) Jednak sprytna implementacja w bibliotece wywołuje wersję asynchroniczną i przełącza się do wątku B. Rozwiązanie to jest szybkie, ma jednak wady: Dwa wątki nie mogą się wykonywać współbieżnie na dwóch różnych procesorach. Nie można odebrać procesora jednemu wątkowi i przekazać drugiemu

Wątki na poziomie jądra ang. kernel-level threads Wątek jest jednostką systemu operacyjnego. Wątki podlegają szeregowaniu przez jądro. W systemie SMP wątki mogą się wykonywać na różnych procesorach. Przetwarzanie równoległe. Windows i Linux wykorzystują tę metodę.

Przykład użycia wątków: Program do przetwarzania obrazów Użytkownik wydał polecenie Save Jego wykonanie może potrwać kilkadziesiąt sekund. Kto w tym czasie będzie obsługiwał mysz i klawiature? Wątek główny odpowiadający za interakcję z użytkownikiem. Po wydaniu polecenia Save tworzy wątek roboczy zapisujący obraz do pliku. Następnie powraca do konwersacji z użytkownikiem Dzięki temu aplikacja nie jest zablokowana (klepsydra w Win) na czas zapisywania Wątek roboczy wykonuje zapis i kończy pracę. Uwaga na synchronizację wątków!!! Co się stanie gdy po wydaniu polecenia Save natychmiast wydamy polecenie Usuń obraz? Sytuacja wyścigu (ang. race).

Problemy z wątkami W standardowej bibliotece C, w wersji wielowątkowej, errno jest implementowane jako prywatna zmienna globalna (nie współdzielona z innymi wątkami) Kilka wątków jednocześnie wywołuje funkcje malloc/free - może dojść do uszkodzenia globalnych struktur danych (listy wolnych bloków pamięci) Potrzeba synchronizacji => może prowadzić do spadku wydajności

Problemy z wątkami Proces otrzymuje sygnał: Wszystkie wątki otrzymują sygnał Wybrany wątek otrzymuje sygnał Wątek aktualnie aktywny otrzymuje sygnał Proces wykonuje fork. Czy duplikować jedynie działający wątek, czy też wszystkie wątki? Proces wywołuje exit. Zakończyć proces czy też jedynie aktywny wątek? Anulowanie wątku (ang cancellation). Wykonać natychmiast. Wątek co jakiś czas sprawdza czy nie został anulowany. Standard POSIX zawiera odpowiedzi na powyższe problemy.

POSIX threads utworzenie i dołączenie wątku void *thread(void *param) { // tu kod wątku // możemy przekazać wynik return NULL } int main() { pthread_t id; // Parametr przekazywany wątkowi void *param=null; pthread_create(&id,null,&thread,param); // Funkcja thread w odrębnym wątku // współbieżnie z main // id przechowuje identyfikator wątku Funkcja pthread_create tworzy nowy wątek. Rozpoczyna on pracę od funkcji, której adres przekazano jako trzeci argument. Funkcja pthread_join usypia wywołujący ją wątek do momentu, kiedy wątek o identyfikatorze przekazanym jako pierwszy argument zakończy pracę. Zakończenie pracy wątku powrót z funkcji która go rozpoczyna. } void *result; // Czekaj na zakończenie wątku pthread_join(id,&result); // Wynik w result,zamiast &result można // przekazać NULL