Eşzamanlılık Çalışma Zamanını Diğer Eşzamanlılık Modelleriyle Karşılaştırma
Bu belgede Eşzamanlılık Çalışma Zamanı'nın özellikleri ve programlama modelleri ile diğer teknolojiler arasındaki farklar açıklanmaktadır. Eşzamanlılık Çalışma Zamanı'nın avantajlarını diğer programlama modellerinin avantajlarıyla karşılaştırarak, uygulamalarınızın gereksinimlerini en iyi karşılayan teknolojiyi seçebilirsiniz.
Şu anda Windows iş parçacığı havuzu veya OpenMP gibi başka bir programlama modeli kullanıyorsanız Eşzamanlılık Çalışma Zamanı'na geçişin uygun olabileceği durumlar vardır. Örneğin, OpenMP'den Eşzamanlılık Çalışma Zamanına Geçiş konusu , OpenMP'den Eşzamanlılık Çalışma Zamanı'na ne zaman geçirilebileceğini açıklar. Ancak, uygulama performansından ve geçerli hata ayıklama desteğiden memnunsanız geçiş gerekli değildir.
Başka bir eşzamanlılık modeli kullanan mevcut uygulamanızı tamamlamak için Eşzamanlılık Çalışma Zamanı'nın özelliklerini ve üretkenlik avantajlarını kullanabilirsiniz. Eşzamanlılık Çalışma Zamanı, birden çok görev zamanlayıcı aynı bilgi işlem kaynakları için rekabet ettiğinde yük dengelemeyi garanti edemez. Ancak, iş yükleri çakışmadığında bu etki çok az olur.
Bölümler
Preemptive Scheduling ile Kooperatif Zamanlama karşılaştırması
Eşzamanlılık Çalışma Zamanı ile Windows API'sini karşılaştırma
Preemptive Scheduling ile Kooperatif Zamanlama karşılaştırması
Önleyici model ve işbirliğine dayalı zamanlama modelleri, işlemciler veya donanım iş parçacıkları gibi bilgi işlem kaynaklarını paylaşmak için birden çok görevi etkinleştirmenin iki yaygın yolu vardır.
Preemptive ve Kooperatif Zamanlama
Önleyici zamanlama , her göreve belirli bir süre için bir bilgi işlem kaynağına özel erişim sağlayan ve ardından başka bir göreve geçiş yapan hepsini bir kez deneme, öncelik tabanlı bir mekanizmadır. Önleyici zamanlama, Windows gibi çok görevli işletim sistemlerinde yaygındır. İşbirliğine dayalı zamanlama, görev bitene kadar veya görev kaynağa erişimini verene kadar her göreve özel bilgi işlem kaynağına erişim sağlayan bir mekanizmadır. Eşzamanlılık Çalışma Zamanı, işlem kaynaklarının en yüksek kullanımını elde etmek için işletim sisteminin önleyici zamanlayıcısıyla birlikte işbirliği zamanlama kullanır.
Preemptive ve Kooperatif Zamanlayıcılar Arasındaki Farklar
Önleyici zamanlayıcılar, her iş parçacığının ilerlemesini sağlamak için birden çok iş parçacığına bilgi işlem kaynaklarına eşit erişim vermeyi ister. Birçok bilgi işlem kaynağına sahip bilgisayarlarda adil erişimin sağlanması daha az sorunlu hale gelir; ancak kaynakların verimli bir şekilde kullanımını sağlamak daha sorunlu hale gelir.
Önleyici bir çekirdek modu zamanlayıcı, uygulama kodunun zamanlama kararları almak için işletim sistemine güvenmesini gerektirir. Buna karşılık, kullanıcı modu işbirliği zamanlayıcı uygulama kodunun kendi zamanlama kararlarını vermesine olanak tanır. İşbirliğine dayalı zamanlama, uygulama tarafından birçok zamanlama kararı alınmasına olanak sağladığından, çekirdek modu eşitlemesiyle ilişkili ek yükün büyük bir kısmını azaltır. İşbirliğine dayalı bir zamanlayıcı, zamanlama için başka bir çalışması olmadığında genellikle işletim sistemi çekirdeğine zamanlama kararlarını saptırıyor. İşbirlikçi zamanlayıcı, çekirdekle iletişim kuran bir engelleme işlemi olduğunda ancak bu işlem kullanıcı modu zamanlayıcısına iletilmediğinde işletim sistemi zamanlayıcısına karşı gelir.
İşbirliği Zamanlama ve Verimlilik
Önleyici bir zamanlayıcı için, aynı öncelik düzeyine sahip tüm çalışmalar eşittir. Önleyici bir zamanlayıcı genellikle iş parçacıklarını oluşturuldukları sırayla zamanlar. Ayrıca, önleyici bir zamanlayıcı, iş parçacığı önceliğine göre her iş parçacığına hepsini bir kez deneme şeklinde bir zaman dilimi verir. Bu mekanizma eşitlik sağlasa da (her iş parçacığı ileriye doğru ilerleme sağlar), bir miktar verimlilik maliyetiyle gelir. Örneğin, hesaplama yoğunluklu algoritmaların çoğu eşitlik gerektirmez. Bunun yerine, ilgili görevlerin genel olarak en az sürede bitmiş olması önemlidir. İşbirliğine dayalı zamanlama, bir uygulamanın çalışmayı daha verimli bir şekilde zamanlamasını sağlar. Örneğin, çok sayıda iş parçacığı olan bir uygulamayı düşünün. Eşzamanlı olarak çalıştırılacak kaynakları paylaşmayan iş parçacıklarının zamanlanması eşitleme ek yükünü azaltabilir ve böylece verimliliği artırabilir. Görevleri zamanlamanın bir diğer verimli yolu da, her işlem hattı aşamasının girişinin bellek önbelleğine zaten yüklenmesi için görevlerin işlem hatlarını (her görevin öncekinin çıkışı üzerinde çalıştığı) aynı işlemcide çalıştırmaktır.
Preemptive ve İşbirliğine Dayalı Zamanlamayı Birlikte Kullanma
İşbirliğine dayalı zamanlama tüm zamanlama sorunlarını çözmez. Örneğin, diğer görevlere tam olarak verim vermeyen görevler tüm kullanılabilir bilgi işlem kaynaklarını kullanabilir ve diğer görevlerin ilerlemesini engelleyebilir. Eşzamanlılık Çalışma Zamanı, önleyici zamanlamanın eşitlik garantilerini tamamlamak için işbirliği zamanlamasının verimlilik avantajlarını kullanır. Eşzamanlılık Çalışma Zamanı varsayılan olarak, işi bilgi işlem kaynakları arasında verimli bir şekilde dağıtmak için iş çalma algoritması kullanan işbirliğine dayalı bir zamanlayıcı sağlar. Ancak Eşzamanlılık Çalışma Zamanı zamanlayıcı, kaynakları uygulamalar arasında adil bir şekilde dağıtmak için işletim sisteminin önleyici zamanlayıcısını da kullanır. İş parçacığı yürütme üzerinde ayrıntılı denetim oluşturmak için uygulamalarınızda özel zamanlayıcılar ve zamanlayıcı ilkeleri de oluşturabilirsiniz.
[Üst]
Eşzamanlılık Çalışma Zamanı ile Windows API'sini karşılaştırma
Genellikle Windows API'si (ve eski adıyla Win32) olarak adlandırılan Microsoft Windows uygulama programlama arabirimi, uygulamalarınızda eşzamanlılık sağlayan bir programlama modeli sağlar. Eşzamanlılık Çalışma Zamanı, temel alınan işletim sisteminde bulunmayan ek programlama modelleri sağlamak için Windows API'sinde oluşturulur.
Eşzamanlılık Çalışma Zamanı, paralel çalışma gerçekleştirmek için Windows API iş parçacığı modeli üzerinde oluşturulur. Ayrıca Windows API bellek yönetimi ve iş parçacığı yerel depolama mekanizmalarını kullanır. Windows 7 ve Windows Server 2008 R2'de, kullanıcı tarafından zamanlanabilir iş parçacıkları ve 64'ten fazla donanım iş parçacığına sahip bilgisayarlar için Windows API desteği kullanır. Eşzamanlılık Çalışma Zamanı, işlem kaynaklarının kullanımını en üst düzeye çıkarmak için işbirliğine dayalı bir görev zamanlayıcı ve iş çalma algoritması sağlayarak ve birden çok eşzamanlı zamanlayıcı örneğini etkinleştirerek Windows API modelini genişletir.
Programlama Dilleri
Windows API'si, programlama modelini kullanıma açmak için C programlama dilini kullanır. Eşzamanlılık Çalışma Zamanı, C++ dilindeki en yeni özelliklerden yararlanan bir C++ programlama arabirimi sağlar. Örneğin lambda işlevleri, paralel çalışma işlevlerini tanımlamak için kısa ve tür açısından güvenli bir mekanizma sağlar. Eşzamanlılık Çalışma Zamanı'nın kullandığı en yeni C++ özellikleri hakkında daha fazla bilgi için bkz . Genel Bakış.
İş Parçacıkları ve İş Parçacığı Havuzları
Windows API'sindeki merkezi eşzamanlılık mekanizması iş parçacığıdır. İş parçacıkları oluşturmak için genellikle CreateThread işlevini kullanırsınız. İş parçacıklarının oluşturulması ve kullanımı nispeten kolay olsa da, işletim sistemi bunları yönetmek için önemli miktarda zaman ve diğer kaynaklar ayırır. Ayrıca, her iş parçacığının aynı öncelik düzeyindeki diğer iş parçacıklarıyla aynı yürütme süresini alması garanti edilir, ancak ilişkili ek yük yeterince büyük görevler oluşturmanızı gerektirir. Daha küçük veya daha ayrıntılı görevler için eşzamanlılık ile ilişkili ek yük, görevleri paralel çalıştırmanın avantajından daha ağır basabilir.
İş parçacığı havuzları, iş parçacığı yönetimi maliyetini azaltmanın bir yoludur. Özel iş parçacığı havuzları ve Windows API tarafından sağlanan iş parçacığı havuzu uygulaması, küçük iş öğelerinin paralel olarak verimli bir şekilde çalışmasını sağlar. Windows iş parçacığı havuzu, iş öğelerini ilk gelen ilk çıkar (FIFO) kuyruğunda tutar. Her iş öğesi havuza eklendiği sırayla başlatılır.
Eşzamanlılık Çalışma Zamanı, FIFO zamanlama mekanizmasını genişletmek için bir iş çalma algoritması uygular. Algoritma, henüz başlatılmamış görevleri iş öğeleri tükenen iş parçacıklarına taşır. İş çalma algoritması iş yüklerini dengelese de, iş öğelerinin yeniden sıralanmalarına da neden olabilir. Bu yeniden sıralama işlemi, bir iş öğesinin gönderildiğinden farklı bir sırada başlamasına neden olabilir. Bu, verilerin eski görevlere göre daha yeni görevler arasında paylaşılma olasılığının daha yüksek olduğu özyinelemeli algoritmalarda kullanışlıdır. Yeni öğelerin ilk olarak çalıştırılması, daha az önbellek hatası ve muhtemelen daha az sayfa hatası anlamına gelir.
İşletim sistemi açısından bakıldığında, iş hırsızlığı adil değildir. Ancak, bir uygulama paralel olarak çalıştırılacak bir algoritma veya görev uyguladığında, alt görevler arasında eşitlik her zaman önemli değildir. Önemli olan, genel görevin ne kadar hızlı bitmesidir. Diğer algoritmalar için FIFO uygun zamanlama stratejisidir.
Çeşitli İşletim Sistemlerinde Davranış
Windows XP ve Windows Vista'da Eşzamanlılık Çalışma Zamanı kullanan uygulamalar, Windows Vista'da yığın performansının geliştirilmesi dışında benzer şekilde davranır.
Windows 7 ve Windows Server 2008 R2'de işletim sistemi eşzamanlılık ve ölçeklenebilirliği daha da destekler. Örneğin, bu işletim sistemleri 64'ten fazla donanım iş parçacığına sahip bilgisayarları destekler. Bu yeni özelliklerden yararlanmak için Windows API'sini kullanan mevcut bir uygulamanın değiştirilmesi gerekir. Ancak Eşzamanlılık Çalışma Zamanı'nı kullanan bir uygulama bu özellikleri otomatik olarak kullanır ve değişiklik gerektirmez.
[Üst]
Eşzamanlılık Çalışma Zamanını OpenMP ile Karşılaştırma
Eşzamanlılık Çalışma Zamanı çeşitli programlama modellerini etkinleştirir. Bu modeller diğer kitaplıkların modellerini çakışabilir veya tamamlar. Bu bölümde Eşzamanlılık Çalışma Zamanı ile OpenMP karşılaştırması yapılır.
OpenMP programlama modeli açık bir standartla tanımlanır ve Fortran ve C/C++ programlama dillerine yönelik iyi tanımlanmış bağlamalara sahiptir. OpenMP 2.0 ve 2.5 sürümleri yinelemeli paralel algoritmalar için uygundur; başka bir ifadeyle, bir veri dizisi üzerinde paralel yineleme gerçekleştirirler. OpenMP, paralellik derecesi önceden belirlendiğinde ve sistemdeki kullanılabilir kaynakla eşleştiğinde en verimli yöntemdir. OpenMP modeli, çok büyük hesaplama sorunlarının tek bir bilgisayarın işlem kaynaklarına dağıtıldığı yüksek performanslı bilgi işlem için özellikle iyi bir eşleşmedir. Bu senaryoda, donanım ortamı bilinir ve algoritma yürütülürken geliştirici makul bir şekilde bilgi işlem kaynaklarına özel erişime sahip olmasını bekleyebilir.
Ancak, diğer, daha az kısıtlanmış bilgi işlem ortamları OpenMP için iyi bir eşleşme olmayabilir. Örneğin, özyinelemeli sorunların (hızlı sıralama algoritması veya veri ağacında arama gibi) OpenMP kullanılarak uygulanması daha zordur. Eşzamanlılık Çalışma Zamanı, Paralel Desenler Kitaplığı (PPL) ve Zaman Uyumsuz Aracılar Kitaplığı'nı sağlayarak OpenMP'nin özelliklerini tamamlar. OpenMP'nin aksine Eşzamanlılık Çalışma Zamanı, kullanılabilir kaynaklara uyum sağlayan ve iş yükleri değiştikçe paralellik derecesini ayarlayan dinamik bir zamanlayıcı sağlar.
Eşzamanlılık Çalışma Zamanı'ndaki özelliklerin çoğu genişletilebilir. Yeni özellikler oluşturmak için mevcut özellikleri de birleştirebilirsiniz. OpenMP derleyici yönergelerine bağlı olduğundan, kolayca genişletilemez.
Eşzamanlılık Çalışma Zamanı'nın OpenMP ile karşılaştırması ve eşzamanlılık çalışma zamanını kullanmak için mevcut OpenMP kodunu geçirme hakkında daha fazla bilgi için bkz . OpenMP'den Eşzamanlılık Çalışma Zamanına Geçiş.
[Üst]
Ayrıca bkz.
Eşzamanlılık Çalışma Zamanı
Genel bakış
Paralel Desen Kitaplığı (PPL)
Zaman Uyumsuz Aracılar Kitaplığı
OpenMP