Jądro jest tylko jedno (cz. 1)

Czasy reżimu komunistycznego minęły. Wydawałoby się, że nikt już nie musi stać w kolejkach, dzielić wszystkiego między towarzyszy. Nikomu nie odbiera się jego własności aby przekazać ją innej, podobno bardziej potrzebującej osobie. Czyżby?!

Czasy reżimu komunistycznego minęły. Wydawałoby się, że nikt już nie musi stać w kolejkach, dzielić wszystkiego między towarzyszy. Nikomu nie odbiera się jego własności aby przekazać ją innej, podobno bardziej potrzebującej osobie. Czyżby?!

Wystarczy podejrzeć, co dzieje się we "wnętrzu" dowolnego systemu operacyjnego, a przekonamy się, że to, czego doświadczyliśmy podczas rządów Partii, to nic w porównaniu z życiem przeciętnego procesu komputerowego. Aby przedstawić państwu to, czego doświadcza z minuty na minutę każdy proces, poprosiliśmy grupę anonimowych reprezentantów różnych systemów operacyjnych o opisanie nam swojego "dnia roboczego". Oto czego się dowiedzieliśmy.

Pobudka, wstać, koniom wody dać

Proces budzi się (można to też rozumieć - rodzi się) natychmiast na żądanie jednego z "nadzorców", do których zaliczają się stworzenia nazywane użytkownikami (pochodzące ze świata zewnętrznego, jakby z innego, większego systemu) oraz Jądro Systemu. Jądro jest instancją najwyższą, ono bezpośrednio decyduje prawie o wszystkim, użytkownicy mogą jedynie w niewielkim stopniu wpływać na jego działanie (choć legendy mówią, że Jądro zostało stworzone przez użytkowników, a do tego jest także procesem, lecz takim, który nie musi się do nikogo dostosowywać i sam o sobie decyduje). Główny doradca Jądra to użytkownik zwany Administratorem, jego działania wspomaga sztab Operatorów (także zaliczanych do użytkowników). To oni właśnie pomagają w organizacji Systemu, wspierają i bezinteresownie ratują Jądro w trudnych chwilach.

Gdy tylko proces zostanie powołany do pracy (fachowo nazywa się to "dostarczeniem procesu"), dostaje on ścisły schemat działania, czyli program. Przydziela mu się następnie numerek, który identyfikuje go do końca dnia roboczego.

Obowiązkiem procesu jest trzymać się programu, nie zważając na jakiekolwiek przeszkody. Większość programów tworzą użytkownicy. Oni także (lub samo Jądro) mogą zlecać procesom ich wykonanie oraz korzystać z rezultatów ich wykonania.

Dzień roboczy procesu zaczyna się w stanie zwanym "dostarczonym" (proces został obudzony i może podjąć pracę). Zaraz potem proces zostaje "wprowadzony", czyli przygotowany do wykonania programu (tak jakby rano wychodził z domu i docierał na miejsce pracy). Bezpośrednim zwierzchnikiem procesu w tej fazie jest Moduł Szeregowania Zadań. Jest to (wraz z innymi modułami, o których mowa będzie później) członek "sztabu wykonawczego", prawa ręka Jądra; jego zadaniem jest decydowanie o priorytecie w dopuszczaniu procesów do wykonania swoich prac. Moduł ten (nazwijmy go w skrócie MSZ) decyduje o tym, który proces ma wykonać swoje zadanie jako pierwszy, czy ma je wykonać do końca, czy też przed jego zakończeniem ustąpić miejsca innym procesom, itp. (on też właśnie budzi proces, powołuje go do pracy, przydziela mu numer i dostarcza na miejsce). Praca MSZ jest stosunkowo prosta w systemach, gdzie procesy wykonują swoje zadania zawsze do końca. Wtedy MSZ decyduje jedynie o tym, który z nich będzie obsłużony jako pierwszy. Gorzej jest w systemach, gdzie procesy mogą zostać wywłaszczone, tzn. ich praca może zostać nagle przerwana w celu dopuszczenia do zasobów (zasób - wszelkie materiały potrzebne do pracy) innego procesu. W obu przypadkach MSZ w różnych systemach posługują się odmiennymi strategiami (metodami kierowania procesami).

Hej ho, hej ho, do pracy by się szło

W Systemie praca jest przywilejem. Aby wykonać zlecone zadanie procesy ustawiają się w kolejkach i cierpliwie czekają na zwolnienie stanowiska pracy. Najprostsze systemy faworyzują metodę zwaną FIFO. Przy stosowaniu tej strategii, procesy obsługiwane są ściśle według kolejki - obsłużony jest ten, który czeka najdłużej, po wykonaniu całego zadania odchodzi, a jego miejsce zajmuje następny w kolejności. W systemach wieloprocesowych (takich, gdzie procesy nie muszą wykonywać swoich zadań od razu do końca i gdzie Moduł może przerwać im pracę, faworyzując chwilowo inny) metoda FIFO wygląda nieco inaczej. Procesy rozpoczynają pracę co prawda w kolejności uzależnionej od okresu oczekiwania, jednak po pewnym ściśle określonym przez MSZ czasie zostają one odsunięte od stanowiska, aby ich miejsce mógł zająć następny w kolejce. One zaś przechodzą z powrotem na jej koniec.

Oczywistą prawdą jest, że proces, który ma mniej pracy, krócej blokuje stanowisko, dlatego też niektóre MSZ stosują strategię zwaną Shortest Job First (SJF). Korzystając z tej metody, do pracy dopuszczane są najpierw te procesy, które deklarują najkrótszy przewidywany czas wykonania zadania.

Za czym pan stoi?

Kiedy już proces otrzyma prawo do pracy, przechodzi w ręce następnego modułu, zwanego Modułem Szeregowania Procesów (nazwijmy go w skrócie MSP). MSP zarządza centralną częścią miejsca pracy, zwaną procesorem. Jeśli wyobrazimy sobie otoczenie, w którym pracują procesy jako budynek z przeróżnymi pokojami, to MSZ wpuszcza procesy do samego budynku, zaś MSP kieruje je do głównego pokoju (gabinetu kierowniczego), gdzie wykonują one wszelkie obliczenia. Podobnie jak MSZ, MSP stara się być bezwzględnie sprawiedliwy. Ponieważ w procesorze może znajdować się w danej chwili tylko jeden proces, moduł musi sprawiedliwie decydować o tym który z czekających, kiedy i na jak długo zostanie tam wpuszczony. W Systemie istnieje kilka takich miejsc, gdzie może pracować nie więcej niż jeden proces na raz. Nazywają się one sekcjami krytycznymi.

Każdy proces będący w rękach MSP może znajdować się w jednym z trzech stanów (w zależności od aktualnie wykonywanej czynności dostaje on na pewien czas odpowiednie prawa i przywileje) -"wykonywany", "zablokowany" i "gotowy" (teoretycznie, przed znalezieniem się w jednym z tych trzech stanów proces przechodzi jeszcze przez stan "dostarczenia" i "wprowadzenia", zaś po zrealizowaniu programu przechodzi w stan "zakończenia"). Kiedy proces jest "wykonywany", oznacza to, że w danej chwili zajmuje procesor. W każdym momencie MSP może zdecydować jednak, że przyszła kolej na następny proces i zażądać aby aktualny pracownik zwolnił sekcję krytyczną. Wywłaszczony proces przechodzi wtedy do stanu "zablokowanego" (bądź też stan ten omija stając się od razu "gotowym"). W stanie "zablokowania", wbrew skojarzeniom wywołanym nazwą tego stanu, proces może wykonywać inny fragment zadania (np. gromadzenie lub przekazywanie pewnych informacji, ale o tym później), a następnie wrócić i ustawić się z powrotem w kolejce do procesora. Stojąc w kolejce, proces powraca do stanu "gotowości".

Podobnie jak MSZ, każdy MSP (w zależności od systemu w którym pracuje) ma inną strategię obsługi procesów. Najprostsza metoda to Round-Robin ("w koło Macieju"). Wedle tej strategii, procesy obsługiwane są dokładnie według kolejki. Świeżo nadchodzące procesy "gotowe" są ustawiane zawsze na jej końcu. Inna strategia to Inverse of Remainder of Quantum (IRQ). Stosujące tę metodę MSP pozwalają "gotowym" procesom, które będąc ostatnio w procesorze spędziły tam bardzo mało czasu, przejść na początek kolejki (przewidując, że i tym razem nie zajmą procesora na długo). Metod szeregowania procesów jest wiele (np. Multiple-Level Variant of Round-Robin, Limited Round-Robin - patrz Glossarium), każda z nich ma swoje wady i zalety, lecz zazwyczaj wszystkie procesy są traktowane jako równorzędne. Tylko w sytuacjach wyjątkowych procesy ważniejsze (te, którym Jądro bądź Użytkownik nadali wyższy priorytet) są obsługiwane poza kolejnością.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200