İşletim sistemi her bir işlemi ayrı bir çekirdeğe ayırıyor mu?


15

Tamam dört çekirdekten kaçınmak için klasik argümanı biliyorum. Uygulama düzeyinde, çoğu uygulama birden fazla çekirdek için yazılmamıştır. Çoğu masaüstü yazılımının paralelleştirmeye bile ihtiyacı yoktur.

Ancak, işletim sistemi düzeyinde, işletim sisteminin çeşitli çekirdekler arasında süreçleri bölebileceği açıktır. Bu tek başına daha fazla çekirdek elde etmek için bir argüman olmaz mıydı? Bu pek çok durumda çok yardımcı olmuyor mu? Birkaç CPU yoğun görev alıyorsunuz - bu süreçlerin her biri çekirdeklerinin% 100'ünü kullanıyor olabilir, ancak yine de web'e göz atabilir ve son çekirdeğimdeki SuperUser hakkında sorular sorabilirim ... değil mi?


Bu soru ve cevapların temel akışı, tek bir işlemin tek iş parçacıklı olduğu varsayımıdır. Birçok durumda durum böyle değildir. Ve işlem tek iş parçacıklı olsa bile, birkaç sistem kitaplığı / dll kendi iş parçacıklarını ekler.
harrymc

Yanıtlar:


12

İşletim sistemi, tek bir iş parçacıklı işlemi birden çok çekirdeğe bölemez (bir uygulamanın çalıştığı çekirdeği değiştirebilir, ancak bu farklı bir sorudur), ancak her biri kendi çekirdeğinde birden çok işlem çalıştırabilir. Bu nedenle, evet, arka planda çalışan birden fazla işlemci yoğun uygulamanız varsa, muhtemelen diğer uygulamaları çalıştırmak için kullanabileceğiniz çok az şey yapıyor veya hiçbir şey yapmadan yedek bir çekirdeğiniz olacaktır.


Buradaki anahtar kelime ise birden fazla işlemci yoğun uygulamalara sahip - yani çoğu kullanıcı için nadir bir durum.
Gilles 'SO- kötü olmayı bırak'

Yanıtınız için teşekkürler. Evet, ikinci durum anlatmaya çalıştığım durum.
Doug T.

3

@ Heavyd'in cevabına eklemek için, işletim sisteminin hangi bölümlerinin paralel çalışacak ve hangilerinin paralel olmayacağını belirleme yeteneğine sahip olmaması. Bir program paralel çekirdekler üzerinde çalışacak şekilde tasarlanmamışsa, uygulama içinde aynı anda sıralı olarak çalışacak şekilde tasarlanmış yordamlar olabilir. Bu, her türlü soruna neden olabilir (2 rutin aynı bellek bloğunu kullanıyor ancak aynı anda çalışması amaçlanmamışsa).

İşletim sistemi birden çok işlem için birden çok çekirdek kullanabilir, çünkü bunu zaten yapar, ancak tek çekirdekli bir uygulamayı birden çok çekirdek üzerine yaymak her türlü beklenmedik davranışa neden olur.


Teşekkürler. Onu anlıyorum. Benim sorum kötü ifade edilmiş olabilir. Ayrı çekirdeklere işletim sistemi koyma işlemleri hakkında daha fazla soru sormak istedim. Bir şekilde sihirli bir şekilde tek iş parçacıklı işlem yayı çekirdeği yapmak değil.
Doug T.

3

Söz konusu olduğunda, bir işlemcinin% 1 kullanımda mı yoksa% 95 kullanımda mı olduğu (% 95'te kararlı olduğu ve zirvede olmadığı sürece), programların aynı hızda çalışacağı önemli değildir. % 100 isabet etmiyor. Kullanılmayan CPU döngüleri boşa gider.

Bu nedenle, Windows 7'de (uyumlu işlemcilerde) "çekirdek park etme" olarak bilinen ve elektrik tasarrufu sağlamak için bilgisayarınızda kullanılmayan çekirdekleri devre dışı bırakan bir teknoloji vardır.

Tek iş parçacıklı uygulamalar otomatik olarak alternatif çekirdeklere yerleştirilir - bunun arkasındaki teknolojiden emin değilim, ancak oldukça iyi çalıştığını biliyorum.


2

İlk duygularınız doğru - birden fazla çekirdeğe karşı olumsuz bir eğim var ve gerçekten hak ettiği kadar değil.

Çoğu kullanıcının masaüstü bilgisayarlarını sadece basit kelime işlemek için kullandığı günlerde, bir tartışma olabilir. Ancak bu günlerde, her biri kendi işlemlerinde (krom ve diğer bir deyişle sekmeler için işlem düzeyinde ayırma) tarayıcılar gibi şeyler ve web sayfalarındaki video kod çözücüleri ve anında olduğu gibi kolayca boşaltılabilen ekstra görevler gibi şeyler efektlerin oluşturulması css3, hatta tarayıcı bile çok daha fazla koç ve birkaç çekirdek için bir neden haklı çıkarabilir.

Buna ek olarak, bazı kullanıcıların bu bilgisayarda oyun oynaması veya garaj bandı, imovie, el freni, çoklu çekirdekler gibi araçlar kullanması büyük bir fayda sağlayabilir.

Başka bir çekirdeğin yararlı olması için bir çekirdeği maksimize etmeniz (yani tek bir çekirdeğin% 100 işlemci kullanımı) olduğunu varsaymak doğru değildir. Çünkü burada paralellikten bahsediyoruz. Bir CPU'da görev değiştirme, yığınını başka bir işleme geçirmeden önce genellikle bir dizi işlem gerçekleştirir. Tüm bu görevler cpu bağlantılı değildir, bu nedenle çekirdek kilitli olsa bile bir cpu ani görmezsiniz.

Temel olarak haklısınız, ancak en verimli çekirdek sayısı nedir? 2? 4? 12? Bu büyük olasılıkla kullanıcı alışkanlıklarına bağlı olacaktır ... Çoğu kullanıcı için bu 2-4 eğilimindedir, ama sadece tahmin ediyorum.

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.