Eljárás (számítástechnika)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. június 17-én felülvizsgált verziótól ; az ellenőrzések 11 szerkesztést igényelnek .

A folyamat az egymással összefüggő rendszererőforrások gyűjteményének azonosítható absztrakciója, amely egy különálló és független virtuális címtéren alapul, amelyben a szálak végrehajtása meg van szervezve. Az ISO 9000:2000 definíciók a folyamatot egymással összefüggő és kölcsönhatásban lévő tevékenységek összességeként határozzák meg, amelyek a bemeneteket outputokká alakítják.

Maga a számítógépes program csak egy passzív utasítássorozat. Míg a folyamat ezen utasítások közvetlen végrehajtása.

Ezenkívül a folyamat egy futó program és annak minden eleme: címtér , globális változók , regiszterek , verem , megnyitott fájlok és így tovább.

Folyamat nézet

A számítástechnikai rendszerben egy folyamatot jellemzően a következő erőforrások képviselnek (amit "tulajdonnak" is neveznek):

Az aktuális folyamat környezete a memóriába cserélődik, amikor egy másik folyamatra váltanak [1] .

Az operációs rendszer a legtöbb információt a folyamatokról a folyamattáblában tárolja.

A szálakat (szálakat) támogató operációs rendszereken a szálak saját erőforrásokkal is rendelkeznek. Ez általában csak a processzor állapota, bár a szálak más erőforrásokat is használhatnak.

Annak érdekében, hogy csökkentse annak valószínűségét, hogy a folyamatok interferálják egymást, valamint a rendszer meghibásodásának valószínűségét (például patthelyzet vagy összeomlás ), az operációs rendszer biztosítja a folyamatok elkülönítését, és lefoglalja a szükséges erőforrásokat. Az operációs rendszer mechanizmusokat is biztosít a folyamatok biztonságos és kiszámítható kommunikációjához.

Egy folyamat ábrázolása a memóriában

Ez a rész egy folyamat memóriaábrázolását tárgyalja a Linux operációs rendszerben és az x86 architektúrában . Az ilyen ábrázolás alig különbözik sok más többfeladatos operációs rendszertől és architektúrától. Például az amd64 -ben, az x86 utódjában a hívási verem ugyanígy felülről lefelé nő, de a címtér mérete 2 48 bájtra nő. [2]

A Linux lapos memóriamodellt használ , ezért ebben az architektúrában minden folyamat számára 232 bájt memória áll rendelkezésre. Az összes virtuális memória felhasználói és kernelterületre oszlik . A kernelterület egy gigabájt memóriát foglal el, a legmagasabb címtől kezdve. A fennmaradó terület, azaz három gigabájt a felhasználói terület számára van fenntartva.

A jobb oldali diagram bármely folyamat felhasználói térbeli reprezentációját mutatja. A kernelterület minden folyamatban azonos, mivel a kernelnek csak egy példánya létezhet az operációs rendszerben. A program elindítása után a processzor utasításai (gépi kódja) és az inicializált adatok importálásra kerülnek a RAM-ba. Ugyanakkor az indítási argumentumok és a környezeti változók magasabb címekre importálódnak.

Az inicializált adatterület csak olvasható adatokat tárol. Lehetnek például karakterlánc-literálok.

Az inicializálatlan adatterület általában globális változókat tárol.

A kupac a memória lefoglalására szolgál a program futása közben. Linuxon erre van egy rendszerhívás mmap.

A veremterület az eljárások meghívására szolgál .

Szintén fontos részlet, hogy a verem és a felső terület, valamint az inicializált adatterület és a kupac között véletlenszerű behúzás található. Ez biztonsági okokból történik, például más funkciók egymásra halmozásának megakadályozása érdekében.

A dinamikus hivatkozási könyvtárak és a fájlleképezések a verem és a kupac között helyezkednek el.

Folyamathierarchia

A többfeladatos operációs rendszerekben lehetővé vált több folyamat egyidejű munkavégzése. A megelõzõ többfeladatos operációs rendszerek lehetõvé tették több folyamat egyidejû futtatásának érzését. Ehhez több folyamat menedzselésére volt szükség.

Unix

A Unix  az egyik első többfeladatos operációs rendszer. Minden folyamatnak egyedi numerikus PID-je van. A benne lévő folyamatok fahierarchiával rendelkeznek , ahol a gyökér a PID 1-es init folyamat . Rendszerhívással új folyamat hozható létre , ez a szülő folyamatfork pontos másolata lesz . Az init kivételével minden folyamatnak mindig van szülőfolyamata (a PPID attribútum ( Parent PID )); olyan folyamatok, amelyek szülője véget ért , az init leszármazott folyamataivá válnak. 

A folyamatokat csoportokba is vonják . setpgidA rendszer hívja a csoportazonosítót (PGID), és felelős a csoport azonosítójának kezeléséért getpgid. A PGID megegyezik a csoportvezető PID-jével. A gyermek folyamat örökli a csoportot a szülőtől. A csoportok a feladatok kezelésére szolgálnak .

A folyamatcsoportokat munkamenetekké egyesítik . A rendszerhívás felelős egy új munkamenet létrehozásáért setsid. Az azonos csoportból származó folyamatok nem tartozhatnak különböző munkamenetekhez. Ezért a csoportvezető nem lehet foglalkozásvezető: egy foglalkozás létrehozásakor a gyermekfolyamat automatikusan a foglalkozásvezetővé és az új csoport vezetőjévé válik. A munkamenetek a felhasználó bejelentkezése után futó összes folyamat nyomon követésére szolgálnak.

Minden munkamenethez legfeljebb egy vezérlőterminál tartozhat . A terminálemulátor egy parancshéjjal ( leggyakrabban bash vagy sh) rendelkezik gyermekfolyamatként , amely indítás előtt az új munkamenet vezetője lesz, és beállítja magát a vezérlő terminálnak.

Folyamat létrehozása

A legegyszerűbb operációs rendszernek nem kell új folyamatokat létrehoznia, hiszen a készülék bekapcsolásakor egyetlen program fut bennük. Bonyolultabb rendszerekben új folyamatokat kell létrehozni. Általában létrejönnek:

Folyamatállapotok

Egy folyamat a fő futó állapoton kívül más állapotokban is lehet, például várakozva.

Linux

Egy Linux - folyamat a következő állapotok egyikében lehet:

Folyamat befejezése

Minimum 2 teljesítési szakasz:

  1. A folyamat eltávolítva az összes ütemezési sorból , azaz az operációs rendszer többé nem ütemez semmilyen erőforrást a folyamathoz kiosztandó,
  2. Statisztikák gyűjtése a folyamat által felhasznált erőforrásokról, majd a memóriából való eltávolítása .

Az eljárás leállításának okai:

Lásd még

Jegyzetek

  1. E. Tannenbaum. Modern operációs rendszerek = Modern operációs rendszerek. - 2. kiadás - Szentpétervár. : Péter, 2002. - S. 59, 97. - 1040 p. - ISBN 5-318-00299-4 .
  2. AMD Corporation. 2. kötet: Rendszerprogramozás (PDF). AMD64 architektúra programozói kézikönyv . AMD Corporation (2016. december). Letöltve: 2017. március 25. Az eredetiből archiválva : 2018. július 13.

Irodalom