Procesy w systemie operacyjnym, zarządzanie procesami proces
Transkrypt
Procesy w systemie operacyjnym, zarządzanie procesami proces
Procesy w systemie operacyjnym, zarządzanie procesami proces - program w trakcie wykonania, sekwencja czynności wykonywanych w określonej kolejności. Procesy dzielą się na: • systemowe, • użytkowe. Proces powstaje na podstawie programu. • Program - obiekt pasywny, • Proces - obiekt aktywny. Procesy wykonują się współbieżnie ( w środowisku wieloprocesorowym) lub quasi współbieżnie ( w środowisku jednoprocesorowym). Do procesu należą: • stan (rejestry, licznik rozkazów, flagi stanu), • sekcja kodu, • dane, • stos systemowy, • pamięć zarządzana dynamicznie. Wiele procesów może pochodzić od tego samego programu (np. niezależnie wykonywane wcielenia edytora). W środowisku jednoprocesorowym w danej chwili tylko jeden proces może być aktywny. Wątki Wątek to proces ograniczony, który współużytkuje z procesem rodzicem przestrzeń danych. Jeden proces może wygenerować wiele wątków. Dla wątku osobne pozostają: • stan, • stos. Wspólne są: • obszar danych, • sekcja kodu, • środowisko (otwarte pliki, sygnały itp.) Ze względu na współdzielenie zasobów należy stosować synchronizację. Wątki mogą być obsługiwane: • bez udziału systemu operacyjnego (na poziomie użytkownika), • przez system operacyjny – zarządzający wątkami podobnie jak procesami W pierwszym przypadku SO nic nie wie o wątkach procesu - oczekiwanie jednego wątku spowoduje wówczas oczekiwanie całego procesu. Działanie wątków jest zwykle efektywniejsze od działania procesów bo: • pozwala efektywniej wykorzystać zasoby (bez konieczności ich powielania), • upraszcza proces przełączania po stronie zarządcy systemu operacyjnego (uproszczone przełączanie kontekstu). Wady: • nie ma ochrony na poziomie wątków – wątki mogą wzajemnie psuć sobie dane • może dojść do niesprawiedliwego podziału czasu przy wątkach na poziomie użytkownika Przykłady zastosowania wątków: • niezależna obsługa interfejsu i części obliczeniowej programu, • obsługa dostępu do urządzeń (np. skanera) niezależna od interfejsu i części obliczeniowej, • powierzenie części obliczeń niezależnym wątkom – może przyspieszyć wykonanie programu w środowisku wieloprocesorowym, • niezależna obsługa równocześnie realizowanych żądań klienta przez serwer (np. serwer bazy danych, serwer WWW, serwer FTP ...)