Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałRajmund Solak Został zmieniony 11 lat temu
1
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.
2
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.
3
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 & ).
4
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
5
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).
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.