Sobes.tech
Middle

Yeganə nüvəli cihazda çoxlu iş parçacığı necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Yeganə nüvəyə malik cihazda çox iş parçacığı əməliyyat sistemi tərəfindən zaman kvantı və kontekst keçidi mexanizmi ilə təqlid edilir.

  • Zaman kvantı: Hər bir iş parçacığına kiçik bir prosessor vaxtı ayrılır.
  • Əvvəlcədən dayandırılan çox tapşırıq: Əməliyyat sistemi, iş vaxtı kvantı bitdikdə və ya resurslar (məsələn, giriş/çıxış) gözlənildikdə, iş parçacığının icrasını dayandırır.
  • Kontekst keçidi: Mövcud iş parçacığının vəziyyəti (prosessor qeydiyyatları, göstərici, yaddaş vəziyyəti) yadda saxlanılır və növbəti iş parçacığının vəziyyəti yüklənir.
  • Paralellik illüziyası: Tez-tez keçidlər sayəsində, onların paralel işlədiyi təəssüratı yaranır, halbuki hər zaman yalnız bir iş parçacığı prosessor üzərində işləyir.

iOS, bu aşağı səviyyəli mexanizmləri abstraksiya edən GCD (Grand Central Dispatch) və Operation Queues kimi çərçivələrdən istifadə edir, bu da çox iş parçacığını idarə etməyi proqramçı üçün sadələşdirir. GCD, iş parçacığı hovuzlarından istifadə edir və onların həyat dövrünü və planlamasını mövcud prosessor nüvələrində (hətta tək nüvədə) avtomatik idarə edir.

Məsələn, GCD istifadə edərək:

import Foundation

// Asinxron tapşırıq yaradılması
DispatchQueue.global(qos: .userInitiated).async {
    // Arxa plan iş parçacığında icra olunacaq kod
    // Yeganə nüvəli cihazda, bu kod digər iş parçacqları/əsas iş parçacığı ilə iç-içə olacaq
    print("Arxa plan iş parçacığında icra olunur")
}

// Əsas iş parçacığı icrasını davam etdirir
print("Əsas iş parçacığında icra olunur")

Hətta tək nüvəli cihazda belə, GCD bu tapşırığı növbəyə qoyacaq və onun icrası üçün zaman kvantı təyin edəcək, bu da paralellik illüziyasını yaratmaq üçün onun və əsas iş parçacığının (və digər iş parçacıkları, əgər varsa) arasında keçid etməyə imkan verir.