Next: Algorytm do_exit()
Up: Opis działania exit()
Previous: Opis działania exit()
W funkcji do_exit() i exit_notify() korzysta się z następujących pól struktury task_struct:
p_cptr - Wskazuje na ostatnio utworzone dziecko.
p_osptr - Wskazuje na starszego brata procesu.
p_pptr - Wskazuje na ojca procesu.
p_opptr - Wskazuje na oryginalnego rodzica, lub an init.
p_ysptr - Wskazuje na młodszego brata.
state - Opisuje w jakim stanie znajduje się process.
exit_code - Mówi o kodzie powrotu procesu.
exit_signal - przechowuje numer sygnału, który zostanie wysłany rodzicowi.
Ponadto current odnosi się do makro-definicji, która zwraca wskaźnik na aktualny proces.
Funkcja do_exit() wykonuje następujące czynności:
- Sprawdza czy zakończenie procesu jest dozwolone.
- Ustawia flagę procesu na PF_EXITING.
- Proces usuwany jest z kolejki dynamicznych zegarów.
- Jeśli trzeba to zapisuje informacje o usuwanym procesie na dysk.
- Po kolei zwalniane są zasoby procesu (pamięć, semafory, pliki,
handlery przerwań).
- Jeśli proces korzystał z domeny wykonania, lub interpretera
formatu to zmniejszane są liczniki odwołań do odpowiednich modułów.
- Wywoływana jest funkcja exit_notify, która uaktualnia
strukturę task_struct procesu. Informuje ojca o śmierci
dziecka. Jeśli dzieci procesu mają zostać osierocone to czyni ich
ojcem process init . Ustawia flagę stanu procesu na TASK_ZOMBIE.
Subsections
Next: Algorytm do_exit()
Up: Opis działania exit()
Previous: Opis działania exit()
Michal Rutkowski
2001-12-19