9 Aralık 2019 Pazartesi

Memory Management Unit Nedir - MMU

CPU Logical Adres Bilir
Bir çok CPU mimarisinde Memory Management Unit (MMU) birimi vardır. Bu birim logical/virtual adresleri (hem logical hem de virtual kelimesinin kullanıldığını gördüm, her ikisi de CPU tarafından bilinen ve kullanılan adres anlamına geliyor) fiziksel adrese çevirmekle sorumludur. Açıklaması şöyle.
The Memory Management Unit (MMU) transforms a logical address into a linear address by means of a hardware circuit called a segmentation unit; subsequently, a second hardware circuit called a paging unit transforms the linear address into a physical address (see Figure 2-1).
Logical Adresten Fiziksel Adrese Dönüşüm
Fiziksel adrese dönüşüm için öncelikle mantıksal adresin "page table"/"directory entry" üzerindeki hangi sayfaya denk geldiğini bulan bir hesaplama yapmak gerekir. Bu hesaplamayı yapmak için bir veya bir kaç kademe işlem yapılabilir.

MMU ve Memory Bus İlişkisi
MMU tarafından belirlenen fiziksel adrese erişim için memory bus kullanılır.

MMU Uzunluğu
Günümüz MMU'ları 48 bit kullanır.
On current x86-64 PC processors, the MMU allows 48 bits of virtual address space. That means that the address space is limited to 256TB. With one bit to distinguish kernel addresses from userland addresses, that leaves 128TB for a process's address space.
Intel 8086
Bu işlemcide  MMU yoktu. bu yüzden "user mode" ve "kernel mode" desteği veremiyordu. Açıklaması şöyle.
There is no mechanism for any privilege levels or protection in 8086. As a consequence, there is nothing special about OS code, and thus user applications are allowed to do everything, including reading and writing to any physical memory address, directly access any I/O port, and enable/disable interrupts at will.

Protected mode was introduced in 80286. Some non-PC compatible systems with 8086/8088 might have had external hardware that was used to provide protection and distinction between kernel and userland code, but I haven’t found really good sources for those, so I can’t tell how it worked.

Hiç yorum yok:

Yorum Gönder