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

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
aNincs szerkesztési összefoglaló
Címkék: Vizuális szerkesztés Mobilról szerkesztett Mobil web szerkesztés
aNincs szerkesztési összefoglaló
5. sor:
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.
 
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 rendszer erőforrásokrendszererő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 végrehajtott 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 végrehajtanielvé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őmegosztásidőosztás]]. Az időmegosztásidőosztás olyan módszer, amely lehetővé teszi az interaktív felhasználói alkalmazásokra való magas reagálást. Az időmegosztóidőosztó rendszerekben a [[Kontextusváltás|kontextusváltásokat]] 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ág (számítástechnika)|párhuzamosságnak]] 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 [[Folyamatok közötti kommunikáció|folyamatok közötti közvetlen kommunikációt]], szigorúan közvetített és ellenőrzött folyamatok közötti kommunikációs funkciókat biztosítva.
15. sor:
Általában véve egy számítógépes rendszer folyamata a következő erőforrásokból áll:
 
* 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ók]] ([[Unix]] terminológia) vagy [[Fogantyú (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űveletekmű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 a fizikai memória cí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ő blokk|folyamatvezérlő blokkoknak]] 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 [[Cséplés (számítástechnika)|cséplés]]). Az operációs rendszer mechanizmusokat is biztosíthat a [[Folyamatok közötti kommunikáció|folyamatok közötti kommunikáció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 a [[Párhuzamos számítástechnika|párhuzamosan]]) [[Végrehajtás (számítástechnika)|hajtaná végre]], de valójában csak egy folyamatfolyamatot tud végrehajtani egy időben egyetlen [[Central processing unit|processzoron]] (kivéve, ha a processzor több maggal rendelkezik, akkor [[Szál (programozás)|többszálú]] vagy más hasonló technológiákat lehet használni).{{Efnefn|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 [[Egyidejű többszálúság|egyidejű többszálúságnak]] hívnak (az [[Intel]] [[Hyper-threading]] technológiájában használják), szimulálhatja több folyamat vagy szál egyidejű végrehajtását.}}
 
Általában egy folyamatot egy főprogramhoz társítunk, a ''gyermek'' (''child'') folyamatokat pedig minden spin-off-hozmellékághoz, párhuzamos folyamathoz, amelyek az [[Aszinkronia (programozás)|aszinkron]] alprogramokhoz hasonlóan viselkednek. Azt mondjákmondjuk, 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 állítjákmondjuk, 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”.'''{{Efnefn|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öbbfolyamatosságtö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).}}'''
 
A fenti leírás vonatkozik mind az operációs rendszer által kezelt folyamatokra, mind azokra a folyamatokra, amelyeket a [[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 transzparens egy [[virtuális memória]] rendszerben, ahol a folyamat memória 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ó program) is cserélhetőek lemezre, ha az utóbbi időben nem használták őket. A végrehajtó program és annak összes részének nem kell a fizikai memóriában lennie, hogy a társított folyamat aktív legyen.
46. sor:
 
== Folyamatok közötti kommunikáció ==
Amikor a folyamatok kommunikálnak egymással, akkor azt IPC-nek (''inter-process communication'') hívják. A folyamatoknak gyakran kommunikálniuk kell, például egy héj csővezetékben, az első folyamat kimenetének át kell jutnia a másodikhoz, és így tovább a többi folyamathoz. Előnyös egy jól strukturált módon, nem használva megszakításokat.
 
Lehetséges, hogy a két folyamat különböző gépeken fut. Az operációs rendszer (OS) folyamatonként különbözhet, ezért szükség van néhányegy vagy több közvetítőre (ún. [[Protokoll (informatika)|protokollokra]]).
 
== Előzmények ==
Az 1960-as évek elején a számítógépes vezérlőszoftver a [[Monitorvezérlő szoftver|monitorvezérlő szoftverekről]], például az [[IBM 7090/94 IBSYS|IBSYS]], a [[Végrehajtó vezérlőszoftver|végrehajtó vezérlőszoftverekké]] fejlődött. Az idő múlásával a számítógépek gyorsabban fejlődtek, miközben a [[IdőmegosztásIdő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é tette és szükségessé tette a [[Többfeladatosság|multiprogramozást]]. A multiprogramozás azt jelenti, hogy több program fut [[Párhuzamosság (informatika)|egyidejűleg]]. Eleinte egynél több program futott egy processzoron a [[Egyprocesszoros rendszer|uniprocesszoros]] számítógépes architektúra eredményeként, és szűkös és korlátozott hardver-erőforrásokon osztoztak; következésképpen a párhuzamosság ''soros'' jellegű volt. A későbbi [[Többfolyamatosság|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 [[Rendszer erőforrásRendszererő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őmegosztásidőosztás]], a [[Számítógép-hálózat|számítógépes hálózatok]] és a többprocesszoros [[megosztott memória]] számítógépek, a régi „multiprogramozás” helyet adott a valódi [[többfeladatosság]] (''multitasking''), a többfolyamatosságnaktöbbfolyamatosság (''multiprocessing'') és később a [[Szál (programozás)|többszálúságnaktöbbszálúság]] (''multithreading'') számára.
 
== Jegyzetek ==
{{notelist|30em}}
 
== Források ==
{{reflist|30em}}
 
== További információk ==
70. sor:
== Külső oldalak ==
 
* {{Commonscatinline}}
* [http://www.processlibrary.com/ Online Resources For Process Information]
* [http://www.file.net/ Computer Process Information Database and Forum]