„Folyamat (számítástechnika)” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
a Kisebb hibák és más szócikkekre mutató hivatkozások javítása.
1. sor:
[[Fájl:Htop.png|jobbra|bélyegkép|400x400px|A [[htop]] által megjelenített folyamatok listája]]
 
A számítástechnikában a '''folyamat''' egy [[Program (informatika)|számítógépes program]] [[Példány (számítógépes programozás)|példánya]], amelyet egy vagy több szál hajt végre. Ez tartalmazza a programkódot és a tevékenységét. [[Operációs rendszer|Operációs rendszertől]]től (OS) függően egy folyamat több végrehajtási [[Szál (programozás)|szálból]] állhat, amely utasításokat [[PárhuzamosságEgyidejűség (számítástechnika)|egyidejűleg]] hajtják végre.<ref name="OSC Chap4">{{cite book |authorlink=Abraham Silberschatz |title=Operating system concepts with Java |edition=Sixth |date=2004 |publisher=[[John Wiley & Sons]] |isbn=0-471-48905-0 |chapter=Chapter 4. Processes |last1=Silberschatz |first1=Abraham |last2=Cagne |first2=Greg |last3=Galvin |first3=Peter Baer}}</ref><ref name="Vah96">{{cite book |last=Vahalia |first=Uresh |title=UNIX Internals: The New Frontiers |url=https://archive.org/details/unixinternalsnew00vaha |date=1996 |publisher=Prentice-Hall Inc. |isbn=0-13-101908-2 |chapter=Chapter 2. The Process and the Kernel |url-access=registration}}</ref>
 
Míg a számítógépes program passzív [[Utasítás (informatika)|utasítások]] gyűjteménye, addig a folyamat ezen utasítások tényleges végrehajtása. Több folyamat társítható ugyanahhoz a programhoz; például ugyanazon program több példányának megnyitása gyakran egynél több folyamat végrehajtását eredményezi.
7. sor:
A [[többfeladatosság]] olyan módszer, amely lehetővé teszi több folyamat számára a [[Central processing unit|processzorok]] (CPU) és más rendszererőforrások megosztását. Minden processzor (mag) egyszerre egyetlen [[Feladat (számítástechnika)|feladatot]] hajt végre. A többfeladatosság azonban lehetővé teszi, hogy minden processzor [[Kontextusváltás|válthasson]] a feladatok között anélkül, hogy meg kellene várnia az egyes feladatok befejezését. Az operációs rendszer megvalósításától függően kapcsolásokat lehet elvégezni, amikor a feladatok [[I/O Interfész|bemeneti/kimeneti]] műveleteket hajtanak végre, amikor egy feladat azt jelzi, hogy át lehet kapcsolni vagy hardveres [[Programmegszakítás|megszakításkor]].
 
A többfeladatosság általános formája az [[időosztás]]. Az időosztás olyan módszer, amely lehetővé teszi az interaktív felhasználói alkalmazásokra való magas reagálást. Az időosztóidőosztásos rendszerekben a [[Kontextusváltás|kontextusváltásokatkontextusváltás]]okat gyorsan hajtják végre, ami miatt úgy tűnik, hogy több folyamat egyidejűleg hajtódik végre ugyanazon a processzoron. Több folyamat látszólag egyidejű végrehajtását [[PárhuzamosságEgyidejűség (számítástechnika)|párhuzamosságnakegyidejűségnek]] hívják.
 
A biztonság és a megbízhatóság érdekében a legtöbb modern [[operációs rendszer]] megakadályozza a független [[Folyamatokfolyamatok közötti kommunikáció|folyamatok közötti közvetlen kommunikációt]]t, szigorúan közvetített és ellenőrzött folyamatok közötti kommunikációs funkciókat biztosítva.
 
== Bemutatás ==
19. sor:
* Egy programhoz társított végrehajtható [[gépi kód]] ''képe''.
* Memória (általában a [[virtuális memória]] valamilyen régiója); amely magában foglalja a végrehajtható kódot, a folyamat specifikus adatokat (bemeneti és kimeneti), egy [[Hívási verem|hívási vermet]] (az aktív [[Függvény (programozás)|alprogramok]] és/vagy egyéb események nyomon követéséhez) és egy halom a futási idő során generált közbenső számítási adatot.
* A folyamathoz hozzárendelt erőforrások operációs rendszer leírói, például [[Fájlleíró|fájlleírókfájlleíró]]k ([[Unix]] terminológia) vagy [[Handle (számítástechnika)|fogantyúk]] ([[Windows]]), valamint adatforrások és összefoglalók.
* [[Számítógépes biztonság|Biztonsági]] attribútumok, például a folyamat tulajdonosa és a folyamat engedélyei (megengedett műveletei).
* A [[Central processing unit|processzor]] állapota ([[Kontextus (számítástechnika)|kontextus]]), például a [[Regiszter (számítástechnika)|regiszterek]] tartalma és fizikai memóriacímzése. Az ''állapotot'' általában számítógépes regiszterekben tárolják, amikor a folyamat végrehajtódik, egyébként pedig a memóriában.<ref name="OSC Chap4" />
 
Az operációs rendszer az aktív folyamatokkal kapcsolatos információk nagy részét [[Folyamatvezérlőfolyamatvezérlő blokk|folyamatvezérlő blokkoknak]]oknak nevezett adatszerkezetekben tárolja. Bármilyen részhalmaza az erőforrásoknak, jellemzően legalább a processzor állapota, összefüggésben lehet minden folyamat szálaival olyan operációs rendszerek esetében, amelyek támogatják a [[Szál (programozás)|szálakat]] vagy a ''gyermek'' ''(child)'' folyamatokat.
 
Az operációs rendszer elválasztja a folyamatokat, és elosztja a szükséges erőforrásokat, hogy azok kevésbé zavarják egymást, és ezzel rendszerhibákat okozzanak (pl. [[holtpont]] vagy [[Thrashing (számítástechnika)|cséplés]]). Az operációs rendszer mechanizmusokat is biztosíthat a [[Folyamatokfolyamatok közötti kommunikáció|folyamatok közötti kommunikációhoz]]hoz, lehetővé téve a folyamatok biztonságos és kiszámítható módon történő kölcsönhatását.
 
== Többfeladatosság és folyamatkezelés ==
 
A [[Többfeladatosság|többfeladatos]] [[operációs rendszer]] tud váltani a folyamatok között, így úgy tűnhet, mintha a folyamatokat egyidejűleg (azaz [[Párhuzamos számítástechnika|párhuzamosan]]) [[Végrehajtás (számítástechnika)|hajtaná végre]], de valójában csak egy folyamatot tud végrehajtani egy időben egyetlen [[Central processing unit|processzoron]] (kivéve, ha a processzor több maggal rendelkezik, akkor [[Többszálútöbbszálú utasításvégrehajtás|többszálú utasításvégrehajtást]]t vagy más hasonló technológiákat lehet használni).{{jegyzet |megj=Néhány modern processzor két vagy több független processzort egyesít [[Többmagos processzor|többmagos]] konfigurációban, és több folyamatot is végrehajthat egyszerre. Egy másik módszer, amelyet [[Simultaneous multithreading|egyidejű többszálú utasításvégrehajtásnak]] hívnak (az [[Intel]] [[HyperThreading|Hyper-threadingThreading]] technológiájában használják), szimulálhatja több folyamat vagy szál egyidejű végrehajtását. |csoport=m}}
 
Általában egy folyamatot egy főprogramhoz társítunk, a ''gyermek'' ''(child)'' folyamatokat pedig minden mellékághoz, párhuzamos folyamathoz, amelyek az [[Aszinkronia (programozás)|aszinkron]] alprogramokhoz hasonlóan viselkednek. Azt mondjuk, hogy egy folyamatnak megvannak a ''saját'' erőforrásai, amelyek közül a program ''képe'' (a memóriában) egy ilyen erőforrás. A többprocesszoros rendszerekben azonban ''sok'' folyamat lefuthat vagy megoszthatja ugyanazt az [[Újrahívhatóság (számítástechnika)|újrahívható]] ''(reentrant)'' programot ugyanazon a helyen a memóriában, de azt mondjuk, hogy mindegyik folyamatnak megvan a saját ''képe''.
 
A folyamatokat gyakran „feladatoknak” nevezik a [[Beágyazott rendszer|beágyazott]] operációs rendszerekben. A „folyamat” (vagy feladat) jelentése „valami, ami időt vesz igénybe”, szemben a „memóriával”, amely „valami, ami helyet foglal el”.{{jegyzet |megj=A feladatok ''(tasks)'' és a folyamatok ''(processes)'' lényegében ugyanazon entitásra vonatkoznak. Bár némileg eltérő terminológiai történeteik vannak, szinonimákként használják őket. Manapság a folyamat kifejezést előnyben részesítik a feladathoz képest, kivéve, ha a többfeladatosságra ''(multitasking)'' utalnak, mivel a többfolyamatos ''(multiprocessing)'' alternatív kifejezést túlságosan könnyű összekeverni a többprocesszoros ''(multiprocessor)'' kifejezéssel (amely két vagy több processzorral rendelkező számítógépet jelent). |csoport=m}}
37. sor:
A fenti leírás vonatkozik mind az operációs rendszer által kezelt folyamatokra, mind azokra a folyamatokra, amelyeket [[folyamatkalkulus]] határoz meg.
 
Ha egy folyamat valami olyat kér, amelyre várnia kell, akkor blokkolva lesz. Ha a folyamat [[Folyamatállapot|blokkolt állapotban]] van, akkor lemezre cserélhető, de ez átlátható egy [[virtuális memória|virtuálismemória]] -rendszerben, ahol a folyamat memóriájának régiói valóban a lemezen vannak és nem a [[Memória (számítástechnika)#Elsődleges, másodlagos és harmadlagos memória|főmemóriában]]. Vegye figyelembe, hogy akár az aktív folyamatok/feladatok (végrehajtó programok) is cserélhetőek lemezre, ha az utóbbi időben nem használták őket. Nem kell a végrehajtó program összes részének a fizikai memóriában lennie, hogy a társított folyamat aktív legyen.
 
=== Folyamatállapotok ===
43. sor:
[[Fájl:Process_states.svg|jobbra|bélyegkép|300x300px|A különböző folyamatállapotok az állapotdiagramban megjelenítve, nyilakkal jelölve az állapotok közötti lehetséges átmeneteket]]
 
Egy operációs rendszer [[Rendszermag|rendszermagjánakrendszermag]]jának, amely lehetővé teszi a többfeladatosságot, szüksége van arra, hogy a folyamatoknak legyenek [[Folyamatállapot|bizonyos állapotai]]. Ezeknek az állapotoknak a nevei nincsenek szabványosítva, de hasonló funkcióval rendelkeznek.<ref name="OSC Chap4" />
 
* Először, a folyamatot „létrehozzuk” egy [[Memória (számítástechnika)#Elsődleges, másodlagos és harmadlagos memória|másodlagos tárolóeszközről]] ([[Merevlemez|merevlemez-meghajtó]], [[CD-ROM]] stb.) a [[Memória (számítástechnika)#Elsődleges, másodlagos és harmadlagos memória|főmemóriába]] töltéssel. Ezután a [[Ütemezés (számítástechnika)|folyamatütemező]] hozzárendeli a „várakozó” állapotot.
* Amíg a folyamat „várakozó” állapotban van, addig az [[Ütemezés (számítástechnika)|ütemező]] elvégzi az úgynevezett [[Kontextusváltás|kontextusváltástkontextusváltás]]t. A kontextusváltás betölti a folyamatot a processzorba, és az állapotot „futó”-ra változtatja, miközben az előzőleg „futó” folyamat „várakozó” állapotban van tárolva.
* Ha a „futó” állapotban levő folyamatnak meg kell várnia egy erőforrást (például várnia kell a felhasználói bemenetre vagy egy fájl megnyitására), akkor „blokkolt” állapotba kerül. A folyamat állapota visszaáll „várakozás”-ra amikor a folyamatnak már nem kell várnia (blokkolt állapotban).
* Amint a folyamat befejezi a végrehajtást vagy az operációs rendszer leállítja, nincsen már rá szükség. A folyamat azonnal eltávolításra vagy „befejezett” állapotba kerül. Eltávolításkor csak arra vár, hogy eltávolítsák a főmemóriából.<ref name="OSC Chap4" /><ref name="Stallings">{{cite book |last=Stallings |first=William |title=Operating Systems: internals and design principles |edition=5th |date=2005 |publisher=Prentice Hall |isbn=0-13-127837-1}} (particularly chapter 3, section 3.2, "process states", including figure 3.9 "process state transition with suspend states")</ref>
58. sor:
== Előzmények ==
 
Az 1960-as évek elején a számítógépes vezérlőszoftver a [[Monitorvezérlőmonitorvezérlő szoftver|monitorvezérlő szoftverekről]]ekről, például az [[IBM 7090/94 IBSYS|IBSYS]], a [[Végrehajtó vezérlőszoftver|végrehajtó vezérlőszoftverekkévégrehajtóvezérlő-szoftver]]ekké fejlődött. Az idő múlásával a számítógépek gyorsabban fejlődtek, miközben a [[Időosztás|számítógépes idő]] még mindig nem volt olcsó és nem volt teljes mértékben kihasználva; egy ilyen környezet lehetővé és szükségessé tette a [[Többfeladatosság|multiprogramozást]]. A multiprogramozás azt jelenti, hogy több program fut [[PárhuzamosságEgyidejűség (számítástechnika)|egyidejűleg]]. Eleinte egynél több program futott egy processzoron az [[Egyprocesszoros rendszer|egyprocesszoros]] számítógép-architektúra eredményeként, és szűkös és korlátozott hardver-erőforrásokon osztoztak; következésképpen aaz párhuzamosságegyidejűség ''soros'' jellegű volt. A későbbi [[Többprocesszoros feldolgozás|többprocesszoros rendszereken]] egyszerre több program futhat ''[[Párhuzamos számítástechnika|párhuzamosan]]''.
 
A programok utasításokat tartalmaznak a processzorok számára. Egy processzor egyszerre csak egy utasítást futtathat: lehetetlen több program futtatása egyszerre. Előfordulhat, hogy egy programnak valamilyen [[Rendszererőforrás|erőforrásra]], például bemeneti eszközre van szüksége, amely nagy késleltetéssel rendelkezik vagy egy program lassú műveletet indíthat, például kimenetet küldhet egy nyomtatóra. Ez azt eredményezné, hogy a processzor kihasználatlan marad („üresjárat”). Annak érdekében, hogy a processzor mindig el legyen foglalva, egy ilyen program végrehajtását leállítják, és az operációs rendszer átváltja a processzort egy másik program futtatására. A felhasználó számára úgy tűnik, hogy a programok egyszerre futnak (innen a „párhuzamos” kifejezés).
 
Röviddel ezután a „program” fogalmát kibővítették a „végrehajtó program és annak összefüggései” fogalmára. Megszületett egy folyamat koncepciója, amely az [[Újrahívhatóság (számítástechnika)|újrahívható kód]] feltalálásával szükségessé vált. A [[Szál (programozás)|szálak]] valamivel később jöttek. Azonban az olyan fogalmak megjelenésével, mint az [[időosztás]], a [[Számítógépszámítógép-hálózat|számítógépes hálózatok]]ok és a többprocesszoros [[közös memória|közösmemória]] -számítógépek, a régi „multiprogramozás” helyet adott a valódi [[többfeladatosság]] ''(multitasking)'', a többfolyamatos ''(multiprocessing)'' és később a [[Többszálútöbbszálú utasításvégrehajtás|többszálú]] utasításvégrehajtás ''(multithreading)'' számára.
 
== Megjegyzések ==
{{megjegyzések|oszlopok=1|csoport=m}}
 
== Hivatkozások ==
{{Hivatkozásokhivatkozások}}
 
{{jegyzetek|oszlopok=1}}
 
== Fordítás ==
 
* {{fordítás|en|Process (computing)|oldid=944508557}}
 
== További információk ==
 
* Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (2014). "[http://www.cs.wisc.edu/~remzi/OSTEP/ Operating Systems: Three Easy Pieces]". Arpaci-Dusseau Books. Relevant chapters: [http://www.cs.wisc.edu/~remzi/OSTEP/cpu-intro.pdf Abstraction: The Process] [http://www.cs.wisc.edu/~remzi/OSTEP/cpu-api.pdf The Process API]
* Gary D. Knott (1974) ''[http://doi.acm.org/10.1145/775280.775282 A proposal for certain process management and intercommunication primitives]'' ACM SIGOPS Operating Systems Review. Volume 8, Issue 4 (October 1974). pp.&nbsp;7 – 44
 
== Kapcsolódó oldalak ==
 
* [https://web.archive.org/web/20121214161709/http://www.processlibrary.com/ Online Resources For Process Information]
* [https://web.archive.org/web/20121207081026/http://file.net/ Computer Process Information Database and Forum]
* [https://osnote.space/process-models-with-process-creation-termination-methods.html Process Models with Process Creation & Termination Methods]
 
{{Párhuzamos számítástechnika}}
{{Operációs rendszer}}
 
[[Kategória:Számítástechnika]]