İPLİKLER: Çekirdek iş parçacıkları mı? Çekirdek destekli iş parçacıkları mı? Kullanıcı düzeyi iş parçacıkları mı?


9

Bunlar arasındaki farkın ne olduğunu bilen var mı?

Bana öyle geliyor ki çekirdek konuları (sezgisel olarak) çekirdeği çalıştıran koda karşılık geliyor, ama diğer ikisi hakkında emin değilim ...

Ayrıca, çekirdek tüm iş parçacığı zamanlama / anahtarlama yaparken bir kütüphaneye eriştiğiniz için, pthreads standardı kullanıcı düzeyinde ve çekirdek destekli olarak kabul edilir mi?

Yanıtlar:


14

"Çekirdek iş parçacıkları" terimi, tamamen çekirdek alanında çalışan gerçek iş parçacıklarını ifade etmek için kullanılabilir veya çekirdek tarafından zamanlanan kullanıcı boşluğu iş parçacıklarını ifade edebilir. "Çekirdek destekli" iş parçacıkları terimi, kullanıcı alanında çalışan ancak çekirdek tarafından kolaylaştırılan iş parçacıkları anlamına gelir; bu, genellikle çekirdek tarafından zamanlanır.

"Kullanıcı seviyesi evreler" genellikle kullanıcı tarafından görülebilen evreler anlamına gelir. Yani, iş parçacığı standardınızın "iş parçacığı oluştur" işlevi olarak adlandırdığınızda oluşturduğunuz şeydir. Genel olarak, "kullanıcı seviyesi evre" terimi, sistem tarafından nasıl uygulandığına bakılmaksızın uygulama kodu tarafından oluşturulan bir evre anlamına gelir. Çekirdek desteği çok az olan veya hiç olmayan saf bir kullanıcı alanı iş parçacığı olabilir ya da çekirdek tarafından zamanlanmış bir iş parçacığı olabilir.

Pthreads standardı, saf kullanıcı alanı iş parçacıkları (çekirdeğin işlemi zamanladığı ve işlemin iş parçacıklarını zamanladığı yerlerde), çekirdek destekli iş parçacıkları (çekirdeğin iş parçacıklarını doğrudan zamanladığı yerlerde) veya karma bir yaklaşım (çekirdeğin zamanladığı yerlerde) uygulanabilir. çekirdek düzeyinde bir iş parçacığı, daha sonra kullanıcı alanında bir kullanıcı düzeyinde iş parçacığı zamanlar). Standart herhangi bir özel uygulama yöntemi talep etmemektedir. En yaygın uygulama, her kullanıcı düzeyindeki iş parçacığının çekirdek tarafından zamanlanan karşılık gelen iş parçacığına sahip olduğu 1'e 1 eşlemedir.


Linux'ta uygulama nasıl?
yati sagade

3
Bildiğim tüm modern (2.6 çekirdek veya üzeri) Linux sistemlerinde, sistemin varsayılan iş parçacığı uygulaması 1'e 1'dir, her kullanıcı düzeyi iş parçacığında karşılık gelen bir KSE (çekirdek zamanlama varlığı - temel olarak, Linux çekirdeği). 'Pthread_create' ile oluşturduğunuz iş parçacığı doğrudan çekirdek tarafından zamanlanır. Modern sistemler genellikle NPTL kullanır , eski sistemler LinuxThreads kullanır - her ikisi de 1'e 1'dir.
David Schwartz

"veya karma bir yaklaşım (burada çekirdek, kullanıcı boşluğunda kullanıcı düzeyinde bir iş parçacığı zamanlayan bir çekirdek düzeyi iş parçacığı zamanlar)." Hey David, bunu tekrar açıklayabilir misin? Neler olup bittiğinden emin değilim ... Bire bir eşleme derken, çekirdek düzeyinde ilerlemelerden bahsederken Konu Kontrol Bloklarına mı başvuruyorsunuz?
Karanlık Templar

By 1-to-1 Acımasız sen 'pthread_create' diyoruz her zaman, yeni bir bağlam çekirdek tarafından planlandığını oluşturulduğunu. Bir in melez bir yaklaşım, çekirdek tarafından zamanlanan bağlamları sayısı daha az oluşturulan iplik sayısı daha - çekirdek programları kütüphane programları diş bu bağlamda biri ve daha sonra uygulama tarafından oluşturulan parçacığı biri.
David Schwartz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.