přejít na obsah přejít na navigaci

Linux E X P R E S, Signály a procesy 1

Signály a procesy 1

Pokud nevíte, jak pracovat s procesy a zacházet se signály systému, je tento článek pro vás, pokud to víte, ale chcete si rozšířit znalosti o zmiňovaných kapitolách, můžete tak učinit v manuálových stránkách nebo pozdějších dílech seriálu, a do třetice, pokud nevíte o procesech a signálech naprosto nic, zde se dočtete hrubý základ, jak s nimi pracovat. Martin Podhola .


Co to jsou procesy

Záměrně začínám s procesy, protože je lepší pro začátek pochopit práci s nimi a poté se naučit více o signálech. Vždyť právě ony s procesy zacházejí. Procesy (samozřejmě i signály) vlastně tvoří základ unixového systému. Veškerá aktivita Unixu je pomocí nich řízena, ovládají veškerou činnost od startu systému až po jeho ukončení.

Pod pojmem proces si pro začátek můžete představit běžící program, ať už spuštěný startem operačního systému, nebo takový, který jste spustili svou činností přímo nebo nepřímo (přímo - záměrně spuštěný program, nepřímo - proces spušťený vámi spuštěným procesem). Váš běžící systém se tedy skládá z procesů. Poněkud odbornější definice říká, že proces je "určitý měřitelný adresový prostor s n vlákny běžícími v rámci tohoto určitého adresového prostoru a systémové zdroje pro tato vlákna", toto je naprosto suchá a vyčerpávající definice procesu specifikace SUNIXSV2 (Single UNIX Specification, ver2 (UNIX98)).

Tato hrozná věta nám mimo jiné sděluje ještě to, co jsem neřekl, ale je to naprosto logické, proces spotřebovává jistou část systémových prostředků. To je velmi důležité. Ať už paměť nebo čas procesoru, je zde spotřeba. Proto je důležité procesy alespoň do jisté míry hlídat, o tom se dozvíme něco bližšího níže.

Navíc se vyplatí úlohy plánovat, jako třeba zálohy systému při nižším zatížení počítače atd. Dříve byl počet procesů v Unixu omezen na 256 procesů, dnes však nejsou žádná omezení ze strany systému, pouze ze strany hardwarové vybavenosti daného stroje.

Unixový systém podporuje takzvaný preemptivní multitasking, to znamená, že v systému může být přítomen více než jeden proces, navíc Unix je i víceuživatelským systémem. Tudíž může být v jednom systému přítomno několik (i stovek) procesů od různých uživatelů (preemptivní multitasking má ještě jednu vlastnost, ale o té až později).

Rozdělme si procesy na

  • uživatelské (ty, co spustil libovolný uživatel)
  • systémové (ty, co spustil systém při startu nebo na základě libovolné události)

Tabulka procesů a jejich sledování

V Unixu máme tabulku procesů, která se podobá datové struktuře. Uchovává v sobě všechny procesy a informace o nich. Operační systém identifikuje procesy na základě jejich PID (jedinečná identifikace). Ke sledování procesů nám výborně poslouží příkaz ps:

# ps
PID  TTY         TIME CMD
1609 tty1    00:00:00 bash
1645 tty1    00:00:00 ps

To není mnoho užitečné, použijeme tedy další volby programu, konkrétně volbu

-a (zobrazí všechny procesy konkrétního terminálu)
-f (uspořádá zobrazování podprocesů do stromu - když je to možné)

Zde je výsledek

# ps -af
UID      PID  PPID  C STIME TTY          TIME CMD
murphy 15982  8649  0 21:55 tty2     00:00:01 vim 1dil.txt
root   15893  1609  0 22:32 tty1     00:00:00 ps -af

Po spuštění procesu je mu přiděleno číslo, které je jedinečné, jedná se o číslo procesu (PID - process identification), jsou to kladná z množiny integeru od 2 do 32768.

Po spuštění dalšího procesu je použito v řadě navazující číslo, když je nižší proces ukončen, jeho číslo (již nepoužité) není znovu použito, dokud systém nedojde až do konce (tj. 32768), pak se čísluje od začátku.

Jak jste si jistě všimli, chybí tu číslo 1, to je rezervováno procesu init, o něm budeme hovořit v podkapitole o systémových procesech.

Hodnota UID je identifikace uživatele (prostě řečeno uživatelské jméno). PPID (parent process identification), identifikace rodičovského procesu. TTY specifikuje terminál, na kterém proces běží, CMD je příkaz, kerým byl proces spuštěn. STIME je systémový čas v době spuštění.

Tento program nám může sdělovat ještě mnoho užitečných informací, proto se podívejte do jeho manuálové stránky.

Rodičovský proces je pojem, kterým se označuje "řídící" proces, který vyvolal spuštění svého takzvaného dceřiného procesu. Bývá to další instance rodičovského procesu, kterou však spustil rodič, ne vy.

Když několikrát spustíte nějaký program, rozhodně se nejedná o tento vztah. (v angl. Se používají názvy child/parent). Potomek (dceřiný proces) však není jen další instance téhož programu, ale může to být libovolná další aplikace spuštěná procesem (rodičovským).

I dceřiný proces může být rodičovským procesem pro další podproces, tím dostáváme složitější hierarchii, ale to už je o něčem jiném.

Další šikovný program ke sledování procesů je program top. Spustí se a běží, dokud ho neukončíme stiskem klávesy q. Osobně mu dávám ještě lepší barvu klávesou z.

Avšak doporučil bych používat program htop, jenž je nadstavbou pro program top a je vizuelně mnohem lepší a lépe se s ním zachází. Má mnoho vlastností, jež top postrádá.

Image

V prvním řádku programu vidíme klasický výpis příkazu uptime. Následuje podrobný rozpis úloh (procesů) v systému a souhrn kolik je jich v jakém stavu(spící, zastavené, zombie, běžící).

Program htop pracuje na knihovně ncurses a má vypracované rozhraní pro zasílání signálů jednomu nebo skupině procesů. Využívá velmi přehledného barevného odlišení.

Následující řádek informuje o stavu procesoru. Pod nimi je rozpis obsahu paměti a další řádek o swapu.

Pak už je zde to nejdůležitější (v tuto chvíli), procesy jsou řazeny podle jejich nároků na systémové prostředky od nejnáročnějšího sestupně. Máme zde PID, poté uživatele, kdo proces spustil, prioritu procesu, jeho nice hodnotu, tu si vysvětlíme v sekci process scheduling, VIRT znamená virtual image, neboli celkovou virtuální paměť, kterou daný proces využívá, RES je fyzická paměť, kterou proces využívá, SHR je totéž, avšak jedná se o sdílenou paměť, S je process status, neboli stav konkrétního procesu, může být

D = v "nepřerušitelném spánku"
R = běžící
S = spící
T = traceovaný nebo zastavený
Z = zombie

Dále jsou zde k dispozici využití paměti a času procesoru v procentech z celkové kapacity. TIME+ je celkový čas procesoru, který proces spotřeboval a CMD je opět příkaz, kterým byl spuštěn.

Nahoru

Odkazy

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz