Tek çekirdekli bir cihazda çoklu iş parçacığı nasıl gerçekleştirilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Tek çekirdekli bir cihazda, çok iş parçacığı işletim sistemi tarafından zaman dilimi ve bağlam değişimi mekanizmasıyla taklit edilir.
- Zaman dilimi: Her iş parçacığına küçük bir işlemci zamanı dilimi tahsis edilir.
- Zorlayıcı çok görevli çalışma: İşletim sistemi, bir iş parçacığının zaman dilimi sona erdiğinde veya kaynaklar (örneğin giriş/çıkış) beklenirken yürütmeyi durdurur.
- Bağlam değişimi: Mevcut iş parçacığının durumu (işlemci kayıtları, talimat göstergesi, bellek durumu) kaydedilir ve sonraki iş parçacığının durumu yüklenir.
- Paralellik yanılsaması: Hızlı geçişler sayesinde, iş parçacıkları paralelmiş gibi görünür, oysa herhangi bir anda yalnızca bir iş parçacığı işlemci üzerinde çalışır.
iOS, bu düşük seviyeli mekanizmaları soyutlayan GCD (Grand Central Dispatch) ve Operation Queues gibi framework'leri kullanır, bu da çok iş parçacığı yönetimini geliştirici için basitleştirir. GCD, iş parçacığı havuzları kullanır ve bunların yaşam döngüsünü ve planlamasını mevcut işlemci çekirdekleri üzerinde otomatik olarak yönetir (hatta tek çekirdekli cihazlarda bile).
Örneğin, GCD kullanarak:
import Foundation
// Asenkron bir görev oluşturma
DispatchQueue.global(qos: .userInitiated).async {
// Arka planda çalışacak kod
// Tek çekirdekli bir cihazda, bu kod diğer iş parçacıkları/hauptişlemiyle iç içe geçecektir
print("Arka planda çalışıyor")
}
// Ana iş parçacığı çalışmaya devam eder
print("Hauptişlemede çalışıyor")
Hatta tek çekirdekli bir cihazda bile, GCD bu görevi bir kuyruğa koyar ve yürütme için zaman dilimleri atar, böylece paralellik yanılsaması yaratmak için ona ve ana iş parçacığına (ve varsa diğer iş parçacıklarına) geçiş yapar.