Fiber'lar ve kullanıcı düzeyi iş parçacıkları
Windows'ta her libSceFiber fiber'ı gerçek bir Windows fiber'ıdır; bu yüzden bir geçiş misafir yazmaçlarını ve misafir yığınını korur. Kullanıcı düzeyi iş parçacıkları aynı pthread yolundan başlar.
10 Ekim 2026 tarihine kadarki depo notları
Bir fiber neden boş bir işlem olamaz
Misafir kodu yerel makine kodu olarak çalışır. Bir fiber geçişi, ana sistem ve misafir çerçevelerinin karıştığı yığında tam olarak aynı yazmaçlarla ve aynı yığınla devam etmelidir. sceFiberSwitch'ten geçiş yapmadan başarı döndürmek, oyunun yanlış yığında devam etmesine ve iki tarafı da bozmasına yol açardı.
PS5PCEM, başlatılan her misafir fiber'ını bir Windows fiber'ıyla destekler. sceFiberRun, sceFiberSwitch ve sceFiberReturnToThread bu mekanizmayı kullanır. sceFiberRun'ı çağıran iş parçacığı kök fiber'dır. 128 baytlık genel SceFiber kaydı ABI imzalarını, durumu, giriş bağımsız değişkenini, adı ve çağıranın sağladığı bağlam aralığını tutar.
Yığın kimin
Oyun bir bağlam arabelleği sağlar ve bu arabellek ABI nesnesine kaydedilir. Gerçek yığının sahibi Windows'tur. Oyunun arabelleğini yerel bir Windows yığını olarak kullanmak, işletim sisteminin gerektirdiği koruma sayfasını ve geri sarma kayıtlarını atlardı. Sistem yazılımı kaydının beklediği en küçük bağlam yine de hizalama ve başlangıç ile bitiş imzalarıyla birlikte denetlenir.
sceFiberGetSelf, sonlandırma, iş parçacıkları arası sahiplik denetimleri ve çalışma zamanı sıfırlaması uygulandı. Arka uç Windows x86-64 yerel yürütme hedefinde bulunur. Diğer ana sistemler emülatörün geri kalanını derleyebilir; bu geçiş yolu orada yoktur.
Kullanıcı düzeyi iş parçacıkları
libSceUlt başlatma ve sonlandırma başarılı olur; böylece bir oyunun iş sistemi başlayabilir. Çalışma zamanları, bekleme kuyrukları, kuyruk verisi havuzları, mutex'ler, semaforlar ve kuyruklar, oyunun ayırdığı nesnelere göre anahtarlanan ana sistem tarafı durum tutar. İş öğelerinin kendisi mevcut pthread yolundan başlar. Çalışma alanı boyutu sorguları bu oluşturmaların beklediği hizalanmış boyutları döndürür.
Çekirdek kullanıcı kenarı olay kuyrukları, pthread eşzamanlamasıyla aynı diziyi bilen beklemeyi paylaşır. VideoOut filtresi -13 ve grafik filtresi -14 bu kuyruğu kullanır ve her kaydın tanımlayıcısını ve kullanıcı verisini korur. ULT bir zamanlama yapıştırıcısıdır. İkinci bir CPU emülatörü eklemez.
Uygulananlar
- sceFiberRun, sceFiberSwitch ve sceFiberReturnToThread için Windows fiber'ları.
- ABI imzaları, sahiplik denetimleri ve koruma sayfalı, ana sisteme ait bir yığın.
- ULT başlatma, kuyruklar, mutex'ler, semaforlar ve pthread destekli iş öğeleri.
- VideoOut ve grafik tamamlamasıyla paylaşılan kullanıcı kenarı olay kuyrukları.
Hâlâ eksik olanlar
- Fiber geçişi Windows x86-64'te var. Diğer ana sistem işletim sistemleri misafir kodunu yerel olarak çalıştırmaz.
- Bir fiber, önleyici olarak zamanlanan bir donanım iş parçacığı değildir.
- ULT, iş gövdeleri için ayrı bir yorumlayıcı uygulamaz.
İlgili mekanizmalar
Bu sayfalar nedir