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.