1. Mimo że użytkownik loguje się do pojedynczego procesu (powłoki, która jest interfejsem wiersza poleceń), użytkownicy kończą wiele procesów w wyniku akcji takich jak:
-> Uruchamianie nieinteraktywnego zadania w tle.
-> Przełączanie między interaktywnymi zadaniami poprzez kontrolę zadań.
-> Rozpoczęcie wielu procesów, które współpracują ze sobą przez rury.
-> Działający system okienkowy, taki jak system okien X, który umożliwia otwarcie wielu okien terminala.
2. Aby obsłużyć wszystkie te procesy, jądro musi utworzyć grupy procesów składające się z tych procesów.
3. Aby dalej zarządzać tymi grupami procesów według użytkownika, grupy te są dzielone według użytkownika na sesje (uwaga: użytkownik nie jest użytkownikiem systemu Linux, lecz powłoką lub terminalem oznacza użytkownika. Dwa terminale na tym samym komputerze zalogowane przez tego samego użytkownika systemu Linux oznacza 2 różnych użytkowników, a tym samym 2 różne sesje użytkowników. Terminal może sterować terminalem tylko dla jednej sesji).
Proces, w którym działa powłoka dla tego „użytkownika” lub sesji, jest znany jako lider sesji.
4. Zwróć także uwagę na zamknięcie terminala, naciskając przycisk „x”, aby nie wyjść z tego terminala. Ten terminal działa w tle. Jeśli chcesz przełączyć sesję z terminala, musisz się wylogować stamtąd, naciskając CTRL + D lub wyjść.
5. Po wylogowaniu z terminala jądro wysyła sygnał SIGHUP (podobny do zabicia -1) do procesu, który jest liderem sesji. Teraz każdy inny proces uruchamiany w terminalu jest potomkiem tego lidera sesji. Te procesy potomne utworzyły grupy procesów, które są kontrolowane przez ten proces lidera sesji (proces nadrzędny).
6. Proces lidera sesji wysyła SIGHUP do każdego procesu potomnego, niektóre z nich kończą się, podczas gdy inne mogą zdecydować się nie kończyć (te zawieszone lub działające w tle). Ci, którzy zdecydują się nie kończyć, zostają osieroceni w trakcie sesji i natychmiast adoptowani przez proces init (rodzic wszystkich procesów w maszynie linux).
Aby uzyskać więcej informacji, skorzystaj z linku Model procesu rozwoju systemu Linux