Sobes.tech
Middle

Ako sa realizuje viacvláknové spracovanie na zariadení s jedným jadrom?

sobes.tech AI

Odpoveď od AI

Na zariadení s jedným jadrom je viacvláknové spracovanie emulované operačným systémom pomocou mechanizmu časového kvanta a prepínania kontextu.

  • Časové kvantum: Každému vláknu je pridelený malý časový úsek procesora.
  • Predbežné prerušované multitasking: Operačný systém prerušuje vykonávanie vlákna po uplynutí jeho kvanta alebo pri čakaní na zdroje (napríklad vstup/výstup).
  • Prepínanie kontextu: Stav aktuálneho vlákna (procesorové registre, ukazovateľ inštrukcií, stav pamäte) sa uloží a načíta sa stav nasledujúceho vlákna.
  • Ilúzia paralelného behu: Vďaka rýchlemu prepínaniu medzi vláknami vzniká dojem, že bežia paralelne, hoci v danom momente na jadre pracuje iba jedno vlákno.

iOS používa rámce ako GCD (Grand Central Dispatch) a Operation Queues, ktoré abstrahujú tieto nízkoúrovňové mechanizmy a zjednodušujú správu viacvláknového spracovania pre vývojára. GCD využíva pooly vlákien a automaticky riadi ich životný cyklus a plánovanie na dostupných procesorových jadrách (aj na jednom).

Napríklad, pomocou GCD:

import Foundation

// Vytvorenie asynchrónnej úlohy
DispatchQueue.global(qos: .userInitiated).async {
    // Kód, ktorý bude vykonávaný na pozadí
    // Na jednojadrovom zariadení bude tento kód preplietaný
    // s vykonávaním iných vlákien/hlavného vlákna
    print("Vykonáva sa na pozadí")
}

// Hlavné vlákno pokračuje vo vykonávaní
print("Vykonáva sa v hlavnom vlákne")

Aj na jednojadrovom zariadení GCD umiestni túto úlohu do fronty a pridelí jej časové kvantá na vykonanie, striedajúc ju s hlavným vláknom (a ďalšími vláknami, ak existujú), čím vytvára ilúziu paralelnosti.