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
Nowy Zakończony
Gotowy Aktywny
Czekający
przyjęcie
przerwanie
decyzja planisty
wyjście
Obsłużenie zdarzenia lub operacji wejścia-
wyjścia
Oczekiwanie na zdarzenie lub operację
wejścia-wyjścia
Blok kontrolny procesu
wskaźnik Stan procesu
Numer procesu
Licznik rozkazów
Rejestry
Ograniczenia pamięci
Wykaz otwartych plików
Informacje o planowaniu przydziału
procesora
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
Kolejka procesów gotowych
Czoło
Ogon
Blok kontrolny 4
Stan procesu
i informacje o nim
Blok kontrolny 2
Stan procesu
i informacje o nim
Kolejka do urządzenia
Czoło
Ogon
Stacja dyskietek
Czoło
Ogon
Blok kontrolny 4
Stan procesu
i informacje o nim
Blok kontrolny 2
Stan procesu
i informacje o nim
Dysk twardy
Diagram szeregowania procesów
Zamówienia operacji wejścia-wyjścia
Zużycie kwantu czasu
Powołanie procesupotomnego
Czekanie na przerwanie
Kolejka operacji wejścia-wyjścia
Kolejka procesów gotowych
Procesor
We-Wy
Proces poto-mny działa
Wystąpienie przerwania
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 krótkoterminowy:• działa często• musi być szybki• Jest niezbędny w
systemie operacyjnym
Planista długoterminowy:• działa rzadko• zapewnia stopień
wieloprogramowości• musi wyważyć obecność
procesów w pamięci• nie jest wymagany
(UNIX)
Planista średnioterminowy
Kolejki procesów czekającychna wejście-wyjście
Kolejka procesów gotowych
Procesor
We-Wy
Usunięte procesy częściowo wykonane
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
• Punkt końcowy komunikacji klient-serwer• Well-known ports – pula portów zarezerwowanych• Gniazda połączeniowe (TCP) i bezpołączeniowe
(UDP)
Komputer 1 Komputer 2 (serwer www)
116.34.56.20
6780 176.2.123.7
80
Zdalne wywołanie procedur (RPC)
• Namiastki – „makiety” procedur• Przetaczanie parametrów – kopiowanie ich i
przesyłanie do drugiego komputera
Lokalny SO
Program klienta
Namiastka
Lokalny SO
Program serwera
Namiastka
Klient Serwer
Zdalne wywołanie metod (RMI)
• Obiektowa wersja RPC• Potrzebny interfejs!
Lokalny SO
Program klienta
Namiastka
Lokalny SO
Obiekt
Szkielet
Klient Serwer
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)
Top Related