Następna Poprzednia Spis

4. Lista wszystkich procesów

4.1 Opis

Wspomnimy jeszcze o liście wszystkich procesów (ang. task_list). Wstawienie do tej listy następuje, gdy dany proces jest tworzony, a usuwanie - gdy proces już się zakończył i uregulował swoje sprawy z ojcem (przekazał mu swój status zakończenia albo został przez niego zignorowany).

4.2 Struktura

Ta lista jest zaimplementowana w standardowy sposób. Pola prev_task i next_task ze struktury task_struct wskazują odpowiednio na poprzedni i następny proces z listy. Nie jest tu używana struktura list.h. Prawdopodobnie dzieje się tak dlatego, że operacji na tej liście dokonuje się stosunkowo rzadko - każdy proces powinien być tylko raz wstawiany i raz usuwany.

Początek listy stanowi proces idle. Jest to logiczne, bo proces ten jest tworzony jako pierwszy i nigdy nie jest usuwany. Stanowi więc idealną atrapę.

4.3 Operacje na liście wszystkich procesów

Do modyfikacji listy task_list służą makra:


Następna Poprzednia Spis