Como é que a multitarefa é realizada num dispositivo com um único núcleo?
sobes.tech IA
Resposta da IA
Num dispositivo com um único núcleo, a multithreading é emulada pelo sistema operativo através do mecanismo de quantum de tempo e troca de contexto.
- Quantum de tempo: Cada thread recebe um pequeno intervalo de tempo do processador.
- Multitarefa preemptiva: O sistema operativo interrompe a execução de um thread ao terminar o seu quantum de tempo ou quando espera por recursos (por exemplo, entrada/saída).
- Troca de contexto: O estado do thread atual (registos do processador, ponteiro de instrução, estado da memória) é guardado, e o estado do próximo thread é carregado.
- Ilusão de paralelismo: Graças a uma troca rápida entre threads, cria-se a impressão de que eles estão a executar em paralelo, embora em qualquer momento apenas um thread esteja a trabalhar no núcleo.
O iOS usa frameworks como GCD (Grand Central Dispatch) e Operation Queues, que abstraem estes mecanismos de baixo nível, simplificando a gestão de multithreading para o programador. O GCD usa pools de threads e gere automaticamente o seu ciclo de vida e planeamento nos núcleos de processador disponíveis (mesmo num só).
Por exemplo, usando GCD:
import Foundation
// Criação de uma tarefa assíncrona
DispatchQueue.global(qos: .userInitiated).async {
// Código que será executado numa thread de fundo
// Num dispositivo de um único núcleo, este código será entrelaçado
// com a execução de outros threads/thread principal
print("A ser executado na thread de fundo")
}
// A thread principal continua a execução
print("A ser executado na thread principal")
Mesmo num dispositivo de um único núcleo, o GCD colocará esta tarefa numa fila e atribuir-lhe-á quanta de tempo para execução, alternando entre ela e a thread principal (e outras threads, se existirem) para criar a ilusão de paralelismo.