Sobes.tech
Middle

Jak je na zařízení s jedním jádrem realizováno vícenásobné zpracování?

sobes.tech AI

Odpověď od AI

Na zařízení s jedním jádrem je vícevláknové zpracování napodobováno operačním systémem pomocí mechanismu časového kvanta a přepínání kontextu.

  • Časové kvantum: Každému vláknu je přidělen malý časový úsek procesoru.
  • Předčasné přerušení víceúloh: Operační systém přeruší vykonávání vlákna po uplynutí jeho časového kvanta nebo při čekání na zdroje (například vstup/výstup).
  • Přepínání kontextu: Stav aktuálního vlákna (procesorové registry, ukazatel instrukcí, stav paměti) je uložen a načten stav následujícího vlákna.
  • Iluze paralelního běhu: Díky rychlým přepínáním mezi vlákny vzniká dojem, že běží paralelně, ačkoliv v daném okamžiku pracuje na jádře pouze jedno vlákno.

iOS používá frameworky jako GCD (Grand Central Dispatch) a Operation Queues, které abstrahují tyto nízkoúrovňové mechanismy a zjednodušují správu vícevláknového zpracování pro vývojáře. GCD využívá pooly vláken a automaticky řídí jejich životní cyklus a plánování na dostupných procesorových jádrech (i na jednom).

Například s GCD:

import Foundation

// Vytvoření asynchronického úkolu
DispatchQueue.global(qos: .userInitiated).async {
    // Kód, který poběží na pozadí
    // Na jednojádrovém zařízení bude tento kód proplétán
    // s vykonáváním kódu v jiných vláknech/hlavním vlákně
    print("Běží na pozadí")
}

// Hlavní vlákno pokračuje ve vykonávání
print("Běží na hlavním vlákně")

I na jednom jádře GCD zařadí tento úkol do fronty a přidělí mu časové kvantum k provedení, střídajíc ho s hlavním vláknem (a dalšími vlákny, pokud existují), čímž vytváří iluzi paralelního běhu.