Bölüm 5.1.4 Modern İşletim Sistemlerinde Doğrudan Bellek Erişimi, Andrew S. Tanenbaum, Herbert Bos, 2014 ,
Açıklamayı basitleştirmek için, CPU'nun tüm cihazlara ve belleğe Şekil 5-4'te gösterildiği gibi CPU'yu, belleği ve G / Ç cihazlarını bağlayan tek bir sistem veri yolu üzerinden eriştiğini varsayıyoruz.
DMA'nın nasıl çalıştığını açıklamak için, önce DMA kullanılmadığında disk okumalarının nasıl gerçekleştiğine bakalım.
- İlk olarak disk denetleyicisi tüm bloğu denetleyicinin dahili arabelleğine gelinceye kadar bloğu (bir veya daha fazla sektör) sürücüden seri olarak yavaş yavaş okur.
- Sonra, hiçbir okuma hatası oluşmadığını doğrulamak için sağlama toplamını hesaplar. Ardından denetleyici kesintiye neden olur. İşletim sistemi çalışmaya başladığında, her bir yineleme bir denetleyici aygıt kaydından bir bayt veya kelime okuyarak ve ana bellekte saklayarak , bir bloğu yürüterek denetleyicinin arabelleğinden bir bayt veya bir kelimeyi bir kerede disk bloğunu okuyabilir .
S: ikinci adımda,
" denetleyicinin arabelleğinden " veriler ana belleğe aktarılmıyor mu? Neden hem " denetleyicinin arabelleğinden " hem de " denetleyici cihaz kaydından " diyor?
ikinci adımda, kontrolör cpu kesintiye uğratmadan ve OS'yi tekrar içermeden veriyi tampondan ana belleğe aktarabilir mi?
DMA kullanıldığında, prosedür farklıdır.
- İlk olarak CPU, nereye aktarılacağını bilecek şekilde kayıtlarını ayarlayarak DMA kontrolörünü programlar (Şekil 5-4'teki adım 1).
Ayrıca disk denetleyicisine, diskten dahili arabelleğine veri okumasını ve sağlama toplamını doğrulamasını bildiren bir komut verir . - Disk denetleyicisinin arabelleğinde geçerli veriler olduğunda, DMA başlayabilir. DMA denetleyicisi, veri yolu üzerinden disk denetleyicisine bir okuma isteği göndererek aktarımı başlatır (adım 2). Bu okuma isteği başka herhangi bir okuma isteğine benzer ve disk denetleyicisi CPU'dan mı yoksa bir DMA denetleyicisinden mi geldiğini bilmez (veya önemsemez). Genellikle, yazılacak bellek adresi veri yolunun adres satırlarındadır, bu nedenle disk denetleyicisi bir sonraki sözcüğü dahili ara belleğinden aldığında, nereye yazacağını bilir. Belleğe yazma başka bir standart veri yolu çevrimidir (adım 3).
- Yazma işlemi tamamlandığında, disk denetleyicisi, veri yolu üzerinden de DMA denetleyicisine bir onay sinyali gönderir (adım 4). DMA denetleyicisi daha sonra kullanılacak bellek adresini artırır ve bayt sayısını azaltır. Bayt sayısı hala 0'dan büyükse, sayım 0'a ulaşana kadar 2'den 4'e kadar olan adımlar tekrarlanır.
- O zaman, DMA denetleyicisi aktarımın şimdi tamamlandığını bildirmek için CPU'yu keser. İşletim sistemi başladığında, disk bloğunu belleğe kopyalamak zorunda değildir; zaten orada.
S: ikinci adımda, DMA denetleyicisi disk denetleyicisinden disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını ister. İlk adımda CPU, disk denetleyicisine diskten dahili arabelleğe veri okumasını söyleyen bir komut verir. Aynı zamanda, CPU, disk denetleyicisinin diskten disk denetleyicisinin arabelleğine veri aktarımını bitirdiğinde, disk denetleyicisine disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını söyleyebilir, böylece DMA denetleyicisi disk denetleyicisine disk denetleyicisinin arabelleğinden ana belleğe veri aktarmasını mı söyler? (Disk ve ana bellek arasında veri aktarımı için neden bir DMA denetleyicisine ihtiyacımız olduğunu anlayamıyorum, bu yüzden alıntıyı anlamak için önemli bir şeyi kaçırdığımı tahmin ediyorum).
- İlk olarak CPU, nereye aktarılacağını bilecek şekilde kayıtlarını ayarlayarak DMA kontrolörünü programlar (Şekil 5-4'teki adım 1).
Bir cihazın cihaz kontrolörü cihazı kontrol eder ve cihaz üzerinde işlem gerçekleştirir. Bir DMA denetleyicisi hangi aygıtta işlemleri denetler ve gerçekleştirir?
Teşekkürler!