Procesy

Proces to program, aplikacja lub komenda uruchomiona w systemie (wczytana do pamięci operacyjnej). To jednostką służąca do dostarczania zasobów systemowych. Proces tworzony jest w pamięci operacyjnej we własnej przestrzeni adresowej gdy program, aplikacja lub komenda jest zainicjalizowana. Procesy zorganizowane są hierarchicznie, każdy proces ma proces nadrzędny (wywołujący, ang. calling process) i może mieć wiele procesów potomnych (ang. child process), którym przekazuje wiele atrybutów w chwili utworzenia. Każdy proces posiada numer identyfikacyjny – identyfikator procesu – PID (process identifier), który jest używany przez jądro do zarządzania i kontroli jego cyklem życiowym. Gdy proces kończy swój cykl życiowy jest terminowany (zabijany), co jest raportowane do procesu nadrzędnego i wszystkie zasoby przyznane temu procesowi są uwalniane a PID jest usuwany.

Wiele procesów jest uruchamianych w czasie ładowania systemu. Takie procesy rezydują  pamięci operacyjnej i oczekują na życzenie skorzystania z ich usług. Takie systemowe procesy uruchomione w tle nazywamy demonami (ang. daemons).

 

Wyświetlanie i monitorowanie procesów.

System operacyjny może mieć setki tysięcy uruchomionych w jednym czasie procesów. Procesy mogą być wyświetlane i monitorowane przez wiele narzędzi, m.in. przez ps, top i htop.

Komenda ps uruchomiona bez żadnych opcji wyświetla tylko listę procesów związanych z terminalem, na którym ta komenda jest wywoływana:

Przykłady
Wszystkie procesy w systemie przy użyciu standardowej składni:

Wszystkie procesy w systemie przy użyciu składni BSD:

Wyświetlenie drzewa procesów:

Informacje o wątkach:

Informacje związane z bezpieczeństwem:

Aby zobaczyć wszystkie procesy uruchomione przez roota:

Wyświetlanie wszystkich procesów w zdefiniowanym przez siebie formacie:

Wyświetlenie tylko ID procesu syslogd:

Wyświetlenie nazwy procesu o PID 42:

Wyjście polecenia ps standardowo rozbite jest na osiem kolumn, które pokazują dokładne informacje o każdym procesie uruchomionym w systemie.

Kolumna Opis
USER ID użytkownika lub nazwa właściciela procesu.
PID ID procesu.
PPID ID procesu nadrzędnego.
%CPU Zużycie procesora przez proces.
%MEM Zużycie pamięci przez proces.
TTY Terminal, na którym został uruchomiony proces. “Console” oznacza konsolę systemową, “?” oznacza proces uruchomiony w tle.
 START  Data uruchomienia  procesu.
TIME Łączny czas działania procesu, włączając czas w przestrzeni użytkownika i w przestrzeni jądra.
COMMAND Nazwa komendy uruchamiającej proces.

Procesy uruchomione w tle nie mają żadnego powiązania z terminalem na liście procesów wyświetlanych przez ps, terminal (TTY) symbolizuje tutaj znak “?”. Im PID i PPID ma mniejszy numer ID tym wcześniej dany proces został uruchomiony. Proces z PID 0 uruchomiony został przy starcie systemu, po nim uruchomiony został proces z PID 1, itd.  Informacje o każdym uruchomionym procesie składowane są w katalogu /proc, skąd dane do wyświetlenia pobierają programy takie jak ps.

Innym programem wyświetlającym dane  o procesach jest top. Lepszą wersją tego programu jest htop, który uwzględnia rdzenie procesora wyświetlając procesy systemowe.

 

Stany, w których znajdują się procesy.

W czasie swojego cyklu życiowego proces wielokrotnie zmienia swój stan. O tym jak często proces zmienia swój stan decydują takie czynniki jak obciążenie procesora, dostępność pamięci, priorytet procesu, odpowiedź innych aplikacji.

Running (uruchomiony) – proces jest wykonywany przez CPU.
Sleeping (uśpiony) – proces oczekuje na dane wejściowe od użytkownika lub innego procesu.
Waiting (oczekiwanie) – proces otrzymał dane wejściowe, na które czekał, jest gotowy do uruchomienia jak tylko nadejdzie jego kolej.
Stopped (zatrzymany) – proces jest aktualnie zatrzymany i nie uruchomi się nawet jeżeli nadejdzie jego kolej, chyba że zostanie wysłany do niego sygnał, który zmieni jego zachowanie.
Zombi (defunct) – proces jest martwy, nie zużywa żadnych zasobów, jest utrzymywany w takim stanie do momentu, w którym proces nadrzędny go nie ubije.

Leave a Reply

Your email address will not be published. Required fields are marked *