Systemy Operacyjne i Sieci Komputerowe Sprzęt komputerowy Prowadzący: System Operacyjny + Programy Łatwe użytkowanie szmurlor@iem.pw.edu.pl GE 229 1
Architektury systemów The IBM 360 was a revolutionary advance in computer system architecture, enabling a family of computers covering a wide range of price and performance. www.crowl.org/lawrence/history/ 2
Systemy operacyjne oczami architekta Systemy operacyjne oczami architekta: architektury systemów operacyjnych procesy (definicja, organizacja, zarządzanie, planowanie) obsługa urządzeń przez system operacyjny zarzadzanie i organizacja pamięci zarządzanie przestrzenią dyskową (co to jest DOS) synchronizacja, zakleszczenia, bezpieczeństwo, i inne, 3
Architektury SO Jednolita (monolityczna) Warstwowa Klient-Serwer 4
Jednolita 5
Warstwowa 6
Klient-serwer 7
Hybrydowa Stanowi połączenie architektury jednolitej z architekturą typu klient-serwer (z mikrojądrem). The basic Windows NT architecture: Architektura systemu Windows NT. Na podstawie: http://oreilly.com/catalog/securwinserv/chapter/ch01.html 2001, O'Reilly & Associates, Inc. Windows NT is a multithreaded, micro-kernel-based[8] operating system. The term micro-kernel implies that the kernel component is very small, and provides only basic functions such as thread dispatching and hardware exception handling. Hardware-specific code is kept in a separate layer called the Hardware Abstraction Layer (HAL). The HAL simplifies porting of the operating system to new processor architectures like the IA-64. The core operating system code runs in privileged processor mode. This mode is also known as protected mode (when referring to the CPU), or kernel mode (when referring to a process or thread). Protected mode provides direct access to system memory and other hardware. Applications run in a nonprivileged processor mode known as user mode and have no direct hardware access. Applications have to use the system calls -- the API (Application Programming Interface) -- in the underlying operating system to perform tasks such as reading or writing to memory or to the screen. 8
Procesy... 9
Procesy Proces jest elementarną jednostką pracy (aktywności) zarządzaną przez system operacyjny, która ubiega się o zasoby systemu komputerowego w celu wykonania programu. Proces jest to program w trakcie wykonywania, który do wykonania określonego zadania potrzebuje pewnych zasobów: procesor, pamięć, pliki, urządzenia wejścia-wyjścia (klawiatura,ekran,skaner,karta sieciowa,port szeregowy lub równoległy itp.) Synonimami procesu, które są stosowane w literaturze są: praca (job) lub zadanie (task). Zadanie odnosi sie żazwyczaj do systemów wsadowych, w danej chwili może być wykonywane tylko jedno, Praca - systemy z podziałem czasu (czas wykorzystania zasobów w tym procesora) jest dzielony na wiele prac (multitasking). 10
Definicje: elementy składowe procesu program definiuje zachowanie procesu, ( Proces jest czymś więcej niż samym kodem programu (sekcją tekstu - text section) ). Program jest obiektem pasywnym, natomiast proces jest obiektem aktywnym. dane zbiór wartości przetwarzanych oraz wyniki, stos procesu (przechowuje dane tymczasowe). sterta - Sekcja danych (zawiera zmienne globalne). zbiór zasobów tworzących środowisko wykonawcze, (np. zawartość rejestrów procesora, kontekst procesora) blok kontrolny procesu (PCB, deskryptor) opis bieżąca czynność reprezentowana przez wartość licznika rozkazów. (rejestr PC program counter). 11
Definicje: Blok kontrolny procesu Struktura przechowująca informację o procesie. Blok kontrolny procesu przechowuje następujące informacje: Stan procesu Licznik rozkazów (pozycja aktualnie wykonywanej instrukcji) Rejestry procesora (akumulatory,rejestry indeksowe,wskaźniki stosu) Informacje o planowaniu przydziału procesora (np. priorytet procesu) Informacje o zarządzaniu pamięcią (rejestry graniczne, tablice stron, lub tablice segmentów) Informacje do rozliczeń (ilość zużytego procesora i czasu rzeczywistego, ograniczenia czasowe,numery kont,numery zadań,numery procesów) Informacje o stanie wejścia-wyjścia Stan procesu Wskaźnik Numer procesu (PID) Licznik rozkazów (PC) Rejestry Ograniczenia pamięci Wykaz otwartych plików......... 12
Definicje: Stan procesu 13
Definicje: Operacje na procesach Każdy system operacyjny udostępnia następujące podstawowe operacje: Załadowanie, wykonanie Zakończenie, zaniechanie Utworzenie procesu, zakończenie Pobranie atrybutów, określenie atrybutów, Czekanie czasowe, (np. CTRL+D czyli zawieszenie) Oczekiwanie na zdarzenie, Przydział i zwolnienie pamięci 14
Zarządzanie procesami System operacyjny zarządza procesami szeregując je w odpowiednich kolejkach procesów. System zarządza kolejnością procesów w kolejkach. 15
Planowanie przydziału procesora Planiści Planista - Algorytm szeregowania (ang. scheduler - planista) to algorytm rozwiązujący jedno z najważniejszych zagadnień informatyki - jak rozdzielić czas procesora i dostęp do innych zasobów pomiędzy zadania, które w praktyce zwykle o te zasoby konkurują. Planista zajmuje się przenoszeniem procesów między kolejkami oraz szereguje procesy w samych kolejkach. Planiści np.: Planista długoterminowy (ang. long term scheduler) Planista krótkoterminowy (ang. short term scheduler) Kryteria planowania: wykorzystanie procesora, przepustowość, czas cyklu przetwarzania, czas oczekiwania, czas odpowiedzi Przykładowe algorytmy planowania: Pierwszy zgłoszony pierwszy obsłużony (FCFS first come first serve) Najpierw najkrótsze zadanie (SJF - Shortest Job First) Planowanie priorytetowe Planowanie rotacyjne (RR round-robin) 16
Planiści w szczegółach Planista krótkoterminowy, planista przydziału procesora (ang. CPU scheduler) zajmuje się wyborem procesu z kolejki procesów gotowych, dla którego ma być przydzielony aktualnie procesor. Planista średnioterminowy (ang. medium-term scheduler) zajmuje się wymianą procesów pomiędzy pamięcią główną a pamięcią zewnętrzną (np. Dyskiem). Wykorzystywany we wszystkich systemach z pamięcią wirtualną. Planista długoterminowy, planista zadań (ang. long-term scheduler, job scheduler) zajmuje się ładowaniem nowych programów do pamięci i kontrolą liczby zadań w systemie oraz ich odpowiednim doborem w celu zrównoważenia wykorzystania zasobów. 17
Planiści: Definicje Kwant czasu - minimalny przedział czasu, który jest wyznaczany przerwaniem zegara, ang. timer) Opóźnienie ekspedycji (dispatch latency) czas od momentu zgłoszenia do momentu rozpoczęcia wykonywania zadania. Czas oczekiwania całkowity czas od momentu zgłoszenia, do momentu zakończenia procesu NIE użytkowany przez dany proces. Czas wykonania zadania całkowity czas od momentu zgłoszenia zadania do jego zakończenia. 18
Pierwszy zgłoszony pierwszy obsłużony Załóżmy że procesy P1, P2, P3, nadejdą (zostanie zgłoszone żądanie wykonania) w tym samym momencie (czyli w tej samej chwili) w kolejności P1,P2,P3. Załóżmy niezbędny czas użycia procesora dla procesów: P1-24 [kwanty czasu], P2 3 [kwanty czasu], P3 3 [kwanty czasu] 19
Najpierw najkrótsze zadanie Załóżmy cztery procesy o czasach użycia procesora w kwantach czasu: P1 6, P2 8, P3 7, P4-3 20
Planowanie priorytetowe Sam algorytm nie ma dużego wpływu na średni czas oczekiwania, ale odpowiedni dobór priorytetów pozwala osiągnąć odpowiedni wynik. Załóżmy następujący przypadek procesów: Proces P1 P2 P3 P4 P5 Czas trwania 10 1 2 1 5 Priorytet 3 1 3 4 2 21
Planowanie rotacyjne (RR - round-robin) Planowanie sprawiedliwe z wywłaszczaniem. Wymaga specjalnej architektury sprzętowej. Wykorzystywane we wszystkich współczesnych systemach wielozadaniowych, oczywiście z pewnymi modyfikacjami (Gang Scheduling). Dla ustalonego kwantu czasu: 4ms, oraz dla założonych procesów: P1 24, P2-3, P3-3 Planowanie tylko dla systemów z podziałem czasu! (Wymagane jest wywłaszczanie.) 22
Wątki... 23
Wątek Definicja Wątek (ang. thread) - jest innym rodzajem procesu, wykonywanego współbieżnie w obrębie jednego zadania (programu). W jednym procesie może być wiele wątków. Wątki tego samego procesu korzystają ze wspólnego kodu i danych, mają jednak oddzielne stosy. W systemach wieloprocesorowych, a także w systemach z wywłaszczaniem, wątki mogą być wykonywane równocześnie (współbieżnie). Równoczesny dostęp do wspólnych danych grozi jednak utratą spójności danych i w konsekwencji błędem działania programu. Do zapobiegania takim sytuacjom wykorzystuje się mechanizmy synchronizacji wątków: semafory, muteksy, sekcje krytyczne. 24
Wątki Proces Wątek (inaczej zwany procesem lekkim) jest to jednostka wykorzystania procesora w skład której wchodzą: własny licznik rozkazów, własny zbiór rejestrów, własny obszar stosu. Wątki uruchamiane są w ramach jednego procesu oraz współużytkują: sekcję kodu, sekcję danych, zasoby systemu Poziom na którym następuje zarządzanie wątkami: Wątki ma poziomie jądra systemu operacyjnego Wątki zewnętrzne, (w zewnętrznych bibliotekach) Dane (Sterta) Kod Wątek 4 Licznik Rozkazów Wątek 1 Licznik Rozkazów Rejestry Stos Danych Zasoby Systemu Wątek 2 Licznik Rozkazów Rejestry Stos Danych Rejestry Stos Danych Wątek 3 Licznik Rozkazów Rejestry Stos Danych 25
Wątki w Solaris Trzywarstwowa struktura: wątki użytkownika procesy lekkie wątki poziomu jądra 26
Przykład tworzenia procesu w Unix W unix tworzenie procesów jest efektywne i mało kosztowne obliczeniowo. Funkcja tworząca kopię procesu macierzystego. #include <stdio.h> void main() { int fork_return; int count = 0; fork_return = fork(); system("ps"); if( fork_return > 0) { printf("utworzylem proces potomny o pid=%d.\n", fork_return); } else { sleep(200); printf( Jestem procesem potomnym.\n ); } } 27
Tworzenie procesu w Windows W Windows tworzenie procesów jest kosztowne czasowo, dlatego bardzo intensywnie wykorzystywane są wątki. #include <windows.h> #include <stdio.h> void main( VOID ) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); // Start the child process. if(!createprocess( NULL, // No module name (use command line). TEXT("MyChildProcess"), // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ) // Pointer to PROCESS_INFORMATION structure. ) { printf( "CreateProcess failed (%d).\n", GetLastError() ); return; } // Wait until child process exits. WaitForSingleObject( pi.hprocess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hprocess ); CloseHandle( pi.hthread ); } 28
Synchronizacja zadań - Problem ucztujących filozofów Problem ucztujących filozofów (znany też jako problem pięciu filozofów) to informatyczny problem synchronizacji, przedstawiony przez E. Dijkstrę w 1965 roku, o następującej treści: Przy okrągłym stole siedzi pięciu filozofów. Na stole, przed każdym z ucztujących, znajduje się talerz oraz pomiędzy każdymi dwoma sąsiadami - widelec. Oprócz tego na środku stołu znajduje się miska z makaronem (różne wersje tego problemu mówią o rybie lub ryżu i pałeczkach). Aby przystąpić do konsumpcji makaronu filozof musi zaopatrzyć się w dwa, dobierane pojedynczo, widelce. Po spożyciu pokarmu filozof odkłada oba widelce i oddaje się własnym rozważaniom, aż do czasu gdy ponownie zgłodnieje. Problem polega na opracowaniu takiego algorytmu działań uczestników uczty, aby żaden z nich nie został zagłodzony oraz aby nie doszło do blokady całego systemu (w sytuacji, gdy każdy z filozofów ma po jednym widelcu). Problem ucztujących filozofów jest prezentacją problemu synchronizacji pracujących współbieżnie procesów. Istnieje kilka możliwych rozwiązań tego problemu, między innymi wykorzystujące arbitrów lub grupy semaforów. 29
Procesy oczami użytkownika... 30
Blok kontrolny procesu (PCB Process Control Block) Struktura przechowująca informację o procesie. Blok kontrolny procesu przechowuje następujące informacje: Stan procesu Licznik rozkazów (pozycja aktualnie wykonywanej instrukcji) Rejestry procesora (akumulatory,rejestry indeksowe,wskaźniki stosu) Informacje o planowaniu przydziału procesora (np. priorytet procesu) Informacje o zarządzaniu pamięcią (rejestry graniczne, tablice stron, lub tablice segmentów) Informacje do rozliczeń (ilość zużytego procesora i czasu rzeczywistego, ograniczenia czasowe,numery kont,numery zadań,numery procesów) Informacje o stanie wejścia-wyjścia Stan procesu Numer procesu (PID) Licznik rozkazów (PC) Wskaźnik Rejestry Ograniczenia pamięci Wykaz otwartych plików......... 31
Komendy do zarządzania procesami w Unixie Podstawą jest PID identyfikator procesu Komendy: monitorowanie: ps [-aux], pstree, top uruchamianie w tle: & zawieszanie CTRL+Z, przywracanie na wierzchu: fg (od foreground) przywracanie w tle: bg (od background) Wyświetla wszystkie procesy uruchomione w systemie wraz ze szczegółami (np. użytkownicy i nazwy komend) Wyświetla drzewo procesów (czyli informacje o procesach macierzystych i potomnych) Wyświetla szczegółowe informacje o chwilowym i średnim wykorzystaniu zasobów systemu. wysyłanie komunikatów: kill kill -9 [PID] sprawdzanie otwartych plików: lsof -p [PID] uruchamianie z niższym priorytetem: nice śledzenie wywołań systemowych: strace Usuwa dany proces z systemu. (Zabija go.) 32
Zarządzanie Procesami Windows Przydatna opcja: /SVC pozwala wyświetlić informacje o usługach związanych z każdym procesem 33
Zarządzanie Procesami Unix 34
Zarządzanie Procesami Unix 35
Priorytety Procesów Unix Dwie liczby: priorytet, uprzejmość (nice). Liczba o mniejszej wartości ma wyższy priorytet. Komenda: nice Windows 6 poziomów 36
Interakcja Jeżeli coś cię zainteresowało i chciałbyś aby na następnym wykładzie zostało rozszerzone, powtórzone, omówione dokładniej, to nie krępuj się i napisz maila: szmurlor@iem.pw.edu.pl Jeżeli coś było nie jasne, napisz maila: szmurlor@iem.pw.edu.pl Jeżeli coś cię znudziło, napisz maila: szmurlor@iem.pw.edu.pl 37