logo

Multithreading-modellen in besturingssysteem

In dit artikel zullen we het multithreading-model in het besturingssysteem begrijpen.

Multithreading-model:

Dankzij multithreading kan de applicatie zijn taak in afzonderlijke threads verdelen. Bij multithreads kan hetzelfde proces of dezelfde taak worden uitgevoerd op basis van het aantal threads, of we kunnen zeggen dat er meer dan één thread is om de taak bij multithreading uit te voeren. Met het gebruik van multithreading kan multitasking worden bereikt.

Java 8
Multithreading-modellen in besturingssysteem

Het belangrijkste nadeel van systemen met enkele threading is dat er slechts één taak tegelijk kan worden uitgevoerd. Om het nadeel van deze enkele threading te ondervangen, is er multithreading waarmee meerdere taken kunnen worden uitgevoerd.

Bijvoorbeeld:

Multithreading-modellen in besturingssysteem

In het bovenstaande voorbeeld hebben client1, client2 en client3 zonder enige wachttijd toegang tot de webserver. Bij multithreading kunnen meerdere taken tegelijkertijd worden uitgevoerd.

In een besturingssysteem zijn threads onderverdeeld in threads op gebruikersniveau en threads op kernelniveau. Threads op gebruikersniveau verwerkten een onafhankelijke vorm boven de kernel en werden daardoor beheerd zonder enige kernelondersteuning. Aan de andere kant beheert het besturingssysteem rechtstreeks de threads op kernelniveau. Niettemin moet er een vorm van relatie bestaan ​​tussen threads op gebruikersniveau en op kernelniveau.

Er bestaan ​​drie gevestigde multithreading-modellen die deze relaties classificeren:

  • Veel-op-één multithreading-model
  • Eén-op-één multithreading-model
  • Veel tot veel multithreading-modellen

Veel-op-één multithreading-model:

Het veel-op-één-model wijst threads op veel gebruikersniveaus toe aan één kernelthread. Dit type relatie maakt een effectieve context-switching-omgeving mogelijk, die eenvoudig kan worden geïmplementeerd, zelfs op de eenvoudige kernel zonder threadondersteuning.

proloog taal

Het nadeel van dit model is dat, aangezien er op elk moment slechts één threadschema op kernelniveau is, dit model niet kan profiteren van de hardwareversnelling die wordt geboden door multithreaded processen of systemen met meerdere processors. Hierin wordt al het threadbeheer gedaan in de gebruikersruimte. Als er blokkering komt, blokkeert dit model het hele systeem.

Multithreading-modellen in besturingssysteem

In de bovenstaande afbeelding associeert het veel-op-één-model alle threads op gebruikersniveau met threads op enkel kernelniveau.

Python programmavoorbeelden

Eén-op-één multithreading-model

Het één-op-één-model wijst een enkele thread op gebruikersniveau toe aan een enkele thread op kernelniveau. Dit type relatie vergemakkelijkt het parallel uitvoeren van meerdere threads. Dit voordeel heeft echter zijn nadeel. Het genereren van elke nieuwe gebruikersthread moet het creëren van een overeenkomstige kernelthread omvatten die overhead veroorzaakt, wat de prestaties van het bovenliggende proces kan belemmeren. Windows-series en Linux-besturingssystemen proberen dit probleem aan te pakken door de groei van het aantal threads te beperken.

Multithreading-modellen in besturingssysteem

In de bovenstaande afbeelding associeert één model die ene thread op gebruikersniveau met een enkele thread op kernelniveau.

Veel-op-veel-model multithreading-model

In dit type model zijn er verschillende threads op gebruikersniveau en verschillende threads op kernelniveau. Het aantal gemaakte kernelthreads is afhankelijk van een bepaalde toepassing. De ontwikkelaar kan op beide niveaus evenveel threads maken, maar deze kunnen niet dezelfde zijn. Het veel-op-veel-model is een compromis tussen de andere twee modellen. In dit model kan de kernel, als een thread een blokkerende systeemaanroep doet, een andere thread plannen voor uitvoering. Bovendien is er door de introductie van meerdere threads geen sprake meer van complexiteit zoals bij de vorige modellen. Hoewel dit model de creatie van meerdere kernelthreads mogelijk maakt, kan dit model geen echte gelijktijdigheid bereiken. Dit komt omdat de kernel slechts één proces tegelijk kan plannen.

Multithreading-modellen in besturingssysteem

Veel te veel versies van het multithreading-model associëren verschillende threads op gebruikersniveau met dezelfde of veel minder verschillende threads op kernelniveau in de bovenstaande afbeelding.