Sobes.tech
Middle

Comment la multitâche est-elle réalisée sur un appareil à cœur unique?

sobes.tech IA

Réponse de l'IA

Sur un appareil mono-cœur, le multithreading est simulé par le système d’exploitation à travers le mécanisme de quantum de temps et de changement de contexte.

  • Quantum de temps : Chaque thread se voit attribuer une petite tranche de temps du processeur.
  • Multitâche préemptive : Le système d’exploitation interrompt l’exécution d’un thread à la fin de son quantum ou lorsqu’il attend des ressources (par exemple, entrée/sortie).
  • Changement de contexte : L’état du thread actuel (registres du processeur, pointeur d’instruction, état de la mémoire) est sauvegardé, et l’état du thread suivant est chargé.
  • Illusion de parallélisme : Grâce à un changement rapide entre threads, on crée l’impression qu’ils s’exécutent en parallèle, alors qu’à tout moment seul un thread fonctionne sur le cœur.

iOS utilise des frameworks comme GCD (Grand Central Dispatch) et Operation Queues, qui abstraient ces mécanismes de bas niveau, simplifiant la gestion du multithreading pour le développeur. GCD utilise des pools de threads et gère automatiquement leur cycle de vie et leur planification sur les cœurs de processeur disponibles (même un seul).

Par exemple, avec GCD :

import Foundation

// Création d’une tâche asynchrone
DispatchQueue.global(qos: .userInitiated).async {
    // Code qui sera exécuté dans un thread en arrière-plan
    // Sur un appareil mono-cœur, ce code sera entrelacé
    // avec l’exécution d’autres threads/thread principal
    print("Exécuté dans un thread en arrière-plan")
}

// Le thread principal continue son exécution
print("Exécuté dans le thread principal")

Même sur un appareil mono-cœur, GCD placera cette tâche dans une file d’attente et lui attribuera des quanta de temps pour son exécution, en alternant entre elle et le thread principal (et d’autres threads, s’il y en a) pour créer l’illusion de parallélisme.