• Nie Znaleziono Wyników

Temat: Linux - zarządzanie procesami.

N/A
N/A
Protected

Academic year: 2021

Share "Temat: Linux - zarządzanie procesami."

Copied!
4
0
0

Pełen tekst

(1)

Temat: Linux - zarządzanie procesami.

Na proces w Linuxie składa się szereg zasobów, takich jak zaalokowana pamięć, przydzielony czas procesora, czy otwarte deskryptory plików, które mogą reprezentować zarówno pliki na dysku jak i urządzenia. Przydzielaniem tych zasobów zajmuje się jądro systemu, które dba również o to, żeby dostęp do nich miały tylko uprawnione procesy. Każdy proces posiada też unikalny numer PID, który służy do jego identyfikacji.

Proces może posiadać oddzielny zestaw zasobów, ale może też współdzielić wybraną ich część z innymi procesami. Na przykład dwa procesy mogą operować w tej samej przestrzeni

adresowej. Jeżeli jeden z nich zaalokuje nową pamięć lub wmapuje plik w swoją przestrzeń adresową, drugi proces automatycznie zyskuje do niej dostęp.

Procesy w Linuxie powstają poprzez rozwidlenie (zwane też klonowaniem), polegające na stworzeniu wiernej kopii klonowanego procesu. Nazwy te pochodzą od angielskich nazw wywołań systemowych fork() i clone(), służących właśnie do rozwidlania procesu. W programistycznym żargonie popularne jest też spolszczone słowo forkowanie.

W efekcie forkowania powstają dwa procesy – proces rodzic, który zainicjował całą operację, oraz proces dziecko, utworzony w jej wyniku. W Linuxie każdy proces ma swojego rodzica – wyjątkiem jest proces o numerze PID 1, który jest tworzony przez jądro podczas uruchamiania systemu. Wszystkie pozostałe procesy są jego potomkami.

Linux jest systemem wieloprocesowym, co oznacza, że ma on możliwość wykonywania kilku procesów współbieżnie na tym samym procesorze. W takim systemie potrzebny jest arbiter, który będzie przydzielał procesom czas procesora i zasoby, tak aby wzajemnie ze sobą nie kolidowały. W Linuxie przydzielaniem procesom czasu procesora zajmuje się planista (ang.

scheduler) działający w przestrzeni jądra. Zgodnie z określonym algorytmem szeregowania zadań przełącza on co chwilę wykonujący się aktualnie proces, symulując w ten sposób współbieżność.

Stany procesu:

Procesy w Linuxie mogą przyjmować szereg różnych stanów – w niektóre z nich mogą wejść samodzielnie, inne mogą być na nich wymuszone, a jeszcze inne dostępne są tylko dla

procesów działających w przestrzeni jądra.

Stany R i S

Dwa najbardziej podstawowe stany, to stan R (runnable) oznaczający gotowość do

wykonania oraz stan S (sleep interruptible), mówiący o tym, że proces jest aktualnie w stanie uśpienia i oczekuje na wystąpienie jakiegoś zdarzenia

Stany D i I

Do stanu S bardzo podobny jest stan D (sleep uninterruptible), który również oznacza

oczekiwanie na wystąpienie zdarzenia, jednak w przeciwieństwie do stanu S oczekiwanie to nie może być przerwane przez wystąpienie sygnału.

Bliźniaczym stanem dla stanu D jest stan I (idle), który różni się tylko tym, że proces w takim stanie nie jest brany pod uwagę podczas liczenia średniego obciążenia procesora.

Stan T i Z

Bardzo interesującym stanem jest T (stopped), który oznacza zatrzymanie procesu. Jest on podobny do stanu S, z tym wyjątkiem, że wejście w stan T następuje w wyniku otrzymania sygnału SIGSTOP lub SIGTSTP. Ten drugi może być wygenerowany przez użytkownika, na

(2)

przykład z użyciem kombinacji Ctrl+Z w wierszu poleceń

Ostatnim stanem procesu, który możemy spotkać pod Linuxem jest stan Z (zombie). Oznacza on martwy proces, którego status nie został jeszcze pobrany przez jego rodzica. W taki stan proces może wejść poprzez użycie wywołania systemowego exit() lub w wyniku otrzymania sygnału wymuszającego jego zakończenie.

Monitorowanie stanu procesów

Większość dystrybucji Linuxa wyposażona jest w co najmniej kilka narzędzi pozwalających na monitorowanie stanu procesów.

Do najbardziej podstawowych należy komenda ps. Pozwala ona na wyświetlenie listy aktualnie działających procesów oraz wielu ciekawych informacji na ich temat. Wywołanie tej komendy bez argumentów skutkuje wypisaniem listy procesów powiązanych z daną sesją.

Aby wyświetlić pełne dane niezależnie od długości, polecenie przyjmie postać: ps auxww

Poniżej zestawienie nagłówków tabeli oznaczające parametry procesu:

USER - właściciel procesu,

PID – Process ID - identyfikator danego procesu, używany do jego identyfikacji co ważne w tym samym czasie PID nie może być przydzielony dwóm różnym procesom,

%CPU – procentowe użycie procesora

%MEM –procentowe użycie pamięci

(3)

VSZ – przydzielona pamięć wirtualna w kB,

RSS – przydzielona pamięć fizyczna w kB,

TTY - identyfikator terminala procesu. Zapis ? oznacza brak skojarzenia z terminalem.

STAT – status procesu. Oznaczenia statusu procesu:

R – proces jest aktualnie wykonywany (running),

S – proces uśpiony, oczekiwanie na jego uruchomienie (sleep),

T – proces zatrzymany (stopped, np. CTRL-Z)

Z – zombie process - proces niewłaściwie zamknięty przez proces nadrzędny (proces rodzica bądź proces macieżysty)

START – czas uruchomienia procesu,

TIME – użycie procesora wyrażona w czasie,

COMMAND – nazwa komendy/procesu oraz jego parametry,

NI – wartość priorytetu nice (o tym później).

Aby zaś uzyskane wyniki procesów zawęzić do konkretnego użytkownika (w przykładzie użytkownik luk) skorzystaj z polecenia: ps u -U <nazwa_użytkownika>

Drugim bardzo użytecznym narzędziem jest komenda top. Wyświetla ona informacje o aktualnym obciążeniu systemu oraz listę procesów, które zużywają najwięcej zasobów.

Innym ważnym narzędziem jest program strace. Pozwala on na wyświetlenie w czasie rzeczywistym kompletnej listy wywołań systemowych wykonanych przez dany proces.

Ponadto posiada on również opcję śledzenia wszystkich procesów potomnych, filtrowania śledzonych wywołań systemowych oraz pomiaru czasu spędzonego w każdym wywołaniu, a także wiele innych użytecznych opcji.

(4)

Narzędziem bardzo podobnym do aplikacji top jest program htop. Program również w czasie rzeczywistym pokazuje nam stan uruchomionych procesów.

Innymi programami, którymi możemy posłużyć się celem obserwacji uruchomionych procesów są programy ksysguard, który jest dedykowany dla środowiska KDE oraz gtop przeznaczony dla środowiska GNOM.

Zadanie:

1. Proszę zainstalować program htop i za jego pomocą wyświetlić listę procesów zalogowanego użytkownika.

2. Za pomocą polecenia ps wyświetlić wszystkie procesy posortowane według

użycia procesora, listę procesów przekierować i zapisać w pliku procesysort.

Cytaty

Powiązane dokumenty

Żeby taki świat powstał, każdy musi mieć swój dom i ogród, w którym jest gospoda- rzem, każdy musi żyć według swojego wyboru, ale nie może się izolować — to

3-5-punktów -wszystkie elementy treści podjęte ale ilośc błędów uniemożliwia zrozumienie informacji przez czytelnika. 0-2-punkty- informacja o spotkaniu zawarta, ale

Oczywiście jest, jak głosi (a); dodam — co Profesor Grzegorczyk pomija (czy można niczego nie pominąć?) — iż jest tak przy założeniu, że wolno uznać

nie duszy — zazwyczaj przyjmuje się bowiem, że dusza jest tym składnikiem człowieka, który po śmierci ciała nie ginie, lecz przebywa w jakiejś rzeczywis­.. tości

W odróżnieniu od funkcji wait() która odblokuje proces bieżący przy zakończeniu dowolnego procesu potomnego funkcja waitpid() odblokuje się gdy zakończy się

W uzasadnieniu postanowienia sąd podał, że co prawda materiał dowodowy wskazuje na duże prawdopodobieństwo, że podejrzany dopuścił się popełnienia zarzucanego

SPŁYW - szybkie przemieszczanie się masy gruntowej bez wytworzenia wyraźnej powierzchni poślizgu przy współudziale wody np.. spływy

Udowodnić, że średnia arytmetyczna tych liczb jest równa n+1 r