Yazılım ve donanım kesintileri nelerdir ve nasıl işlenir?


43

Donanım ve yazılım kesintileri kavramını anladığımdan emin değilim.

Doğru anlarsam, bir donanım kesintisinin amacı CPU çok görevli uygulamasının bir parçası olan CPU'ya biraz dikkat çekmek.

  1. Öyleyse, donanım kesintisine ne sebep olur? Donanım sürücüsü işlemi mi?
  2. Evetse, donanım sürücüsü işlemi nerede çalışıyor? CPU üzerinde çalışıyorsa, donanım kesilmesiyle CPU'ya dikkat etmesi gerekmez, değil mi? Yani başka bir yerde mi çalışıyor?
  3. Bir donanım kesintisi CPU'yu doğrudan mı keser, yoksa önce çekirdek işlemine ve çekirdek işlemine temas eder mi, sonra CPU'ya temas eder / keser mi?

Öte yandan, bir yazılım kesintisinin amacının, şu anda CPU üzerinde çalışan bir işlem için bazı kaynaklar talep etmek olduğunu düşünüyorum.

  1. Kaynaklar nelerdir? Hepsi çalışan süreçler şeklinde mi? Örneğin, CPU sürücüsü işlemi ve bellek sürücüsü işlemleri, CPU ve bellek kaynaklarını temsil ediyor mu? G / Ç aygıtlarının sürücü işlemi, G / Ç kaynaklarını temsil ediyor mu? Sürecin kaynaklarla iletişim kurmak istediği diğer çalışan süreçler mi?
  2. Eğer evet ise, bir yazılım kesintisi, işlemleri dolaylı olarak çekirdek süreçler vasıtasıyla (kaynakları temsil eden) süreçlerle temas eder mi? Bir donanım kesintisinden farklı olarak, bir yazılım kesintisinin aksine hiçbir zaman işlemciyi doğrudan kesmez, ancak bunun yerine çekirdek işlemini keser / temas eder mi?

Yanıtlar:


55

Bir donanım kesintisi gerçekten CPU çoklu görevinin bir parçası değildir, ancak onu sürebilir.

  1. Donanım kesintileri, disk, ağ kartları, klavyeler, saatler vs. IRQ'ya göre CPU isteği uygun donanım sürücüsüne gönderecektir. (Donanım sürücüleri genellikle ayrı bir işlemden ziyade çekirdek içindeki alt yordamlardır.)

  2. Kesmeyi yapan sürücü CPU'da çalışır. CPU, kesmeyi işlemek için yaptıklarından yarıda kesildi, bu nedenle CPU'nun dikkatini çekmek için ek bir şey gerekmiyor. Çok işlemcili sistemlerde, kesme genellikle CPU'lardan yalnızca birini keser. (Özel durumlarda ana bilgisayarlar, ana CPU'dan destek almadan birden fazla kesintiyle başa çıkabilecek donanım kanallarına sahiptir.)

  3. Donanım kesintisi CPU'yu doğrudan durdurur. Bu, çekirdek işlemindeki ilgili kodun tetiklenmesine neden olur. İşlenmesi biraz zaman alan işlemlerde, kesme kodu, diğer donanım kesintileri tarafından kendi kendine kesilmesine izin verebilir.

    Zamanlayıcı kesintisi durumunda, çekirdek zamanlayıcı kodu çalışmakta olan işlemi askıya alabilir ve başka bir işlemin çalışmasına izin verebilir. Çoklu görev sağlayan zamanlayıcı kodunun varlığıdır.

Yazılım kesintileri, donanım kesintilerine benzer şekilde işlenir. Ancak, yalnızca şu anda çalışmakta olan işlemlerle üretilebilirler.

  1. Genellikle yazılım kesintileri, G / Ç (Giriş veya Çıkış) istekleridir. Bunlar, G / Ç'nin gerçekleşmesini planlayacak olan çekirdek rutinlerini çağırır. Bazı aygıtlarda G / Ç hemen yapılır, ancak disk G / Ç genellikle sıraya alınır ve daha sonra yapılır. Yapılan G / Ç'ye bağlı olarak, G / Ç işlemi tamamlanana kadar işlem askıya alınabilir, bu da çekirdek zamanlayıcısının çalışması için başka bir işlem seçmesine neden olur. İşlemler arasında G / Ç oluşabilir ve işlem genellikle disk G / Ç ile aynı şekilde zamanlanır.

  2. Yazılım kesintisi sadece çekirdeğe konuşur. Çalıştırılması gereken diğer süreçleri planlamak çekirdeğin sorumluluğundadır. Bu, borunun sonunda başka bir işlem olabilir. Bazı çekirdekler, aygıt sürücüsünün bazı bölümlerinin kullanıcı alanında var olmasına izin verir ve çekirdek, bu işlemi gerektiğinde çalışacak şekilde zamanlar.

    Bir yazılım kesmesinin doğrudan CPU'yu kesmemesi doğrudur. Yalnızca şu anda kod çalışan kod bir yazılım kesintisine neden olabilir. Kesilme, çekirdeğin çalıştırma işlemi için bir şey yapma (genellikle G / Ç) isteğidir. Özel bir yazılım kesintisi, çekirdek zamanlayıcısından başka bir işlemin çalışıp çalışamayacağını kontrol etmesini isteyen bir Verim çağrısıdır.

Yoruma cevap:

  1. G / Ç istekleri için çekirdek, işi uygun çekirdek sürücüye devreder. Rutin G / Ç'yi daha sonraki işlemler için sıraya koyabilir (disk G / Ç için ortak) veya mümkünse hemen çalıştırabilir. Kuyruk, genellikle donanım kesintilerine yanıt verirken sürücü tarafından yönetilir. Bir G / Ç tamamlandığında, sıradaki bir sonraki öğe cihaza gönderilir.

  2. Evet, yazılım kesintileri, donanım sinyal adımını önler. Yazılım isteğini üreten işlem şu anda çalışan bir işlem olmalıdır, bu nedenle CPU'yu kesmezler. Ancak, arayan kodun akışını keserler.

    Donanım CPU'nun bir şey yapması gerekiyorsa, CPU'nun çalıştığı koda olan dikkatini kesmesine neden olur. CPU mevcut durumunu bir yığına iter, böylece daha sonra yaptıklarına geri döner. Kesinti durabilir: çalışan bir program; başka bir kesmeyi idare eden çekirdek kodu; veya boşta işlem.


Teşekkürler! (1) Yazılım kesintisinde, G / Ç işlemleri G / Ç aygıt sürücüsü yordamı tarafından çekirdek işlemi içinde mi gerçekleştiriliyor? (2) Yazılım kesintisinin geçtiği yolun donanım kesintisi yolundan bir adım daha kısa olması doğru mu? Başka bir deyişle, yazılım kesintisi için: yazılım programı -> çekirdek işlemi içindeki aygıt sürücüsü yordamı; donanım kesintisi için: donanım -> CPU -> çekirdek işlemi içindeki aygıt sürücüsü yordamı?
Tim

Teşekkürler! Donanım kesintisinin CPU'nun mevcut durumunu bir yığında itmesine neden olması, donanım sürücüsünün CPU üzerinde çalışabilmesi ve daha sonra kesilen işlemin CPU'da geri gelebilmesi doğru mu? Yazılım kesintisi, istenen hizmetin CPU üzerinde çalışabilmesi için CPU'da çalışan işlemin bir yığına itilmesine neden olur mu?
Tim

Her iki kesinti de durumun yığına itilmesine neden olur. Bu, kesme işlemiyle tamamlandığında sistemin durumu yeniden yüklemesini sağlar.
BillThor

Teşekkürler! İstenen hizmet, CPU yerine IO aygıtlarında çalışan IO işlemleri gibi CPU'da çalışmazsa ve talep edilen hizmetin bitmesini beklemeden istenen işlem çalışmaya devam edebilirse, talep eden işlem hala istiflenecek ?
Tim

Normalde, G / Ç okuması senkronize olarak adlandırılır ve G / Ç tamamlanana kadar işlem çalışmaz. Okuduğunuz için neredeyse her zaman bunu istiyorum. Yazmalar genellikle işlemin çalışmaya devam etmesine izin vererek asenkron olarak gerçekleşir.
BillThor
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.