Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DMA gerçekleştiren sürücüler, aşağıdaki şekilde gösterildiği gibi üç farklı adres alanı kullanır.
Fiziksel, mantıksal ve sanal adres eşlemeleri için
.
Herhangi bir Windows platformunda, bir sürücünün işlemci tarafından desteklenen tam sanal adres alanına erişimi vardır. 32 bit işlemcide sanal adres alanı dört gigabayt'ı temsil eder. CPU, bir sayfa tablosu kullanarak sanal adres alanında bulunan adresleri sistemin fiziksel adres alanında bulunan adreslere çevirir. Her sayfa tablosu girdisi (PTE), bir sayfa sanal belleği bir fiziksel bellek sayfasına eşleyerek gerektiğinde bir sayfalama işlemine neden olur. MDL (bellek tanımlayıcı listesi), sürücü DMA işlemleriyle ilişkili bir arabellek için benzer bir eşleme sağlar.
Cihazlar, sistemin tam sanal adres alanına erişme yeteneklerinde değişiklik gösterir. Cihaz, adresleri mantıksal (cihaz) adres alanında kullanır. Her HAL, bir cihazın veya mantıksal adresin fiziksel bir adrese (fiziksel RAM'deki bir konum) çevrilmesi için harita kayıtlarını'e kullanır. Cihaz donanımı için harita yazmaçları, MDL'nin (ve sayfa tablosunun) yazılım (sürücüler) için gerçekleştirdiği işlevi gerçekleştirir: adresleri fiziksel belleğe çevirir.
Bu adres alanları ayrı olarak ele alındığından, sürücü fiziksel bellekteki bir konumu ele almak için sanal adres alanında işaretçi kullanamaz ve tam tersi de geçerlidir. Sürücünün önce sanal adresi fiziksel bir adrese çevirmesi gerekir. Benzer şekilde, bir cihaz fiziksel belleğe doğrudan erişmek için mantıksal adres kullanamaz. Cihazın önce adresi çevirmesi gerekir.
HAL, farklı bilgisayarlarda DMA cihazlarının geniş bir yelpazesi ve I/O veri yolları için DMA'yı destekleyen bağdaştırıcı nesneleri ayarlamalıdır. Örneğin, çoğu ISA DMA denetleyicisi, alt cihaz ve veri yolu ana cihazı, 32 bit işlemcinin tam dört gigabayt sistem fiziksel adres alanına (veya 36 bit PAE modunda çalışan bir x86 işlemcinin 64 gigabayt sistem fiziksel adresine) erişmek için yeterli adres satırına sahip değildir. Buna karşılık, PCI DMA cihazları genellikle 32 bit işlemcilerde tam sistem fiziksel adres alanına erişmek için yeterli adres çizgilerine sahip olur. Bu nedenle, her HAL, DMA cihazlarının erişebileceği mantıksal adres aralıkları ile her bilgisayarın fiziksel adres aralıkları arasında eşlemeler sağlar.
Her bağdaştırıcı nesnesi, aktarılacak veri miktarına ve kullanılabilir bellek miktarına bağlı olarak bir veya daha fazla eşleme kaydıyla ilişkilendirilir. DMA aktarımları sırasında HAL, her eşleme kaydını kullanarak cihaz tarafından erişilebilen bir mantıksal sayfayı CPU'daki fiziksel bellek sayfasına eşler. Harita yazmaçları, cihazlarının dağılım/toplama özelliklerine sahip olup olmadığına bakılmaksızın DMA kullanan sürücüler için dağılım/toplama desteği sağlar.
Aşağıdaki şekilde, dağılım/toplama özellikleri olmayan bir ISA DMA cihazının sürücüsü için fiziksel-mantıksal adres eşlemesi gösterilmektedir.
Önceki şekilde aşağıdaki eşleme türleri gösterilmektedir:
Her eşleme yazmaç, bir ISA DMA cihazı için bir fiziksel adres aralığını (düz çizgilerle işaret edilen) düşük sıralı mantıksal adreslerle (noktalı çizgiler) eşler.
Burada, bir ISA DMA cihazı için sistem fiziksel belleğindeki üç sayfalı veri aralığını sayfa büyüklüğündeki üç düşük seviyeli mantıksal adresle eşlemek amacıyla üç eşleme yazmacı kullanılır.
ISA cihazı, DMA işlemleri sırasında sistem belleğine erişmek için eşlenmiş mantıksal adresleri kullanır.
Karşılaştırılabilir bir PCI DMA cihazı için, üç sayfa boyutlu veri aralığı için üç harita yazmacı da kullanılır. Ancak, eşlenen mantıksal adres aralıkları ilgili fiziksel adres aralıklarıyla aynı olmayabilir, bu nedenle PCI cihazı sistem belleğine erişmek için mantıksal adresleri de kullanır.
MDL'deki her giriş, sanal adres alanında bulunan bir konumu fiziksel bir adresle eşler.
MDL'deki bir harita kaydı ile sanaldan fiziksele giriş arasındaki ilişkiye dikkat edin:
Bir MDL'deki her harita kaydı ve her sanal giriş, DMA aktarım işlemi için en fazla bir tam fiziksel sayfayı veri olarak eşleyebilir.
Bir MDL'deki her harita kaydı ve her sanal giriş, tam bir sayfa veri yerine daha az veri eşleyebilir. Örneğin, MDL'deki ilk sanal giriş, daha önce Fiziksel, Mantıksal ve Sanal Adres Eşlemeleri şeklinde gösterildiği gibi, fiziksel sayfa sınırından olan bir offset ile eşlenebilir.
Her harita, bir MDL eşlemesindeki her sanal girişi en az bir bayt olarak kaydeder.
Okuma veya yazma işlemi isteyen bir IRP'de, Irp->MdlAddress Opak-sürücüler MDL'sindeki her sanal giriş, bir kullanıcı arabelleği için sistem fiziksel belleğinde bir sayfa sınırını temsil eder. Benzer şekilde, tek bir DMA aktarımı için gereken her ek adresleme kaydı, sistem fiziksel belleğiyle eşlenmiş cihazın erişebildiği mantıksal adres aralığında bir sayfa sınırını temsil eder.
Her Windows platformunda, her bağdaştırıcı nesnesi, platforma özgü bir temel adreste bulunan ve sürücüler için opak olan bir veya daha fazla eşleme yazmaçlarından oluşan bir kümeye sahiptir. Sürücü açısından bakıldığında, örnek ISA DMA cihazı adres eşlemesini gösteren şekilde gösterilen harita yazmaç tabanı, bir yongadaki, sistem DMA denetleyicisindeki veya veri yolu ana bağdaştırıcısındaki donanım yazmaçları veya sistem belleğinde HAL tarafından oluşturulmuş sanal yazmaçlar bile olabilen harita yazmaçları kümesinin tutamacıdır.
Bir bağdaştırıcı nesnesiyle kullanılabilen harita yazmaçlarının sayısı, farklı cihazlar ve Windows platformları için farklılık gösterebilir. Örneğin, farklı Windows platformlarındaki DMA denetleyicileri farklı özelliklere sahip olduğundan, HAL bazı platformlarda sistem DMA'sını kullanan sürücüler için diğer platformlara göre daha fazla harita yazmacı sağlayabilir.