Proces (výpočetní) - Process (computing)

Ve výpočtu , je proces je instance z počítačového programu , který je spuštěn jeden nebo mnoho nití . Obsahuje kód programu a jeho aktivitu. V závislosti na operačním systému (OS) může být proces tvořen více vlákny provádění, která provádějí souběžně pokyny .

Zatímco počítačový program je pasivní sbírka instrukcí obvykle uložených v souboru na disku, proces je provedení těchto pokynů po načtení z disku do paměti. Se stejným programem může být spojeno několik procesů; například otevření několika instancí stejného programu často vede ke spuštění více než jednoho procesu.

Multitasking je metoda, která umožňuje více procesům sdílet procesory (CPU) a další systémové prostředky. Každý CPU (jádro) vykonává najednou jeden úkol . Multitasking však umožňuje každému procesoru přepínat mezi prováděnými úlohami, aniž by musel čekat na dokončení každého úkolu ( preemption ). V závislosti na implementaci operačního systému lze přepínače provádět při zahájení úkolů a čekání na dokončení vstupních/výstupních operací, při úkolu, který dobrovolně poskytne CPU, při přerušení hardwaru a když plánovač operačního systému rozhodne, že proces vypršel podíl času CPU (např u completely fair scheduler na linuxové jádro ).

Běžnou formou multitaskingu je sdílení času CPU, což je metoda pro prokládání provádění procesů a vláken uživatelů, a dokonce i pro nezávislé úlohy jádra - ačkoli tato druhá funkce je možná pouze v preventivních jádrech , jako je Linux . Preemption má důležitý vedlejší účinek u interaktivních procesů, které mají vyšší prioritu s ohledem na procesy vázané na CPU, proto jsou uživatelům okamžitě přiřazeny výpočetní prostředky jednoduchým stisknutím klávesy nebo pohybem myši. Kromě toho mají aplikace jako reprodukce videa a hudby určitý druh priority v reálném čase, což předchází jakémukoli jinému procesu s nižší prioritou. V systémech sdílení času se kontextové přepínače provádějí rychle, což vypadá, že je na stejném procesoru prováděno více procesů současně. Toto současné provádění více procesů se nazývá souběžnost .

Kvůli bezpečnosti a spolehlivosti většina moderních operačních systémů brání přímé komunikaci mezi nezávislými procesy a poskytuje přísně zprostředkovanou a kontrolovanou meziprocesovou komunikační funkci.

Reprezentace

Seznam procesů zobrazených htop
Tabulka procesů, jak ji zobrazuje KDE System Guard
Tabulka procesů, jak ji zobrazuje KDE System Guard

Proces počítačového systému se obecně skládá (nebo se říká, že vlastní ) následujících zdrojů:

  • Obraz spustitelného strojového kódu spojené s programem.
  • Paměť (obvykle nějaká oblast virtuální paměti ); který obsahuje spustitelný kód, data specifická pro proces (vstup a výstup), zásobník volání (pro sledování aktivních podprogramů a/nebo jiných událostí) a hromadu pro uložení mezilehlých výpočetních dat generovaných během běhu.
  • Popisovače prostředků operačního systému, které jsou přiděleny procesu, jako jsou popisovače souborů ( unixová terminologie) nebo popisovače ( Windows ), zdroje dat a jímky.
  • Atributy zabezpečení , jako je vlastník procesu a sada oprávnění procesu (povolené operace).
  • Stav procesoru ( kontext ), jako je obsah registrů a adresování fyzické paměti. Stav je obvykle uloženy v počítačových registrů, když je proces spouštění a do paměti jinak.

Operační systém obsahuje většinu těchto informací o aktivních procesech v datových strukturách nazývaných bloky řízení procesů . Jakákoli podmnožina prostředků, obvykle alespoň stav procesoru, může být spojena s každým z vláken procesu v operačních systémech, které podporují vlákna nebo podřízené procesy.

Operační systém udržuje své procesy odděleně a alokuje zdroje, které potřebují, takže je méně pravděpodobné, že se budou navzájem rušit a způsobovat selhání systému (např. Zablokování nebo vyřazení ). Operační systém může také poskytovat mechanismy pro meziprocesovou komunikaci , aby procesy mohly interagovat bezpečnými a předvídatelnými způsoby.

Multitasking a řízení procesů

Multitasking operační systém může být jen přepínat mezi procesy, aby vzhled mnoha procesů, vykonávající současně (to znamená, že v souběžně ), i když ve skutečnosti pouze jeden proces může být vykonávající v jednom okamžiku na jednom procesoru (pokud procesor má více jader , pak lze použít vícevláknové nebo jiné podobné technologie).

Je obvyklé spojit jeden proces s hlavním programem a podřízené procesy s jakýmikoli vedlejšími paralelními procesy, které se chovají jako asynchronní podprogramy. Říká se, že proces vlastní zdroje, přičemž jedním z takových zdrojů je obraz jeho programu (v paměti). Ve víceprocesních systémech však může mnoha procesům běžet nebo sdílet stejný reentrantní program na stejném místě v paměti, ale každý proces údajně vlastní svůj vlastní obraz programu.

Procesům se ve vestavěných operačních systémech často říká „úkoly“ . Smysl „procesu“ (nebo úkolu) je „něco, co zabírá čas“, na rozdíl od „paměti“, což je „něco, co zabírá místo“.

Výše uvedený popis platí jak pro procesy spravované operačním systémem, tak pro procesy definované procesními kameny .

Pokud proces požaduje něco, na co musí počkat, bude zablokován. Když je proces ve stavu zablokování , je způsobilý pro výměnu na disk, ale to je transparentní ve virtuálním paměťovém systému, kde oblasti paměti procesu mohou být skutečně na disku a ne v hlavní paměti kdykoli. Všimněte si, že i části aktivních procesů/úkolů (spouštění programů) jsou způsobilé pro výměnu na disk, pokud tyto části nebyly v poslední době použity. Aby byly přidružené procesy aktivní, nemusí být všechny části prováděcího programu a jeho data ve fyzické paměti.

Stavy procesu

Různé stavy procesu zobrazené ve stavovém diagramu se šipkami označujícími možné přechody mezi stavy.

Jádro operačního systému, které umožňuje procesům multitaskingu vyžadovat určité stavy . Názvy těchto stavů nejsou standardizované, ale mají podobnou funkčnost.

  • Za prvé, tento proces je „vytvořen“ tím, že je nainstalován z sekundární úložné zařízení ( jednotka pevného disku , CD-ROM , atd) do hlavní paměti . Poté mu plánovač procesu přiřadí stav „čekání“.
  • Zatímco proces „čeká“, čeká, až plánovač provede takzvané přepnutí kontextu . Kontextový přepínač načte proces do procesoru a změní stav na „spuštěný“, zatímco předchozí „spuštěný“ proces je uložen ve stavu „čeká“.
  • Pokud proces ve stavu „běží“ potřebuje počkat na zdroj (například čekat na otevření vstupu uživatele nebo souboru), je mu přiřazen stav „zablokován“. Pokud proces již nemusí čekat (v zablokovaném stavu), stav procesu se změní zpět na „čekání“.
  • Jakmile proces dokončí spuštění nebo je ukončen operačním systémem, již není potřeba. Proces je okamžitě odstraněn nebo je přesunut do stavu „ukončeno“. Když je odstraněn, čeká jen na odstranění z hlavní paměti.

Meziprocesová komunikace

Když procesy potřebují komunikovat mezi sebou, musí sdílet části svých adresních prostorů nebo použít jiné formy meziprocesové komunikace (IPC). Například v prostředí shell musí výstup prvního procesu předat druhému a tak dále; dalším příkladem je úkol, který lze rozložit na spolupracující, ale částečně nezávislé procesy, které lze spustit najednou (tj. pomocí souběžnosti nebo skutečného paralelismu - druhý model je konkrétním případem souběžného provádění a je proveditelný, kdykoli je k dispozici dostatek jader CPU všechny procesy, které jsou připraveny ke spuštění).

Je dokonce možné, aby na různých počítačích běžely dva nebo více procesů, na kterých může běžet jiný operační systém (OS), proto jsou zapotřebí určité mechanismy pro komunikaci a synchronizaci (nazývané komunikační protokoly pro distribuované výpočty) (např. Rozhraní pro předávání zpráv, často jednoduše nazývané MPI ).

Dějiny

Počátkem šedesátých let se software pro ovládání počítače vyvinul ze softwaru pro ovládání monitorů , například IBSYS , na software pro výkonné řízení . Počítače se postupem času zrychlovaly, zatímco počítačový čas stále nebyl ani levný, ani plně využit; takové prostředí umožňovalo a potřebovalo multiprogramování . Multiprogramování znamená, že běží několik programů současně . Na první, více než jeden program běžel na jednom procesoru, v důsledku něhož jednoprocesorový počítačové architektury a sdíleli vzácné a omezené hardwarové prostředky; v důsledku toho měla souběžnost sériovou povahu. Na novějších systémech s více procesory , více programů může běžet souběžně v souběžně .

Programy se skládají ze sekvencí instrukcí pro procesory. Na jednom procesoru lze spustit pouze jednu instrukci současně: nelze spustit více programů současně. Program může potřebovat nějaký zdroj , například vstupní zařízení, které má velké zpoždění, nebo program může spustit nějakou pomalou operaci, například odeslání výstupu na tiskárnu. To by vedlo k tomu, že procesor bude „nečinný“ (nepoužitý). Aby byl procesor neustále zaneprázdněn, provádění takového programu se zastaví a operační systém přepne procesor na spuštění jiného programu. Uživateli se bude zdát, že programy běží současně (odtud výraz „paralelní“).

Krátce poté byl pojem „program“ rozšířen na pojem „vykonávající program a jeho kontext“. Zrodil se koncept procesu, který byl také nezbytný s vynálezem kódu re-entrant . Vlákna přišla o něco později. S příchodem konceptů, jako je sdílení času , počítačové sítě a počítače se sdílenou pamětí s více CPU , však staré „multiprogramování“ ustoupilo skutečnému multitaskingu , multiprocesingu a později vícevláknovému zpracování .

Viz také

Poznámky

Reference

Další čtení

externí odkazy