Çoklu Programlama ve Çoklu Görev arasındaki fark nedir


10

Çoklu Programlama ve Çoklu Görev arasında açıkça ayrım yapmakta zorlanıyorum.

Birincil kaynağım Wikipedia oldu , ancak WP makalesi daha az saygın kaynaklarla (üniversite profesörüm gibi) biraz çelişiyor gibi görünüyor.

WP'yi okuduğumda, çoklu programlama , bir işlem G / Ç'yi beklediğinde bağlam değiştirerek CPU verimini artırmanın temel bir yoludur.

Çoklu programlama, bir programın zamanında çalışacağını garanti etmez. Gerçekten de, ilk program bir çevre birimine erişmeye gerek kalmadan saatlerce çok iyi çalışabilir.

Kooperatif Çoklu Görev ile eşanlamlı Kooperatif Zaman paylaşımı , çoklu programlamada (eşanlamlı olmadığı) bir gelişmedir. CPU bağlamı, eşzamanlı yürütme izlenimi vermek için düzenli olarak değişir, ancak işlemlerin yine de verimi gerekir - ve kötü tasarlanmış programlar sistemin geri kalanını aç bırakabilir.

Önleyici Çoklu Görev , zamanlamayı daha agresif bir şekilde kontrol eder ve bazı süreçlere diğerleri üzerinde öncelik verir.

  1. Bu genel bakış doğru mu? Değilse, WP yanlış olduğu veya WP yanlış okuduğum için mi?
  2. Neden bazı kaynaklar çoklu programlama ve çoklu görevleri birleştiriyor gibi görünüyor?

1
"Daha az saygın kaynaklarla (üniversite profesörüm gibi)" - ah canım. Umarım CS'de yarı pişmiş birçok içerik barındıran Wikipedia'dan daha saygındır.
Raphael

"çoklu programlama" daha tarihsel bir yaklaşım gibi görünmektedir. modern çoklu görev gerçekten IO engelleme ile ilgilidir, ancak süreçleri dengelemek için kullanılan faktörlerden sadece biridir. dahası, neredeyse tüm modern çoklu görevler CPU'nun desteği ile ön plana çıkmaktadır (yıllar önce bu desteği her zaman bulamamışlardır ve iyi davranan süreçlerin işbirliğini destekleyen işletim sistemi tabanlı bekleme yöntemlerini çağırması gerekiyordu).
Mart'ta vzn

2
@ Raphael, onları mükemmellik için pişirerek tüm dünyaya bir iyilik yapabilirsiniz.
vonbrand

1
@vonbrand denedim, ama maalesef bu tür girişimleri uygulamak için yeterli yarı pişmiş uzman var.
Raphael

@ Raphael, ve bu kalabalık burada da görünmüyor mu?
vonbrand

Yanıtlar:


9

Bunlar aşağı yukarı eş anlamlıdır. Çoklu programlama, bir işlemcinin dahil olduğu, yani bir işlemden diğerine geçirildiği zaman, bellekte eşzamanlı olarak yeniden işlenen işlemlerde kullanılır. Konu başlıkları geldi ve artık programlar arasında geçiş yapmıyordu ...

İşlemciler, özellikle de intel hattı, en azından 80286'dan beri gerçek çoklu görev (zamanlayıcı kesmesi, ayrıcalıklı talimatlar) için mekanizmalara sahipti. İlk Mac'te kullanılan M68000, tam teşekküllü çoklu görev kapasitelerine sahip bir işlemciydi. Bu mimarilerde yeni bir gelişme değil. Paylaşılan sistemlerin ilk kez kullanıcının programlarını içeri ve dışarı değiştirdiğini ve dolayısıyla aynı anda birden fazla programa sahip olma anlamında çok programlı olmadığını unutmayın.

Fikir, aynı anda bellekte bulunan birkaç programa sahip olmaktır, böylece biri CPU'yu verdiğinde (bitirerek veya bekleyerek) CPU'yu kullanmaya hazır başkaları vardır, böylece CPU kullanımını artırır (ve her bir CPU patlamasını düşünebilirsiniz. I / O kullanımına hazırlanma, genel kullanımı artırma). Bu daha iyi bir fikir verir (parti sistemlerinde önemlidir).

Zaman paylaşımı geldiğinde, makineye birkaç etkileşimli kullanıcı bağlandı. Aynı fikir, programlarını saklayın ama aralarında yeterince hızlı geçiş yapın, böylece "kendilerine bir bilgisayar sahibi olma" anlayışına sahip olurlar. Tekelleşmeyi önlemek için CPU'yu kesen bir zamanlayıcı gerektirir.

Kişisel makinelerde, aynı anda birden fazla program çalıştırmak için çok fazla teşvik yoktu, en azından başlangıçta (ciddi bir sınırlı makinenin önünde bir kullanıcı çok fazla beklemiyordu). Makineler büyüdükçe, bu sorunu çözmenin ve işletim sistemini çok fazla değiştirmeden aynı anda birkaç programa izin vermenin bir yolu"kooperatif çoklu görev" idi, çünkü her programın çalıştırılacak başka bir program seçmek için periyodik olarak işletim sistemine vermesi beklenir. Bunu yapan program tam kontrol altında olduğundan, hiçbir şey başkaları tarafından karıştırılamadığında bunu yapmayı seçebilir. Söylemeye gerek yok, görevini yerine getirmeyi "unutmak" için bir program performansta ilginç bir artış sağlıyor ... erken Mac sistemleri bu şekilde çalıştı ve yukarıdaki nedenlerden dolayı bu çok uzun sürmedi. Temel işletim sistemi olmayan ya da hiç olmayan gömülü sistemlerde ve sıkı denetimli bir program kümesi çalıştığında, bu kesinlikle attactive bir seçenektir.


WP makalesi, çoklu programlamanın, çoklu görevlerin (sistemlerin) aksine sanal bellekten yoksun olduğu anlamına geliyor. Tarihsel olarak doğru olabilir, ancak tanım dik midir?
didierc

1
70'lerde burada çok programlı bir IBM S / 370 vardı ve kesinlikle sanal belleğe sahip değildi (sadece biriktirme için kullanılan bir diski olduğunu hatırlıyorum). Sanal bellek, sınırlı RAM'de daha fazla programa sahip olmanızı sağlar (yalnızca "en çok kullanılan" parçaları elinizde tuttuğunuzdan), bu şekilde daha iyi kullanım sağlar. Yani evet, tamamen bağımsız olarak düşünürdüm; ama pratikte bugün biri olmadan diğerini bulamayacaksınız. Belki WiFi yönlendiricinizde veya cep telefonunuzda ...
vonbrand

Tamam. Aslında ben de öyle düşünmüştüm. Gömülü sistemler gerçekten de doğru bellek korumasından yoksundur, bunun farkındaydım. Bununla birlikte, iyi davranmış programlarla sorun olmamalı. Tabii ki, program satıcılarına bağlıdır.
didierc

@didierc dikey? karşılıklı münhasır değil mi?
jsj

2

Çoklu Görev ve Çoklu Programlama arasındaki fark nedir? Çoklu görev, çoklu programlamanın mantıksal bir uzantısıdır. Klasik olarak çoklu programlama ortamında, birden fazla kullanıcı cpu'yu paylaşır ve cpu hızlıca bir kullanıcıdan diğerine geçer ve birbirinden tam bir şeffaflık sağlar. Çoklu görevde, kullanıcı programlarla değiştirilir, yani birden fazla program cpu'yu paylaşır ve cpu hızla bir programdan diğerine geçer. Aslında diskte bulunan bir yazılım bir programdır. Yürütme için RAM'e getirildiğinde, işlem veya görev olarak bilinir ve işlemci ve yürütme içinde olduğunda, iş parçacığı olarak bilinir. Bu nedenle, çoklu programlama temel olarak çoklu kullanıcılar içindir ve çoklu görev, birden fazla programa sahip tek kullanıcılar içindir. Çoğu modern işletim sistemi her ikisini de desteklediğinden, genellikle birbirlerinin yerine geçerler.


0

Çoklu görev ve çoklu programlama arasında birçok fark vardır.

Çoklu görev aynı anda birden fazla görevi yürütüyor. Örneğin, bir şarkıyı dinliyorsunuz, bir kağıt yazdırıyor ve aynı anda MS-Word'e yazıyorsunuz.

Çoklu programlama yaparken, bu tür işletim sistemlerinde, tamponlama ve biriktirme kullanarak CPU kullanımını geliştiririz. Sıralı yürütmede, CPU bir program yürütüldükten sonra boşta kalır ve bir sonraki programı ana bellekten yükler. I / o işlemleri sırasında cpu da boş durur, CPU da boş durur, ancak çok programlı bir ortam kullanarak, CPU bir sonraki programa geçer ve onu işler. Bu tamponlama ve biriktirme yardımı ile kullanılan bir tekniktir.

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.