300 likes | 454 Vues
Systemy operacyjne. Wykład nr 4: Procesy. Piotr Bilski. Pojęcie procesu. Jest to program w czasie działania System operacyjny sam składa się z procesów Pojęcie charakterystyczne dla systemów z podziałem czasu System operacyjny przetwarza zadania. Budowa procesu.
E N D
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski
Pojęcie procesu • Jest to program w czasie działania • System operacyjny sam składa się z procesów • Pojęcie charakterystyczne dla systemów z podziałem czasu • System operacyjny przetwarza zadania
Budowa procesu • Kod programu (sekcja tekstu) • Wskazanie licznika rozkazów • Stos procesu (parametry funkcji, zmienne lokalne) • Sekcja danych (zmienne globalne)
Stany procesu Zakończony Nowy przyjęcie wyjście przerwanie Aktywny Gotowy decyzja planisty Oczekiwanie na zdarzenie lub operację wejścia-wyjścia Obsłużenie zdarzenia lub operacji wejścia-wyjścia Czekający
Stan procesu wskaźnik Numer procesu Licznik rozkazów Rejestry Ograniczenia pamięci Wykaz otwartych plików Informacje o planowaniu przydziału procesora Blok kontrolny procesu
Wątki • Tradycyjne procesy były jednowątkowe • Wątek to niezależny fragment wykonywanego procesu • Możliwe wykonywanie wielu wątków naraz (bez blokowania procesu!) • Wątki są „lżejsze” od procesów
Planowanie procesów • Procesów jest więcej, niż procesorów • Potrzebny dodatkowy proces decydujący o przydzielaniu procesorów procesom • Potrzebne kolejki planowania, w których oczekują procesy • Kolejka procesów gotowych – zawiera procesy gotowe do wykonania • Kolejka do urządzenia – zawiera procesy pragnące skorzystać z urządzenia
Czoło Ogon Kolejka procesów gotowych Blok kontrolny 2 Blok kontrolny 4 Stan procesu i informacje o nim Stan procesu i informacje o nim
Dysk twardy Blok kontrolny 2 Blok kontrolny 4 Czoło Czoło Stan procesu i informacje o nim Stan procesu i informacje o nim Ogon Ogon Stacja dyskietek Kolejka do urządzenia
Procesor Kolejka procesów gotowych We-Wy Zamówienia operacji wejścia-wyjścia Kolejka operacji wejścia-wyjścia Zużycie kwantu czasu Proces poto-mny działa Powołanie procesupotomnego Wystąpienie przerwania Czekanie na przerwanie Diagram szeregowania procesów
Planiści • Ekspedytor (dispatcher) – odpowiada za przełączenie kontekstu procesu • Planista krótkoterminowy – wybiera proces w pamięci i przydziela mu procesor • Planista długoterminowy – odpowiada za przemieszczanie procesów między dyskiem a pamięcią • Planista średnioterminowy – usuwa procesy z pamięci
Aspekty działania planistów Planista długoterminowy: • działa rzadko • zapewnia stopień wieloprogramowości • musi wyważyć obecność procesów w pamięci • nie jest wymagany (UNIX) Planista krótkoterminowy: • działa często • musi być szybki • Jest niezbędny w systemie operacyjnym
Usunięte procesy częściowo wykonane Procesor Kolejka procesów gotowych We-Wy Kolejki procesów czekających na wejście-wyjście Planista średnioterminowy Do pamięci Usuń z pamięci
Działania na procesach • Tworzenie procesu (create-process) • Przydział zasobów (od systemu operacyjnego lub procesu macierzystego) • Zachowanie procesu macierzystego (czekanie lub współbieżne działanie) • Kończenie procesu (exit lub abort) • System operacyjny odbiera zasoby • Dane wracają do procesu macierzystego • Współpraca między procesami
Kończenie procesu potomnego • Proces wykonał niedozwoloną operację na zasobach przydzielonych przez proces macierzysty • Proces potomny spełnił swoje zadanie • Zakończenie procesu macierzystego • Kończenie kaskadowe (proces macierzysty kończy działanie) • Przypisanie procesom potomnym nowego przodka, np. init
Współpraca procesów • Cele: • Współdzielenie informacji • Przyspieszenie obliczeń • Modularność • Wygoda • Model producent-konsument • Rozmiar bufora komunikacji • Nieograniczony bufor • Ograniczony bufor • Realizacja: komunikacja międzyprocesowa
Komunikacja międzyprocesowa (IPC) • Łączność bez współdzielenia przestrzeni adresowej • Rozwiązania: • Komunikacja bezpośrednia • Komunikacja pośrednia • Synchronizacja • Buforowanie
Przekazywanie komunikatów • Podstawowe operacje: send(), receive() • Konieczne łącze komunikacyjne • Komunikaty o stałej lub zmiennej długości • Buforowanie automatyczne lub jawne • Komunikacja symetryczna lub asymetryczna
Komunikacja bezpośrednia • Obie strony komunikacji muszą używać jawnych identyfikatorów (nazw) drugiej strony • Adresowanie jest symetryczne lub nie • Łącze komunikacyjne między parą procesów (dokładnie!) • Przykład: send(A, message) receive(B, message)
Komunikacja bezpośrednia niesymetryczna • Odbiorca nie musi znać nadawcy • Przykład: send(A,message) receive(in, message) • Wada: statyczność nazw!
Komunikacja pośrednia • Wykorzystuje skrzynki pocztowe • Skrzynka ma jednoznaczny identyfikator, jest utrzymywana przez SO • Dwa procesy mogą współdzielić wiele skrzynek • Przykład: send(A, message) receive(A, message)
Problem wielu procesów • Który ze zdefiniowanych odbiorców pobierze wiadomość ze skrzynki? • Kolejność dowolna • Blokująca operacja receive() • Ograniczenia użycia skrzynki do dwóch procesów • Skrzynka może być własnością procesu (wówczas tylko on może odbierać z niej wiadomości)
Operacje systemu na skrzynkach • Tworzenie skrzynki • Nadawanie komunikatów • Odbieranie komunikatów • Likwidacja skrzynki • Uwaga: skrzynka utrzymywana przez proces jest likwidowania razem z nim! Skrzynka SO istnieje zawsze
Synchronizacja • Nadawanie z blokowaniem • Nadawanie bez blokowania • Odbiór z blokowaniem • Odbiór bez blokowania • Spotkanie (nadawanie i odbiór z blokowaniem)
Problem wielkości bufora • Pojemność zerowa (długość 0 – blokowanie nadawcy) • Pojemność ograniczona (długość n – blokowanie nadawcy po przepełnieniu) • Pojemność nieograniczona (długość Inf – brak blokowania nadawcy)
Komunikacja w systemach rozproszonych • Gniazda • Zdalne wywoływanie procedur • Zdalne wywoływanie metod
Gniazda Komputer 1 Komputer 2 (serwer www) • Punkt końcowy komunikacji klient-serwer • Well-known ports – pula portów zarezerwowanych • Gniazda połączeniowe (TCP) i bezpołączeniowe (UDP) 116.34.56.20 6780 176.2.123.7 80
Zdalne wywołanie procedur (RPC) Serwer Klient • Namiastki – „makiety” procedur • Przetaczanie parametrów – kopiowanie ich i przesyłanie do drugiego komputera Program serwera Program klienta Namiastka Namiastka Lokalny SO Lokalny SO
Zdalne wywołanie metod (RMI) Serwer Klient • Obiektowa wersja RPC • Potrzebny interfejs! Obiekt Program klienta Szkielet Namiastka Lokalny SO Lokalny SO
Przykład – Windows NT/2000 • Struktura modułowa • Przekazywanie komunikatów: LPC • Połączenie między procesami poprzez port • Port połączenia • Port komunikacyjny • Metody przesyłania komunikatów • kolejka komunikatów portu • Obiekt sekcji (pamięć dzielona)