Programowanie Wpółbieżne, wyklad6

background image

9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU
INTERPRETATORA

KOMEND SYSTEMU UNIX

Podstawowe parametry procesu unixowego:

- identyfikator procesu PID

(Process ID)

- identyfikator procesu rodzicielskiego PPID

(Parent Process ID)

- rzeczywisty identyfikator użytkownika UID

(User ID)

- efektywny identyfikator użytkownika EUID

(Effective User ID)

- rzeczywisty identyfikator grupy użytkowników GID

(Group ID)

- efektywny identyfikator grupy użytkowników EGID

(Effective Group ID)

- identyfikator grupy procesów PGRP

(Process Group)

- wskaźnik do struktury terminala. Terminal ten nazywamy terminalem
sterującym
dla danego

procesu.

Proces może nie mieć terminala sterującego - w takim przypadku wskaźnik do
struktury terminala

ma wartość NULL.

background image

Struktura terminala zawiera między innymi bieżący identyfikator grupy
terminala

(Current

Terminal Process Group)

- nie ma ustalonego skrótu, na potrzeby wykładu

przyjmijmy CTPGRP.

Proces interpretatora komend, który zostaje uruchomiony w wyniku zalogowania się
do systemu,

nazywany jest shellem zgłoszonym. Na początku pracy jest procesem
sterującym
terminala,

z którego nastąpiło zalogowanie, czyli przywódcą grupy terminala (zachodzi dla
niego

PID = PGRP = CTPGRP).

Proces nazywamy pierwszoplanowym

(foreground process)

, jeżeli jego PGRP jest

równy CTPGRP

wskazywanego przez niego terminala. W przeciwnym przypadku proces nazywamy
drugoplanowym,

lub wykonującym się w tle

(background process)

. Procesy pierwszoplanowe mogą

odczytywać znaki

z terminala i zapisywać znaki do terminala (to jest pliku specjalnego
odpowiadającego terminalowi).

Procesy drugoplanowe nie mogą odczytywać znaków z terminala (są zawieszane
przy próbie czytania),

natomiast zazwyczaj mogą zapisywać znaki do terminala (jest to zależne od systemu
i aktualnych

ustawień w strukturze terminala).

Uwaga. Zazwyczaj w każdej chwili istnieje dokładnie jeden proces pierwszoplanowy
terminala.

background image

Pojedynczą komendę lub pojedynczy potok komend uruchomiony z linii poleceń
shella nazywamy

pracą

(job)

. Shell ma własność sterowania pracami

(job control)

, jeżeli

posiada możliwość zmiany

CTPGRP terminala, z którego został uruchomiony.

Polecenia:

komenda - uruchamia proces pierwszoplanowy;

komenda & - uruchamia proces drugoplanowy

(komenda &) - uruchamia proces drugoplanowy korzystając z
podshella

Ctrl-Z - zawiesza proces pierwszoplanowy

Ctrl-Y - zawiesza proces pierwszoplanowy w chwili
rozpoczęcia czytania

bg praca (lub praca &) - uruchamia zawieszony proces w tle

fg praca (lub praca ) - uruchamia zawieszony proces na pierwszym
planie

kill -9 praca - powoduje zakończenie procesu (działającego lub
zawieszonego)

Uwaga. Można uruchomić kilka procesów jednocześnie z jednej linii poleceń
(pisząc na przykład

komenda1 & komenda2 & ).

background image

Proste mechanizmy koordynacji procesów w shellu:

1) polecenia exit i wait

exit liczba - kończy działanie procesu i przesyła jednobajtową liczbę
(kod wyjścia)

do jego procesu rodzicielskiego

wait praca - powoduje zawieszenie procesu w oczekiwaniu na
zakończenie jego procesu

potomnego i odbiera jego kod wyjścia

2) polecenia kill i trap

kill sygnał praca - powoduje wysłanie sygnału do procesu (z tej samej
grupy)

trap komenda sygnał - powoduje przechwycenie przysłanego sygnału (jeśli
to możliwe)

i wykonanie komendy

background image

3) łącza nienazwane (bezimienne)

komenda1 | komenda2 | ... | komendan - potok

(może być utworzony przy założeniu, że komendy korzystają ze standardowego
wejścia/wyjścia)

4) łącza nazwane (kolejki FIFO)

mkfifo nazwa (lub mknod nazwa p) - tworzy kolejkę FIFO

Zapis/odczyt oraz usunięcie odbywają się dla kolejki FIFO tak samo, jak dla
zwykłego pliku

(mogą to robić wszystkie procesy, które mają odpowiednie prawa dostępu do
kolejki). Musi

zachodzić synchronizacja operacji zapisu i odczytu.

Uwaga.

1) Łącza są realizowane jako bufory plików i mają ograniczoną pojemność. Mogą
być widziane jako

„pliki nietrwałe” - odczyt porcji informacji z łącza usuwa ją jednocześnie z
łącza.

2) Łącza nazwane są uwidocznione w systemie plików jako szczególny rodzaj
plików (o wielkośći 0).

Łącza nienazwane nie są uwidocznione (istnieją tylko w czasie wykonywania
potoku).


Document Outline


Wyszukiwarka

Podobne podstrony:
Programowanie Wpółbieżne, wyklad10
Programowanie Wpółbieżne, wyklad7
Programowanie Wpółbieżne, wyklad3
Programowanie Wpółbieżne, wyklad4
Programowanie Wpółbieżne, wyklad8
Programowanie Wpółbieżne, wyklad9
plikus pl Programowanie strukturalne, Wyklad z C
PROGRAMOWANIE APLIKACJI U.- WYKŁAD, PROG. APLIKACJI UŻYTKOWYCH- WYKŁAD 11
Języki programowania zaliczenie wykłady Języki programowania3
Języki programowania zaliczenie wykłady Wykład 5
Programowanie obiektowe, wyklad6-czesc1, Dziedziczenie wielobazowe
Zadania dodatkowe, studia wsiz, semestr 1 2, programowanie LAB wyklad, Programowanie, BFryc, 1IID, Z
program nauczania wykładnią koncepcji pedagogicznej Kwiatkowska Ratajczak, metodyka nauczania języka

więcej podobnych podstron