2010-10-12 3 views
7

Tek çekirdekli bir işlemci üzerinde içerik değiştirme yaparken, sorumlu kod, iş parçacıklarının değiştirilmesini sağlayan tek CPU üzerinde yürütülür.Çok çekirdekli bir işlemcide iş parçacıklarının bağlam geçişi nasıl yapılır?

Ancak, birden çok CPU'umuz olduğunda bu nasıl yapılır? Tüm bağımlı CPU'ların tüm bağlam değiştirmelerini yapan bir ana CPU var mı? Her bir CPU kendi içerik değişiminden sorumludur? Eğer öyleyse, anahtarlama senkronize edilir, böylece iki işlemci aynı iş parçacığını yürütmezler mi? Yoksa başka bir mekanizma var mı?

cevap

6

Çekirdek çok iş parçacıklı. Herhangi bir çekirdeğe uygulanabilir. Bir çekirdek iplik değiştirmeye ihtiyaç duyduğunda, yürütmesi gereken bir sonraki parçayı seçmek için sorumlu olan çekirdeğin bir kısmını çağırır.

Çekirdek çok iş parçacıklı; diğer bir deyişle, birden çok çekirdek üzerinde aynı anda güvenli bir şekilde yürütmek için yazılmıştır. Bu şekilde, sadece bir CPU herhangi bir iş parçacığı çalıştırır, çünkü kod, birden fazla CPU eşzamanlı olarak yeniden zamanlanırsa, doğru sonuç ortaya çıkar.

+0

Bu kısa bilgi için teşekkürler, ama bilgilendirici, cevap. – gablin

4

CPU'nun bağlam anahtarlaması yapmıyor. İşletim Sistemleri

Özünde, bir işletim sistemi bir CPU çekirdek yeni bağlam (kayıtlar, hafıza eşlemeler, vs.) yüklenmesi ile bir içerik anahtarı çalıştırır. Konular, bu bağlamların kaydedilebileceği bir OS yapısıdır. Bu nedenle, işletim sisteminden CPU içeriğini yüklemek için işletimsiz bir iş parçacığı seçmek de sorumludur.

İşletim sistemi çalışan bir iş parçacığı seçseydi, iki çekirdek aynı iş parçacığını çalıştırmayı denerdi. Bu, aynı belleği paylaşacakları için karışıklığa yol açacak ve tek bir iş parçacığının kendisiyle paralel olarak çalışmayı beklemeyecek (!) Bu yüzden hiçbir işletim sistemi böyle bir şey yapmayacaktı.

+2

Hiçbir zaman CPU'nun bağlam değiştirmeyi gerçekleştirmediğini söylemedim. Bağlam anahtarını yapmak için sorumlu olan (kodlayıcı) (CPU) bir CPU üzerinde yürütüldüğünü söyledim. Ama birden fazla CPU'umuz olduğunda bu nasıl ele alınır? İçerik anahtarlama kodu _all_ CPU'larda mı yürütülüyor? – gablin

0

İki işlem P1 ve P2 olduğunu varsayalım. Yaklaşık Adım Sıraları Bu gibi olmalıdır.

Not, Sadece CPU İçerik Anahtarını gerçekleştirmek için, tümceleri OS'ye gönderir.