瑞士一小型飞机坠毁起火后发生爆炸 致5死4伤

Proces (anglicky process) je v informatice název pro spu?těnou instanci po?íta?ového programu.[1] Proces je umístěn v opera?ní paměti po?íta?e v podobě sledu strojovych instrukcí vykonávanych procesorem. Obsahuje nejen kód vykonávaného programu, ale i dynamicky měnící se data, která proces zpracovává. Program m??e na jednom, ale i více po?íta?ích bě?et v podobě jednoho ?i více proces? s r?znymi daty (nap?íklad vícekrát spu?těny webovy prohlí?e? zobrazující r?zné stránky). Správu proces? vykonává opera?ní systém, ktery zaji??uje jejich odděleny běh, p?iděluje jim systémové prost?edky po?íta?e a umo?ňuje u?ivateli procesy spravovat (spou?tět, ukon?ovat atp.).
Správa proces?
[editovat | editovat zdroj]Moderní opera?ní systémy umo?ňují spustit zároveň více proces? (textovy editor, tabulkovy procesor, e-mailovy klient apod.), co? nazyváme multitasking – multiprocessing. Pokud je v po?íta?i méně procesor?, ne? je bě?ících proces?, musejí se procesy na procesorech st?ídat, co? ozna?ujeme jako změnu kontextu.
Proto?e programátor nep?edpokládá, ?e by byla změněna data v pr?běhu vykonávání programu, je p?i p?epínání proces? d?le?ité uchovat v?echny informace pot?ebné pro opětovné obnovení procesu p?esně v místě a ve stavu, kde bylo jeho vykonávání p?eru?eno tak, aby bě?ící proces tuto změnu nepoznal (a? na ?asové zpo?dění mezi dvěma strojovymi instrukcemi, mezi kterymi do?lo ke změně kontextu). Tyto informace se pro ka?dy proces ukládají do tabulky PCB (anglicky Process control block), která je spravována jádrem opera?ního systému.
Změna kontextu je poměrně náro?ná operace, a proto byla zavedena vlákna (anglicky thread), která mají re?ii na p?epnutí ni??í. Uspo?í se zejména na tom, ?e thready sdílejí jeden pamě?ovy prostor. To jim té? umo?ňuje velmi rychlou a efektivní vzájemnou komunikaci.
?ivotní cyklus procesu
[editovat | editovat zdroj]
?ivotní cyklus procesu probíhá podle diagramu stavovych p?echod?. U několika soupe?ících proces? je za?azení k běhu ?ízeno pravidly: ?asová kvanta, priorita, ?i bez mo?nosti p?eru?ení. P?epínání proces? je zna?ně ?asově náro?né a m??e vyhovovat jen pro toleranci událostí s dlouhou latencí (nap?íklad p?ístup na disk).
- proces je vytvo?en bu? p?íkazem u?ivatele (u terminálu), nebo na ?ádost opera?ního systému o provedení slu?by, ?i na ?ádost jiného procesu (rodi?e)
- ?vytvo?eny“ proces je ve stavu ?p?ipraveny“ – p?ipraveny k vykonání a ?eká pouze na p?idělení procesoru
- spu?těním procesu, na základě plánovacího algoritmu p?echází proces do stavu ?bě?ící“
- ?bě?ící“ proces m??e byt ukon?en normálně, tj. byl cely proveden, nebo násilně ukon?en u?ivatelem, provedením chybné strojové instrukce, chybou vstupně–vystupní za?ízení, poru?ením ochrany paměti, nebo na ?ádost rodi?e apod.
- ?bě?ící“ proces m??e byt po vypr?ení ?asového limitu pro jeho běh (uplynutí ?asového kvanta) p?eveden do stavu ?p?ipraveny“
- ?bě?ící“ proces m??e byt jen jeden, máme-li jen jeden procesor, kde?to ve stavu ?p?ipraveny“ m??e byt více proces? za?azenych do fronty nebo jiné datové struktury, kterou vyu?ívá plánovací algoritmus
Základní stavy proces?
[editovat | editovat zdroj]Následující stavy proces? se vyskytují ve v?ech víceúlohovych systémech:
- vytvo?eny (created) – proces je vytvo?en bu? p?íkazem u?ivatele (u terminálu), nebo na ?ádost opera?ního systému o provedení slu?by, ?i na ?ádost jiného procesu (rodi?e)
- p?ipraveny (ready) nebo ?ekající (waiting) – p?ipraveny pro vstup do stavu bě?ící, ?eká pouze na p?idělení procesoru
- bě?ící (running) – procesu je p?idělen procesor a právě se provádí p?íslu?né programy
- blokovany (blocked) – proces je p?eveden do tohoto stavu v p?ípadě, kdy ?eká na dokon?ení nějaké vstupně–vystupní operace, p?ípadně na skon?ení jiného procesu, uvolnění zdroje, synchroniza?ní primitivum a podobně
- ukon?eny (terminated) – proces skon?il
Roz?í?ené stavy proces?
[editovat | editovat zdroj]Dva p?idané stavy jsou dostupné pro procesy v systémech, které podporují st?ednědobé plánování proces? (anglicky mid-term scheduling) s podporou virtuální paměti. V obou stavech je cely proces odsunut z vnit?ní paměti na pevny disk, je-li vnit?ní paměti nedostatek (anglicky swapping out a swapping in). Je chybou pova?ovat stránkování paměti za st?ednědobé plánování, proto?e v tomto p?ípadě se odkládá cely proces. Bě?né sou?asné opera?ní systémy roz?í?ené stavy proces? nepou?ívají (nap?íklad ?ada Windows NT, macOS nebo Linux).
- odlo?eny a blokovany (suspend blocked) – procesy, které jsou blokovány, mohou byt také odlo?eny. V tom p?ípadě je proces jak odsunut, tak i blokován; v p?ípadě, ?e se fronta p?ipravenych vyprázdnila (nebo alespoň témě? vyprázdnila), pak p?echází proces ze stavu ?odlo?eny p?ipraveny“ do stavu ?p?ipraveny“
- odlo?eny a ?ekající (suspend waiting) – v systémech, které podporují virtuální pamě?, mohou byt procesy odsunuty z hlavní paměti a umístěny do virtuální; odtud pak m??e byt proces p?esunut zpátky do stavu ?ekající
Komunikace mezi procesy
[editovat | editovat zdroj]Komunikace mezi procesy (IPC, Inter-Process Communication, té? meziprocesová komunikace) ozna?uje mechanismy, pomocí kterych mezi sebou procesy komunikují a sdílí data. Komunikace m??e byt u proces? velice frekventovaná. Některé procesy vytvá?ejí vystupy, které jinym proces?m mohou p?edávat jako vstupy. Proces nebo aplikaci m??eme podle úlohy v IPC ozna?it jako klienta nebo jako server. Proces zastupující roli klienta si vy?ádá slu?bu od jiné aplikace nebo procesu. Na po?adavky klienta nebo více klient? odpovídá server. Mnohdy aplikace zastupují obě tyto role.
Je mo?né aby oba spolu komunikující procesy bě?ely na jinych za?ízeních s jinym opera?ním systémem. Komunikace pak musí probíhat prost?ednictvím ur?itych protokol? pomocí po?íta?ové sítě, sběrnice, bezdrátově i jinak.
Historie
[editovat | editovat zdroj]Na za?átku 60. let 20. století se ?ídící po?íta?ovy software vyvinul z monitorovacího (nap?. IBM IBSYS) na vykonny (exekutivní) ?ídící software. Po?íta?e se stávaly rychlej?ími a vykonněj?ími, av?ak tehdej?í vypo?etní ?as po?íta?? nebyl úsporny ani plně vyu?ívany. To byl d?vod, pro? se stala technika multiprogramování pot?ebnou a nezbytnou. Multiprogramování umo?nilo soubě?nost několika program?. Nejd?íve bě?elo více program? na jediném procesoru, jako vysledek základní jednoprocesorové po?íta?ové architektury, kdy sdílely vzácné a limitované hardwarové zdroje a soubě?nost sériové povahy (st?ídání). Na pozděj?ích systémech s více procesory mohlo bě?et více program? ji? paralelně.
Programy se skládají ze sekvencí instrukcí pro procesory. Jeden procesor m??e spustit v jeden ?as pouze jednu instrukci, a tak je nemo?né spustit více program? ve stejny ?as. Program m??e vy?adovat nějaky systémovy zdroj, jako nap?íklad vstupní za?ízení, nebo m??e zahrnovat nějakou pomalou operaci jako je posílání vystupu (p?íkazu) na tiskárnu, co? by vedlo k ne?innosti procesoru (?ekání, a? tiskárna bude pot?ebovat dal?í data). Aby mohl byt procesor stále vyu?íván, je provádění takovéhoto procesu pozastaveno a opera?ní systém po tuto dobu vyu?ije procesor k běhu jiného programu. U?ivateli pak m??e p?ipadat, ?e programy bě?ely ve stejny okam?ik (odtud termín ?paralelní“).
Krátce poté byla p?edstava ?programu“ roz?í?ena na vyznam ?vykonávání programu a jeho kontextu“. Tím byl zrozen samotny koncept procesu, ktery se také stal nezbytnym pro vznik reentrantního programování. O něco později p?i?ly je?tě vlákna. S p?íchodem koncept? jako je sdílení ?asu, po?íta?ová sí? a vícejádrové procesory se sdílenou pamětí, ustoupilo staré multiprogramování p?ed opravdovym multitaskingem (víceúlohovy systém), multiprocesingem (víceprocesorovy systém), a později také p?ed vícevláknovymi aplikacemi (anglicky multithreading).
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]- ↑ VAHALIA, Uresh. Unix Internals The New Frontiers [online]. Prentice Hall Press Upper Saddle River, 1996 [cit. 2025-08-08]. S. 24. Dostupné v archivu po?ízeném dne 2025-08-08. ISBN 0131019082. (anglicky)
Související ?lánky
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]Obrázky, zvuky ?i videa k tématu proces na Wikimedia Commons
Kniha Práce s procesy v Unixu ve Wikiknihách