Procesgebaseerde multitasking is een methode om meerdere taken (processen) gelijktijdig uit te voeren door elke taak zijn eigen onafhankelijke geheugenruimte te geven. Dit betekent dat elk proces zijn eigen set bronnen heeft, waaronder zijn eigen:
* Geheugenruimte: Geen twee processen delen dezelfde geheugenadressen. Als één proces crasht, heeft dit geen directe gevolgen voor de andere, omdat deze geïsoleerd zijn.
* Registreert: Elk proces heeft zijn eigen set CPU-registers.
* Bestandshandvatten: Elk proces beheert zijn eigen bestanden en interfereert niet direct met de bestandstoegang van andere processen.
De planner van het besturingssysteem schakelt vervolgens snel tussen deze processen, waardoor elk proces een stukje CPU-tijd krijgt (time-slicing). Hierdoor ontstaat de illusie dat meerdere programma's tegelijkertijd draaien, zelfs op een single-coreprocessor. Hoewel het parallel lijkt, is het in werkelijkheid een snelle, opeenvolgende uitvoering.
Voordelen van procesgebaseerde multitasking:
* Robuustheid: De isolatie van processen verbetert de systeemstabiliteit. Een crash in één proces heeft over het algemeen geen gevolgen voor andere.
* Beveiliging: Procesisolatie helpt voorkomen dat kwaadaardige programma's toegang krijgen tot het geheugen van andere processen of deze beschadigen.
* Bronnenbeheer: Het besturingssysteem kan voor elk proces eenvoudig bronnen toewijzen en beheren.
Nadelen van procesgebaseerde multitasking:
* Overhead: Het creëren en beheren van processen vereist aanzienlijke systeembronnen (geheugen en CPU-tijd). Contextwisseling (schakelen tussen processen) introduceert ook overhead.
* Communicatie tussen processen (IPC) kan complex zijn: Als processen gegevens moeten delen, zijn mechanismen zoals pipelines, sockets of gedeeld geheugen nodig, wat de complexiteit vergroot.
* Minder efficiënt voor sommige taken: Voor taken die een strakke coördinatie en veelvuldig delen van gegevens vereisen, kan procesgebaseerde multitasking minder efficiënt zijn dan threadgebaseerde multitasking.
In tegenstelling tot procesgebaseerde multitasking, threadgebaseerde multitasking gebruikt meerdere threads binnen één proces. Threads delen dezelfde geheugenruimte, waardoor communicatie eenvoudiger maar mogelijk minder robuust wordt. Moderne besturingssystemen maken vaak gebruik van een combinatie van proces- en threadgebaseerde multitasking om een evenwicht tussen robuustheid en efficiëntie te bereiken. |