Sobes.tech
Middle

Hoe wordt multitasking uitgevoerd op een apparaat met één kern?

sobes.tech AI

Antwoord van AI

Op een apparaat met één kern wordt multithreading geëmuleerd door het besturingssysteem via het mechanisme van tijdsquanta en contextwissel.

  • Tijdsquanta: Aan elke thread wordt een klein processor tijdsinterval toegewezen.
  • Preemptief multitasken: Het besturingssysteem onderbreekt de uitvoering van een thread na afloop van zijn tijdsquanta of wanneer het wacht op resources (bijvoorbeeld invoer/uitvoer).
  • Contextwissel: De toestand van de huidige thread (processor registers, instructiepointer, geheugenstatus) wordt opgeslagen, en de toestand van de volgende thread wordt geladen.
  • Illusie van parallelisme: Dankzij snelle wisselingen tussen threads ontstaat de indruk dat ze gelijktijdig worden uitgevoerd, hoewel op elk moment slechts één thread op de kern werkt.

iOS gebruikt frameworks zoals GCD (Grand Central Dispatch) en Operation Queues, die deze low-level mechanismen abstraheren en het beheer van multithreading voor ontwikkelaars vereenvoudigen. GCD gebruikt thread pools en beheert automatisch hun levenscyclus en planning op de beschikbare processor kernen (zelfs op één).

Bijvoorbeeld, met GCD:

import Foundation

// Creëer een asynchrone taak
DispatchQueue.global(qos: .userInitiated).async {
    // Code die op een achtergrond thread wordt uitgevoerd
    // Op een eendrachtig apparaat wordt deze code verweven
    // met de uitvoering van andere threads/hauptthread
    print("Uitgevoerd op achtergrond thread")
}

// De hoofdthread gaat door met uitvoeren
print("Uitgevoerd op hoofdthread")

Zelfs op een apparaat met één kern plaatst GCD deze taak in een wachtrij en wijst het tijdsquanta toe voor uitvoering, waarbij het tussen deze en de hoofdthread (en andere threads, indien aanwezig) wisselt om de illusie van parallelisme te creëren.