Számítógépes multitasking - Computer multitasking

A modern asztali operációs rendszerek képesek nagyszámú különböző folyamat egyidejű kezelésére. Ez a képernyőkép azt mutatja, hogy a Linux Mint egyszerre fut Xfce asztali környezetben, Firefoxban , számológépben, a beépített naptárban, a Vim , a GIMP és a VLC médialejátszóban .
A Microsoft Windows 1.0 1 többfeladatos képességei 1985-ben jelentek meg, itt látható az MS-DOS Executive és a Calculator programok futtatása

A számítástechnikai , multitasking az egyidejű végrehajtása több feladatot (más néven folyamatok ) egy bizonyos ideig. Az új feladatok megszakíthatják a már megkezdett feladatokat, mielőtt befejezik, ahelyett, hogy várakoznának a végükre. Ennek eredményeképpen a számítógép több feladat szegmenseit hajtja végre összeillesztett módon, míg a feladatok közös feldolgozási erőforrásokat, például központi processzorokat (CPU) és fő memóriát használnak . A multitasking automatikusan megszakítja a futó programot, elmenti annak állapotát (részeredmények, memóriatartalom és számítógép -nyilvántartási tartalom), betölti egy másik program mentett állapotát, és átadja neki az irányítást. Ez a " kontextusváltás " kezdeményezhető meghatározott időközönként ( megelőző multitasking ), vagy a futó program kódolva jelezheti a felügyeleti szoftvernek, amikor megszakítható ( kooperatív multitasking ).

A multitasking nem igényel több feladat egyidejű, párhuzamos végrehajtását ; ehelyett egynél több feladat előrehaladását teszi lehetővé egy adott időtartam alatt. Még a többprocesszoros számítógépeken is a multitasking sokkal több feladat futtatását teszi lehetővé, mint amennyi CPU van.

A multitasking a számítógépes operációs rendszerek közös jellemzője. Lehetővé teszi a számítógép hardverének hatékonyabb használatát; Ha egy program valamilyen külső eseményre, például felhasználói bemenetre vagy perifériás bemeneti/kimeneti átvitelre vár , akkor a központi processzor továbbra is használható egy másik programmal. Az időmegosztó rendszerben több emberi operátor ugyanazt a processzort használja, mintha a használatukat szentelték volna, míg a színfalak mögött a számítógép sok felhasználót szolgál ki azáltal, hogy egyszerre több feladatot is végez. A párhuzamosan futó rendszerek, a feladat fut, amíg meg kell várni egy külső esemény, vagy amíg az operációs rendszer ütemező erőszakkal elcseréli futó feladatot ki a CPU-t. A valós idejű rendszerek, például az ipari robotok vezérlésére tervezett rendszerek, időben történő feldolgozást igényelnek; egyetlen processzor megosztható a gépmozgás, a kommunikáció és a felhasználói felület számításai között.

A többfeladatos operációs rendszerek gyakran tartalmaznak olyan intézkedéseket, amelyek megváltoztatják az egyes feladatok prioritását, hogy a fontos feladatok több processzoridőt kapjanak, mint a kevésbé jelentősek. Az operációs rendszertől függően egy feladat olyan nagy lehet, mint egy teljes alkalmazás, vagy kisebb szálakból állhat , amelyek a teljes program egy részét hajtják végre.

A többfeladatos operációs rendszerekkel való használatra szánt processzor tartalmazhat speciális hardvereket, amelyek biztonságosan támogatják a több feladatot, például memóriavédelmet , és védőgyűrűket, amelyek biztosítják, hogy a felügyeleti szoftvert ne rongálhassák meg és ne rombolhassák le a felhasználói módú programhibák.

A "multitasking" kifejezés nemzetközi kifejezéssé vált, mivel ugyanazt a szót használják sok más nyelven is, például németül, olaszul, hollandul, dánul és norvégul.

Multiprogramozás

A számítástechnika első napjaiban a CPU idő drága volt, a perifériák pedig nagyon lassúak. Amikor a számítógép olyan programot futtatott, amelyhez hozzá kellett férni egy perifériához, a központi processzornak (CPU) le kellett állnia a programutasítások végrehajtásával, miközben a periféria feldolgozta az adatokat. Ez általában nagyon hatástalan volt.

Az első számítógép, amely többprogramozási rendszert használt, a brit Leo III volt, J. Lyons and Co. tulajdonában . A kötegelt feldolgozás során számos különböző programot töltöttek be a számítógép memóriájába, és az első futni kezdett. Amikor az első program elérte a perifériára váró utasítást, a program kontextusa eltárolásra került, és a második program a memóriában lehetőséget kapott a futtatásra. A folyamat addig folytatódott, amíg az összes program le nem futott.

A multiprogramozás használatát fokozta a virtuális memória és a virtuális gép technológia érkezése , amely lehetővé tette az egyes programok számára, hogy úgy használják fel a memóriát és az operációs rendszer erőforrásait, mintha más, párhuzamosan futó programok gyakorlatilag nem léteznének.

A többprogramozás nem garantálja, hogy egy program időben fog futni. Valójában az első program akár órákig is működhet anélkül, hogy hozzá kellene férnie egy perifériához. Mivel egy felhasználó sem várakozott az interaktív terminálon, ez nem jelentett problémát: a felhasználók lenyújtott kártyacsomagot adtak át az üzemeltetőnek, és néhány órával később visszajöttek a nyomtatott eredményekért. A többprogramozás jelentősen csökkentette a várakozási időket, amikor több köteget dolgoztak fel.

Együttműködő multitasking

A korai multitasking rendszerek olyan alkalmazásokat használtak, amelyek önként átadták egymásnak az időt. Ezt a megközelítést, amelyet végül sok számítógépes operációs rendszer támogatott, ma kooperatív multitasking néven ismerik. Bár ma már ritkán használják nagyobb rendszerekben, kivéve bizonyos alkalmazásokat, például a CICS -t vagy a JES2 alrendszert, a kooperatív multitasking volt az egyetlen ütemezési séma, amelyet a Microsoft Windows és a Classic Mac OS használt, hogy lehetővé tegye több alkalmazás egyidejű futtatását. A kooperatív multitasking ma is használatos a RISC OS rendszereken.

Mivel a kooperatívan többfeladatos rendszer arra támaszkodik, hogy minden folyamat rendszeresen időt ad a rendszer más folyamatainak, egy rosszul megtervezett program akár teljes körű számítások elvégzésével, akár elfoglalt várakozással elfogyaszthatja magának a CPU -időt . mindkettő az egész rendszer lefagyását okozná . Szerver környezetben ez olyan veszély, amely elfogadhatatlanul törékennyé teszi az egész környezetet.

Megelőző multitasking

A megelőző többfeladatos munkavégzés lehetővé teszi a számítógépes rendszer számára, hogy megbízhatóbban garantálja az egyes folyamatok szabályos működési idejét. Ezenkívül lehetővé teszi a rendszer számára, hogy gyorsan kezelje a fontos külső eseményeket, például a bejövő adatokat, amelyek egy vagy másik folyamat azonnali figyelmét igényelhetik. Az operációs rendszereket úgy fejlesztették ki, hogy kihasználják ezeket a hardver képességeket, és több folyamatot futtassanak megelőzően. A preemptív ütemezés hajtották végre a PDP-6 monitor és Multics 1964, a OS / 360 MFT 1967, és a Unix 1969, és volt elérhető egyes operációs rendszerek a számítógépek olyan kicsi, mint a DEC PDP-8; ez egy alapvető jellemzője Unix-szerű operációs rendszerek, mint például a Linux , Solaris és a BSD annak származékai , valamint a modern Windows-verziók.

Bármikor, a folyamatok két kategóriába sorolhatók: azok, amelyek bemenetre vagy kimenetre várnak (" I/O -kötés "), és azok, amelyek teljes mértékben kihasználják a CPU -t (" CPU -kötött "). A primitív rendszerekben a szoftver is gyakran „ poll ” vagy „ busywait ” várva várt adatbevitel (mint például a lemez, a billentyűzet vagy a hálózat bemeneti). Ez idő alatt a rendszer nem végzett hasznos munkát. A megszakítások és a megelőző multitasking megjelenésével az I/O -hoz kötött folyamatok "blokkolhatók", vagy felfüggeszthetők a szükséges adatok megérkezéséig, lehetővé téve más folyamatok számára a CPU kihasználását. Mivel a kért adatok megérkezése megszakítást eredményezne, a blokkolt folyamatok időben garantálhatják a végrehajtást.

Az otthoni felhasználók számára elérhető legkorábbi megelőző multitasking operációs rendszer a Sinclair QDOS volt a Sinclair QL -ben, 1984 -ben, de nagyon kevesen vásárolták meg a gépet. A következő évben megjelent Commodore's Amiga volt az első kereskedelmi sikerű otthoni számítógép, amely ezt a technológiát használta, és multimédiás képességei a korabeli, többfeladatos személyi számítógépek egyértelmű ősei. A Microsoft a kilencvenes évek elején a megelőző multitasking -et a zászlóshajó -operációs rendszerük alapvető jellemzőjévé tette a Windows NT 3.1 , majd a Windows 95 fejlesztésekor . Később az Apple Macintosh rendszeren átvette a Mac OS X , amely Unix-szerű operációs rendszerként megelőző multitaskingot használ minden natív alkalmazáshoz.

Hasonló modellt használnak a Windows 9x rendszerben és a Windows NT családban , ahol a natív 32 bites alkalmazásokat megelőzően többfeladatos feladatokkal látják el. 64 bites Windows, mind a x86-64 és Itanium architektúra, nem támogatják a régebbi 16 bites alkalmazások, és ezáltal elővásárlási multitasking összes támogatott alkalmazások.

Valós idő

A többfeladatos munkavégzés másik oka a valós idejű számítástechnikai rendszerek tervezése volt , ahol számos, esetleg független külső tevékenységre van szükség, amelyeket egyetlen processzoros rendszerrel kell irányítani. Az ilyen rendszerekben egy hierarchikus megszakítási rendszer párosul a folyamatok priorizálásával annak biztosítása érdekében, hogy a kulcstevékenységek nagyobb részt kapjanak a rendelkezésre álló folyamatidőben .

Többszálú

Mivel a multitasking nagymértékben javította a számítógépek teljesítményét, a programozók elkezdték az alkalmazásokat együttműködő folyamatok készleteiként megvalósítani (például egy folyamat bemeneti adatokat gyűjt, egy folyamat bemeneti adatokat dolgoz fel, egy folyamat kiírja az eredményeket a lemezre). Ehhez azonban szükség volt bizonyos eszközökre, amelyek lehetővé tették a folyamatok hatékony adatcseréjét.

A szálak abból a gondolatból születtek, hogy az együttműködő folyamatok leghatékonyabb módja az adatok cseréjére a teljes memóriaterület megosztása. Így a szálak ténylegesen olyan folyamatok, amelyek azonos memóriakontextusban futnak, és más erőforrásokat is megosztanak szülői folyamataikkal , például nyitott fájlokkal. A szálakat könnyű folyamatoknak nevezik, mivel a szálak közötti váltás nem jár a memória kontextusának megváltoztatásával.

Míg a szálakat megelőzően ütemezik, egyes operációs rendszerek egy változatot biztosítanak a szálaknak, az úgynevezett szálaknak , amelyek együttműködve vannak ütemezve. Operációs rendszereken, amelyek nem biztosítanak szálakat, az alkalmazás megvalósíthatja saját szálait a munkavállalói funkciók ismételt hívásaival. A szálak még a szálaknál is könnyebbek, és valamivel könnyebben programozhatók, bár hajlamosak elveszíteni a szálak előnyeit részben vagy egészben a több processzoros gépeken .

Egyes rendszerek közvetlenül támogatják a többszálú hardvereszközöket .

Memóriavédelem

Minden multitasking rendszerhez elengedhetetlen, hogy biztonságosan és hatékonyan osszák meg a hozzáférést a rendszer erőforrásaihoz. A memóriához való hozzáférést szigorúan kezelni kell annak biztosítása érdekében, hogy egyetlen folyamat sem tud véletlenül vagy szándékosan olvasni vagy írni a folyamat címterületén kívüli memóriahelyekre. Ez az általános rendszer -stabilitás és az adatok integritása, valamint az adatok biztonsága érdekében történik.

Általánosságban elmondható, hogy a memóriahozzáférés kezelése az operációs rendszer kerneljének feladata, támogató funkciókat biztosító hardvermechanizmusokkal, például memóriakezelő egységgel (MMU) kombinálva . Ha egy folyamat megpróbál hozzáférni a memóriaterületén kívüli memóriahelyhez, az MMU megtagadja a kérést, és jelzi a kernelt, hogy tegye meg a megfelelő műveleteket; ez általában a jogsértő folyamat erőszakos leállítását eredményezi. A szoftvertől és a kernel kialakításától, valamint a kérdéses konkrét hibától függően a felhasználó hozzáférési hiba hibaüzenetet kaphat, például "szegmentációs hiba".

Egy jól megtervezett és helyesen megvalósított többfeladatos rendszerben egy adott folyamat soha nem tud közvetlenül hozzáférni egy másik folyamathoz tartozó memóriához. Ez alól kivétel a megosztott memória; például a System V folyamatok közötti kommunikációs mechanizmusában a kernel kiosztja a memóriát, hogy több folyamat kölcsönösen megoszthassa. Az ilyen szolgáltatásokat gyakran használják az adatbázis -kezelő szoftverek, például a PostgreSQL.

A nem megfelelő memóriavédelmi mechanizmusok, akár a kialakításuk hibái, akár a rossz megvalósítások miatt, biztonsági réseket tesznek lehetővé, amelyeket rosszindulatú szoftverek potenciálisan kihasználhatnak.

Memóriacsere

A swap fájl vagy swap partíció használata az operációs rendszer egyik módja annak, hogy több memóriát biztosítson, mint amennyi fizikailag rendelkezésre áll, ha az elsődleges memória egy részét másodlagos tárolóban tartja . Míg a multitasking és a memóriacsere két egymástól teljesen független technika, nagyon gyakran együtt használják őket, mivel a memóriacsere lehetővé teszi több feladat egyidejű betöltését. Általában a többfeladatos rendszer lehetővé teszi egy másik folyamat futtatását, amikor a futó folyamat eléri azt a pontot, ahol meg kell várnia, amíg a memória egy része újra betöltődik a másodlagos tárolóból.

Programozás

A teljesen független folyamatokat nem sok probléma programozni többfeladatos környezetben. A többfeladatos rendszerek bonyolultságának nagy része abból adódik, hogy meg kell osztani a számítógépes erőforrásokat a feladatok között, és szinkronizálni kell az együttműködő feladatok működését.

Különböző párhuzamos számítási technikákat alkalmaznak annak elkerülésére, hogy ugyanazon erőforráshoz több feladat is hozzáférjen.

A nagyobb rendszereket néha központi processzor (ok) kal és néhány I/O processzorral építették fel , ami egyfajta aszimmetrikus többprocesszoros eljárás .

Az évek során a multitasking rendszereket finomították. A modern operációs rendszerek általában részletes mechanizmusokat tartalmaznak a folyamatok priorizálására, míg a szimmetrikus többfeldolgozás új bonyolultságokat és képességeket hozott.

Lásd még

Hivatkozások