Többfeladatosság

A Wikipédiából, a szabad enciklopédiából

A többfeladatos ( angolul: multitask, multitasking) kifejezést a számítástechnikában operációs rendszerekre használják, melyek látszólag képesek egyszerre több programot (folyamatot vagy más néven processzt), programszálat futtatni. Ezek a folyamatok folyamatosan versengenek a CPU-ért, mely egy olyan erőforrás, amelyet egyszerre csak egy folyamat használhat. (Egyprocesszoros rendszer esetén természetesen.)

Az egyszerre történő végrehajtás azért csak látszólagos, mivel egy fizikai processzor (általános esetben) egy időben csak egyetlen utasítást képes végrehajtani, pontosabban egy adott időben egyetlen programfolyamat utasításait hajtja végre. Emiatt a látszólagosan egyszerre futó programok valójában felváltva, nagyon gyorsan váltakozva futnak: egy kicsit fut az egyik, majd megáll, és fut a másik, majd a harmadik, és egy idő múlva ismét az első. Ha ez a váltakozás elég gyors (akár másodpercenkénti több ezer) akkor látszólag a programok egyszerre futnak, mindegyikben „történik valami”.

A folyamatok együttműködése alapján megkülönböztetünk környezetváltásos, preemptív és kooperatív többfeladatos rendszert.

A környezetváltásos mód egy nagyon egyszerű feladatkezelés, melyben csak az előtérben lévő alkalmazás kap feldolgozási időt. Ilyenkor egy háttérben lévő feladat aktiválásához a felhasználónak előre kell hoznia a megfelelő ablakot.

Kooperatív esetben (például a Macintosh vagy a Windows 3.0 operációs rendszereknél) a több program futása úgy valósul meg, hogy minden program bizonyos időnként lemond a CPU használatáról, átengedve azt egy másiknak. Semmi sem kötelezi azonban arra, hogy ezt megtegye, tehát tetszőleges ideig lefoglalhatja az erőforrást, a többi folyamatot várakozásra kényszerítve.

A preemptív esetben az operációs rendszer magja, a kernel képes arra, hogy egy megadott idő után a CPU használati jogát elvegye az éppen futó folyamattól és egy várakozónak adja át.