background image

Wykład 8 

 

Sterowanie procesami 

Komunikacja między procesami 

background image

  

 

Koncepcja procesu 

Stany procesu 

Przełączanie pomiędzy procesami 

Przykład implementacji przełączania procesów 
 

komunikacja międzyprocesowa 

s

ygnały 

strumienie 
 

 

background image

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 

background image

Składowe systemu operacyjnego 

ładowalne moduły jądra 

jądro 

wspólne biblioteki systemu 

programy zarządza- 

nia systemem 

procesy użytko- 

we 

pomocnicze progra- 

my użytkowe 

kompilatory 

„przybory” systemowe 

(tryb użytkownika) 

Współdziałanie 

aplikacji z jądrem 

(tryb użytkownika) 

Pamięć wirtualna, 

procesy, sygnały 

(tryb jądra) 

background image

Składowe systemu cd 

background image

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 

 

 

background image

Składniki procesu 

Składowe procesu w systemie LINUX 

  

 

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. 

 

background image

Deskryptor procesu 

Każdy proces reprezentowany jest przez jego deskryptor

 

typ 

nazwa 

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 

background image

Procesy i zadania 

 

Procesy z zewnątrz widziane jako niezależne 

 

Od strony jądra – poszczególne zadania systemu 

 

background image

program 

użytkownika 

procedura 
biblioteczna 

obsługa 

wywołań 
systemowych 

procedury 

jądra 

Składowe systemu cd 

Tryb jądra 

background image

 
 
 

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ć. 

 

 

 

Stany procesu 

background image

Zmiany stanu procesu 

przełączenie w stan działania 

ustanowienie nowego 
procesu 

zakończenie procesu 

sygnał 
zatrzymania 

zdarzenie! -> 
proces do 
kolejki 

proces uśpiony;  

oczekuje zdarzenia 

przełączenie 
w stan 

gotowości 

GOTOWY 

WIDMO 

DZIAŁA 

ZATRZYMANY 

UŚPIONY 

sygnał 
wznowienia 
od innego 
procesu 

UTWORZENIE 

PROCESU 

background image

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 wskaźnik stosu 

 

rejestry robocze (ogólnego przeznaczenia) 

 

rejestry jednostki zmiennoprzecinkowej 

 

PSW 

 

rejestry zarządzania pamięcią

 

background image

Sterowanie procesami przez jądro 

background image

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

 

Źródła przełączenia w tryb jądra 

background image

PRZYKŁAD IMPLEMENTACJI 
PRZEŁĄCZANIA PROCESÓW 

background image

The diagram of the programme

              Initial- value                              

 
 
 
                                              

label 

 
                                                              

 LOOP 

 
 
 
 
                                                    Copy temperature in 

 

 

 

 

 

 

                 variable and display 

 
 
 
                                                            

            Wait 250ms 
 
 

 

 

                                              

 Label 

                     

Arrows up

                                                         

Enter 

          

KEYBOARD 

                
 

 
                                                                           

Arrows 

                                                                            down 

 

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 

Przykład: urządzenie sterujące 
ogrzewaniem (mikrokontroler) 

Funkcje: 

-odczyt ustawień 

-komunik. przez wyświetlacz 

-obliczenie sterowania 

-sterowanie 

background image

Procesy składowe aplikacji 

background image

Zasoby systemu wielozadaniowego 

background image

Zasoby procesów składowych aplikacji 

background image

             

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 

  

 

 

 

 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 

 

Budowa systemu 

background image

                                         

 

 

 

 

 

 

 

 

 

 

 

 

        

 

 

 

 

 

 

 

 

 

 

 

        

PROCESS 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     WAIT 100 MS 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 

 

 

 

             READ  

 

 

 

 

   INPUT EXECUTED 

 

 

 

 

 

VARIABLE   

 

 

 
 
 

 

 

 

 

 

 

 
 
 
 

 

 

 

 

 

 

NO

 

 

 

 

 

          

 

 

 

 

       

EXECUTED?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

YES   

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 

 

 

 

   READ VARIABLE                                                           

DISPLAY  

              

 

 
  

 

 

 

 

PROCESS 0 

 

 

 

 

  (Read keyboard & save  
       data in a variable)
 

 
 
 

 

 

 

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 

 

 

   

no  

    enter 

 
 
         ENTER  

 

         ARROWS DOWN 

 

       ARROWS UP 

 
 
 
 
 
 
 
        SET INPUT  

 

             DECREASE  

 

         INCREASE 

       EXECUTED 

 

             VARIABLE   

                     VARIABLE 

        VARIABLE 
  
 
 
 
 
 
 
 

       

 

 

 

        VARIABLE  
          RESET?
 

YES 

NO 

background image

                                            

TIMER_ROUTINE 

 
 
 
            

PREPARING TIMER  

 
 
 
                                     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 

background image

Timer proc. 

Process0 

Process2 

Process2 

Process3 

000B 

0100 

0103 

0106 

0109 

............ 

STACK0 

0030 

............ 

STACK1 

0040 

............ 

Budowa systemu 

background image

Budowa systemu 

Inicjalizacja stosów 

background image

Budowa systemu 

Inicjalizacja timera i przerwań 

background image

Budowa systemu. Obsługa przerwania 

background image

                                            

TIMER_ROUTINE 

 
 
 
            

PREPARING TIMER  

 
 
 
                                     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 

background image

Obsługa przerwań 

Przełącznik procesów 

background image

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

: m

ają przyporządkowane numery, 

(i ustalone nazewnictwo).  

background image

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. 
 

Źródła sygnałów: 

niektóre błędy (typu: naruszenie segmentów pamięci).  

powłoka i programy obsługi terminala w celu wywołania przerwania. 

jawnie wysyłane z jednego procesu do innego w celu przekazania 
informacji albo modyfikacji procesu.  

 

Operacje związane z sygnałami: 

generowanie, 

przechwytywanie,  

reagowanie,  

ignorowanie.  

Sygnały 

background image

Sygnały cd (przykłady) 

background image

        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: 

informacja w 

strumieniu 

odczytywana jest 

w kolejności

 

takiej jak 

zapis.  

p

roces nie musi czytać ze 

strumienia

 takimi samymi porcjami jakimi 

informacja jest zapisywana.  

j

eż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. 

 

 
 

background image

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. 

background image

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.  
 

background image

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

 zapewni

ają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.