PPS 2013 W8


Wykład 8
Sterowanie procesami
Komunikacja między procesami
ØðKoncepcja procesu
ØðStany procesu
ØðPrzeÅ‚Ä…czanie pomiÄ™dzy procesami
ØðPrzykÅ‚ad implementacji przeÅ‚Ä…czania procesów
Øðkomunikacja miÄ™dzyprocesowa
ØðsygnaÅ‚y
Øðstrumienie
Wieloprogramowość
Cecha umożliwiająca  jednoczesne wykonywanie
wielu programów
Wymagany program organizujący pracę programów
użytkowych  system nadzorczy/operacyjny
Mechanizmy sterowania wykonaniem programów
Mechanizmy przepływu informacji pomiędzy
programami
Składowe systemu operacyjnego
 przybory systemowe
(tryb użytkownika)
programy zarządza- procesy użytko- pomocnicze progra-
kompilatory
nia systemem we my użytkowe
wspólne biblioteki systemu
jÄ…dro
ładowalne moduły jądra
Współdziałanie Pamięć wirtualna,
aplikacji z jądrem procesy, sygnały
(tryb użytkownika) (tryb jądra)
Składowe systemu cd
Koncepcja procesu
System wieloprogramowy = wiele realizacji programów może
być wykonywanych jednoczeÅ›nie ®ð proces
Cechy procesu
realizacja wykonywania programu
wykonanie/wstrzymanie w dowolnym momencie
równoległość  przełączanie kontekstowe
niezależność: wykorzystanie mechanizmów CPU dla
zapobieżenia bezpośredniego korzystania z hardware u lub
komórek o ustalonych adresach
tryb użytkownika i tryb jądra
ochrona pamięci
Składniki procesu
SkÅ‚adowe procesu w systemie LINUX Fð
ØðLiniowa przestrzeÅ„ adresowa, w której wydzielić można
sekcjÄ™ tekstu (kod programu), sekcjÄ™ danych i sekcjÄ™ stosu.
ØðLicznik programu wskazujÄ…cy na aktualnie wykonywanÄ…
instrukcję, lub w przypadku programów wielowątkowych wiele
takich liczników.
ØðZapis stanu rejestrów procesora.
ØðDeskryptory plików, opisujÄ…ce otwarte przez proces pliki,
strumienie i połączenia sieciowe.
ØðDane procesu, takie jak unikalny dla procesu numer PID,
numer użytkownika UID, numery grup GID, efektywny UID i
GID..
ØðZależnoÅ›ci rodzinne z innymi procesami: rodzic, lista dzieci i
braci.
ØðLiczniki statystyczne zapisujÄ…ce m.in. zużyty czas w trybie
jądra i trybie użytkownika.
Deskryptor procesu
Każdy proces reprezentowany jest przez jego deskryptor
nazwa
typ opis
bieżący stan procesu (executing, ready, itd.)
priorytet
polityka szeregowania (łańcuchowo, itp.)
bieżący czas przydzielony procesowi
lista deskryptorów uruchomionych procesów
identyfikator procesu (PID)
stan rejestrów CPU
Procesy i zadania
Procesy z zewnątrz widziane jako niezależne
Od strony jądra  poszczególne zadania systemu
Składowe systemu cd
program procedura obsługa procedury
użytkownika biblioteczna wywołań jądra
systemowych
Tryb jÄ…dra
Stany procesu
" Aktywny:
" ­ð w trybie użytkownika - proces znajduje siÄ™  w procesorze i wykonuje
swój kod.
" ­ð w trybie jÄ…dra - jÄ…dro wykonuje wywoÅ‚anie systemowe wykonane przez
proces.
" Gotowy do wykonania - może być uruchomiony w każdej chwili, jednak nie
został mu jeszcze przydzielony procesor.
" Uśpiony  proces czeka na jakieś zdarzenie, na przykład na odczyt danych
z dysku lub z sieci.
" Zatrzymany  proces czeka na sygnał (wznowienia)
" Zombie (widmo)- proces zakończył działanie i czeka na odebranie kodu
powrotu przez proces, który w międzyczasie przestał istnieć.
Zmiany stanu procesu
UTWORZENIE
PROCESU
WIDMO
przełączenie w stan działania
ustanowienie nowego
zakończenie procesu
procesu
GOTOWY
przełączenie
DZIAAA
w stan
gotowości
zdarzenie! ->
sygnał
proces do
zatrzymania
proces uśpiony;
kolejki
oczekuje zdarzenia
sygnał
wznowienia
ZATRZYMANY
UÅšPIONY
od innego
procesu
Przełączanie kontekstowe
Przełączanie kontekstowe
zapisz zawartość rejestrów CPU do deskryptora procesu
odczytaj zawartość rejestrów CPU z deskryptora następ-
nego procesu
Rejestry zachowywane przy przełączaniu
licznik programu i wskaznik stosu
rejestry robocze (ogólnego przeznaczenia)
rejestry jednostki zmiennoprzecinkowej
PSW
rejestry zarządzania pamięcią
Sterowanie procesami przez jÄ…dro
Tryb jądra i tryb użytkownika
CPU pracuje w trybie jądra lub w trybie użytkownika
programy w trybie użytkownika nie mają dostępu do
przestrzeni danych jÄ…dra i funkcji jÄ…dra
programy w trybie jądra mają dostęp do wszystkich zasobów
yródła przełączenia w tryb jądra
PRZYKAAD IMPLEMENTACJI
PRZEACZANIA PROCESÓW
The diagram of the programme Initial-value
Przykład: urządzenie sterujące
label
LOOP ogrzewaniem (mikrokontroler)
Copy temperature in
variable and display
Funkcje:
-odczyt ustawień
Wait 250ms
-komunik. przez wyświetlacz
Label
Arrows up Enter
KEYBOARD
-obliczenie sterowania
Arrows
down
-sterowanie
Increment variable Decrement variable display OK
and display with and display with with
OK OK temperature
no enter
Wait 1.5 seconds Wait 2secondes
Put enter
Display new
Temperature display
temperature
Calculation and Calculation and
execution of execution of
a control a control
Procesy składowe aplikacji
Zasoby systemu wielozadaniowego
Zasoby procesów składowych aplikacji
Budowa systemu
Initialisation
stack0,1,2,3 starts at address ...H (internal ram)
values for the timer 0
Set values for variables
& & & & & & & &
& & & & & & & & ..
main_prog
Process0
Process1
Process2
Process3
Switching routine
PROCESS 1
PROCESS 0
(Read keyboard & save
data in a variable)
WAIT 100 MS
READ
no
INPUT EXECUTED
enter
VARIABLE
ENTER ARROWS DOWN ARROWS UP
NO
EXECUTED?
SET INPUT DECREASE INCREASE
EXECUTED VARIABLE VARIABLE
VARIABLE
YES
READ VARIABLE
DISPLAY
YES
NO
VARIABLE
RESET?
TIMER_ROUTINE
Obsługa przerwań
PREPARING TIMER
Przełącznik procesów
RELOAD TIMER AND RESTART
SWITCH
SAVE REGISTERS USED
BY THE CURRENT PROCESS
SAVE THE CURRENT STACK
POINTER IN THE ACTIVE BANK
CHANGE THE BANK
ROUND ROBIN CYCLE ( )
STACK POINTER FROM
THE CURRENT BANK
( new process)
RESTORE REGISTERS OF THE NEXT
PROCESS FROM ITS STACK
0030 STACK0
............
0040 STACK1
............
Budowa systemu
000B Timer proc.
............
0100 Process0
0103 Process2
0106 Process2
0109 Process3
Budowa systemu
Inicjalizacja stosów
Budowa systemu
Inicjalizacja timera i przerwań
Budowa systemu. Obsługa przerwania
TIMER_ROUTINE
Obsługa przerwań
PREPARING TIMER
Przełącznik procesów
RELOAD TIMER AND RESTART
SWITCH
SAVE REGISTERS USED
BY THE CURRENT PROCESS
SAVE THE CURRENT STACK
POINTER IN THE ACTIVE BANK
CHANGE THE BANK
ROUND ROBIN CYCLE ( )
STACK POINTER FROM
THE CURRENT BANK
( new process)
RESTORE REGISTERS OF THE NEXT
PROCESS FROM ITS STACK
Obsługa przerwań
Przełącznik procesów
Komunikacja międzyprocesowa (1)
Sygnał:
zdarzenie generowane przez system jako reakcja na zaistniałe
okoliczności. Po otrzymaniu sygnału proces może podjąć pewne
czynności. Może być użyty do komunikacji pomiędzy uruchomiony-
mi procesami
Cechy sygnałów:
 asynchroniczność - wysyłający nie czeka, aż proces odbierze
sygnał
 jedynym przekazem jest numer, poza tym sygnał nie niesie
żadnej innej informacji
 nadawca sygnału jest nieznany (niewyspecyfikowany)
 ilość przesłanych sygnałów danego typu jest nieznana, proces
wie tylko, czy sygnał się pojawił
 proces nie musi odbierać sygnału czy reagować na niego (nie
dotyczy części sygnałów)
 sygnały są zestandaryzowane: mają przyporządkowane numery,
(i ustalone nazewnictwo).
Sygnały
Sygnały są używane w systemie zazwyczaj do obsługi nietypowych
sytuacji a nie do przesyłania danych między procesami.
Większość typów sygnałów jest przeznaczona do użycia przez jądro.
Np. w Linux ie tylko kilka z listy 19 służy do komunikacji
międzyprocesowej. Istnieje dodatkowa lista sygnałów poza standardem,
zależna od implementacji. Na ogół używa ich jądro do wskazywania
warunków błędu.
yródła sygnałów:
lð niektóre bÅ‚Ä™dy (typu: naruszenie segmentów pamiÄ™ci).
lð powÅ‚oka i programy obsÅ‚ugi terminala w celu wywoÅ‚ania przerwania.
lð jawnie wysyÅ‚ane z jednego procesu do innego w celu przekazania
informacji albo modyfikacji procesu.
Operacje związane z sygnałami:
lð generowanie,
lð przechwytywanie,
lð reagowanie,
lð ignorowanie.
Sygnały cd (przykłady)
Strumienie (1)
Koncepcja strumienia:
Jeżeli dwa lub więcej procesów korzysta w tym samym czasie ze
wspólnych danych to najlepiej wykorzystać jednokierunkowy kanał
komunikacyjny łączący ze sobą powiązane procesy (=strumień).
Funkcje strumienia:
Przenoszenie danych  zapis (write) przez jeden proces; odczyt (read)
przez drugi proces
Cechy:
lð informacja w strumieniu odczytywana jest w kolejnoÅ›ci takiej jak
zapis.
lð proces nie musi czytać ze strumienia takimi samymi porcjami jakimi
informacja jest zapisywana.
lð jeżeli ilość danych w strumieniu jest z jakichÅ› wzglÄ™dów za duża,
proces produkujÄ…cy dane zostaje zawieszony, do czasu, gdy poziom
danych w strumieniu spadnie do dopuszczalnego poziomu.
Komunikacja międzyprocesowa 
strumienie (2)
W wielu systemach momencie utworzenia każdego procesu
zawsze otwierane trzy pliki i nadawane im deskryptory (0,1,2):
stdin (standard input, 0) - wejście standardowe
stdout (standard output, 1) - wyjście standardowe
stderr (standard error, 2) - wyjście standardowe błędów (diagnostyczne)
Domyślnie strumień wejściowy to klawiatura a wyjściowy i
błędów  ekran, ale niekoniecznie!
Wejścia i wyjścia różnych procesów (wątków) mogą być
ze sobą powiązane za pomocą nienazwanych procesów
komunikacji  strumieni.
Zastosowanie strumieni (3)
komunikacja pomiędzy procesami
posiadającymi wspólnego przodka:
powiązanie standardowych wejść i
wyjść różnych procesów.
sprzężenie zwrotne:
przywiązanie wejścia i wyjścia
strumienia do jednego procesu, co
stwarza mechanizm pętli.
UWAGA: strumienie są nietrwałe.
Muszą być tworzone gdy są potrzebne i
usuwane z chwilą zakończenia
działania korzystających z nich
procesów.
Pliki FIFO (strumienie nazwane)
Wad zwykłych strumieni nie mają strumienie nazwane (pliki
FIFO).
Cechy plików FIFO:
Na poziomie zapisu i odczytu pliki FIFO działają jak
strumienie zapewniajÄ…c mechanizm komunikacji
międzyprocesowej w systemie FIFO.
W przeciwieństwie jednak do strumieni pliki FIFO są
elementem trwałym i posiadają nazwy plików.
Plik FIFO ma ma też właściciela, wielkość i powiązane
prawa dostępu.
Może być otwierany, zamykany i usuwany jak każdy plik.


Wyszukiwarka

Podobne podstrony:
PPS 13 W7
PPS 13 W1
PPS 13 W2
PPS 13 W4
PPS 11 W8
UAS 13 zao
er4p2 5 13
BD W8
Budownictwo Ogolne II zaoczne wyklad 13 ppoz
ch04 (13)
model ekonometryczny zatrudnienie (13 stron)

więcej podobnych podstron