sysop procesor


Wykład nt. podstawy systemów operacyjnych -- procesy Instytut Informatyki Politechniki Łódzkiej w Łodzi mgr inż. Bartosz Lis Wykład nt. Podstawy systemów operacyjnych dla potrzeb Studium Podyplomowego "Inżynierskie Zastosowania Informatyki" Poprzedni | Spis treści | Następny  | Zadania Rozdział 2: Zarządzanie czasem procesora Definicje procesu, wieloprocesowości, wielodostępu i wywłaszcania procesora Pierwsze systemy operacyjne pozwalały na wykonanie jednego programu na raz. W raz z rozwojem informatyki w szczególności pojawieniem się interakcyjnych wielodostępnych systemów operacyjnych, a później wprowadzeniem graficznych interfejsów użytkownika wystąpiła opotrzeba jednoczesnego uruchamiania na tym samym procesorze wielu programów w taki sposób by zminimalizować możliwości wzajemnych zakłóceń między procesami. System operacyjny nazyway wielodostępnym, jeżeli wielu użytkowników może jednocześnie z nim pracować, każdy z nich ma wrażenie ciągłej pracy systemu na jego rzecz. Podobną drogę przeszły mikrokomputery od systemu CP/M i MS-DOS do dzisiejszych MAC-OSa i MS Windows NT. W nowoczesnym systemie operacyjnym dany program może być wykonywany przez wielu użytkowników jednocześnie, w związku z tym wprowadza się pojęcie procesu. Silberschatz et al w [2] definiują proces jako program, który jest wykonywany. Sprecyzować należy, że każdy załadowany do pamięci operacyjnej celem wykonania egzemplaż programu razem z danymi na których operuje stanowi oddzielny proces. System operacyjny nazywamy wieloprocesowym jeżeli dopuszcza jednoczesne istnienie w nim wielu procesów. Takim systemem jest np. MS-DOS, przy czym w tym wypadku proces raz uruchomiony blokuje innym procesom dostęp do procesora aż do swego zatrzymania, dopiero wówczas może na nowo podjąć swe wykonanie jego proces macierzysty. Takim systemem nie jest np. CP/M, w którym może istnieć tylko jeden proces. Jak to już stwierdzono w MS-DOSie po uruchomieniu procesu potomnego dany proces był zamrażany i faktycznie nie mógł się wykonywać aż do zakończenia potomka. Jeżeli oczekujemy od komputera z jednym procesorem aby był wielodostępny, musimy zadbać o to by dzielić czas procesora między różne procesy, niezależnie od tego, czy aktualnie wykonujący się proces ma ochotę zwolnić procesor, czy nie. Takim mechanizmem jest wywałaszczanie procesora. Każdy proces w systemie wieloprocesowym z wywłaszczaniem w chwili uzyskania procesoraotrzymuje też kwant czasu. Po wyczerpaniu swego kwantu czasu proces jest przerywany, a na jego miejsce wykonywany jest inny proces. Wywłaszczony proces trafia na koniec kolejki procesów ubiegających się o procesor. Przykładami takich systemów są Unix, Windows NT i Windows 95. Graf stanów procesu Współbieżna praca więcej niż jednego procesu niesie z sobą mozliwość konfliktów przy dostępie do zasobów. W takich warunkach ujawnia się rola systemu operacyjnego jako dystrybutora zasobów. System operacyjny (a w zasadzie jego jądro) rozstrzyga konflikty o zasoby przydzielając je jednym ubiegająceym się o nie procesom a innne procesy powstrzymując do czasu zwolnienia zasobów przez dotychczasowych zwycięzców. Proces, który zażądał dostępu do zasobu (w szczególności wykonania operacji we/wy) i go nie otrzymał nie może być dalej wykonywany aż do chwili uzyskania zasobu (zakończenia operacji we/wy). O takim procesie mówi się że jest w stanie uśpionym. Zwalnia on procesor pozwalając innym procesom na wykonywanie się. W systemach z wywłaszczaniem procesora wyróżnia się pewien specjalny stan - oczekiwanie na przydział procesora. Mamy z nim do czynienia gdy proces posiada wszystkie niezbędne mu zasoby, nie wykonuje operacji wejścia wyjścia a czeka jedynie na przydzielenie mu [czasu] procesora. O takim procesie mówimy, że jest w stanie gotowy do wykonania. Różne systemy operacyjne wyróżniają różny zestaw stanów, przez które przechodzi proces w trakcie życia, ale w każdym systemie wieloprocesowym z wywłaszczaniem można wyróżnić następujące stany: Wykonywany - jest aktualnie wykonywany przez procesor, Gotów do wykonania - oczekuje na swoją kolejkę do wykonania, Uśpiony - oczekuje na dostęp do zasobu lub operrację wejścia/wyjścia, np. wcisnięcie klawisza przez użytkownika, Niszczony - w trakcie zwalniania zasobów po zakończeniu.   Kolejki i priorytety Procesy oczekujące na zwolnienie procesora mogą mieć różną ważność. Przykładowo, może to być proces dokonujący pomiaru w toczącym się eksperymencie, edytor teksu, proces systemowy uruchomiony celem zrobinia okresowych porządków i zadanie symulacji numerycznej pewnego układu fizycznego wykonywane długi czas w tle. Pierwsze dwa procesy mają to do siebie, że większość czasu oczekują na zajście operacji wejścia wyjścia, a gdy już to nastąpi, powinny natychmiast reagować, z kolei dwa ostatnie wykorzystują głównie czas procesora, ale nie są na tyle pilne, by nie mogły ustępować w razie potrzeby innym. W zależności od pilności zadania i jego dotychczasowego przebiegu, system operacyjny nadaje procesowi priorytet. Generalnie, czym mniejszą liczbą jest wyrażony, tym lepiej z punktu widzenia procesu - ma więksy dostęp do procesora. Dla każdego priorytetu tworzona jest osobna kolejka procesów gotowych do wykonania. Dopóki w kolejce o priorytecie wyrażonym mniejszą liczbą czekają procesy, prcesy z kolejki większego priorytetu nie będą wykonywane. Najmniejsze priorytety są zarezerwowane dla użytku systemu operacyjnego, są one do tego stopnia uprzywilejowane, że procesy wykonujące się z tymi priorytetami nie są wywłaszczane. Stąd też są używane jedynie w wyjątkowych okolicznościach przez krótkie procedury systemowe. Użytkownik ma zwykle możliwość wyboru priorytetu dla uruchamianego procesu, jednakże jest w swym wyborze ograniczony "z dołu". System operacyjny rezewuje sobie możliwość zmiany priorytetu w trakcie działania procesu, celem wyrównania szans różnych procesów. Wątki Niektóre systemy operacyjne dopuszczają współbieżność w ramach jednego procesu. Określa się wówczas wątek jako jednostkę wykonania. Każdy wykonujący się proces ma przynajmniej jeden wątek, każdy wątek wykonuje się w ramach jednego procesu. Wątki konkurują ze sobą o czas procesora. Pozostałe zasoby przydzielane są na rzecz procesu. System operacyjny zostawia programiście aplikacji wolną rękę w rozstrzyganiu konfliktów pomiędzy wątkami o dostęp do zasobów przydzielonych procesowi. System operacyjny nazywamy wielowątkowym, jeżeli dopuszcza istnienie wielu wątków wykonania w ramach jednego procesu. Przykładami systemów wielowątkowych są Windows NT, Windows 95 i niektóre odmiany Uniksa. W systemach nie będących wielowątkowymi pojęcie wątku i prcesu utożsamia się. Przedstawiony na rys. 2.1 graf stanów procesu oraz kolejkowanie w systemie wielowątkowym dotyczy oczywiście wątków. Proces nie posiada stanów, jest kończony w momencie gdy skończy się jego ostatni wątek. Jeżeli nie będzie to wyraźnie zaznaaczone, w dalszej części wykładu procesy i wątki będą ze sobą utożsamiane. Kontekst procesu Aby proces/wątek mógł być wznowiony od miejsca w którym przerwane zostało jego wykonanie, należy zachować pewne informacje o stanie procesora w chwili przerywania działania procesu. Zbiór wszystkich informacji niezbędnych do podjęcia prez proces działania z miejsca, w którym się znajduje nazywamy kontekstem procesu. Zdarzenie zapamiętania kontekstu aktualnego procesu i wprowadzenia do procesora wcześniej zachowanego kontekstu innego procesu celem rozpoczęcia jego wykonania nazywamy przełączeniem kontekstu. Kontekst procesu składa się z zawartości rejestrów procesora, w szczególności wskaźnika instrukcji, rejestru flag stanu i wskaźnika stosu. W przypadku systemów z pamięcią wirtualną w skład kontekstu wchodzą tablice stron. Procesy interakcyjne, wsadowe i demony Nie wszystkie procesy wymagają ciągłej współpracy użytkownika w trakcie działania. Te które wymagają - nazywamy interakcyjnymi. Są to m.in. edytory tekstu, programy do odbierania poczty itp. Programy interakcyjne mają zawsze przypisany jakiś zasób umożliwiający konwersację z użytkownikiem. W przypadku Uniksa jest to terminal znakowy. W przypadku programu z graficznym interfejsem użytkownika jest to okienko graficzne na ekranie komputera. Procesy nie wymagające uwagi użytkownika dzielą się na dwie kategorie: demony - programy świadczące usługi dla systemu jako całości (program wymiatający pamięć podręczną) lub dla ogółu użytkowników (silnik bazy danych) oraz zadania wsadowe - zadania uruchomione przez jednego użytkownika, wykonujące długotrwałe obliczenia, których nie trzeba nadzorować, np: sysmulacje numeryczne, tworzenie grafiki w oparciu o techniki śledzenia promieni, itp.) System operacyjny dostarcza administratorowi narzędzi do uruchamiania i nadzorowania procesów pierwszego typu, a pozostałym użytkownikom drugiego typu. Poprzedni | Spis treści | Następny  | Zadania Wszelkie uwagi i komentarze: bartoszl@stud.ics.p.lodz.pl

Wyszukiwarka