Memory Management Unit: Difference between revisions

Merged content from MMU to here
[unchecked revision][unchecked revision]
m (s/en mass/en masse)
(Merged content from MMU to here)
Line 1:
The '''MMU''', or '''Memory Management Unit''', is a component of many computers that handles memory translation, memory protection, and other purposes specific to each architecture.
 
== Translation ==
The MMU's main service to the computer is memory translation. Memory translation is a process by which virtual addresses are converted to physical addresses. We can say that the virtual addresses are ''mapped'' to the physical address. This gives us the ability to create a memory model in our own fashion. That is, we can rearrange how the memory ''seems'' to be ordered.
 
For instance, this technique is used when creating a [[Higher Half Kernel]]. The kernel is loaded at location x, but when [[paging]] is initialized the MMU is told to map location x to 0xC0000000. This then creates the effect that the kernel actually '''is''' at 0xC0000000.
 
== Protection ==
Because we can make memory seem however we want, we can make each process appear that it is the only process on the machine. Moreover, because the process can only see memory that it has, it cannot modify or copy any other application's memory. This means that if an application is to fail, ''it'' will fail, but nothing else.
 
== Discourse on Memory Management Units and Virtual Memory systems in contemporary architectures ==
 
Line 165 ⟶ 175:
 
And now that we understand how the self-referencing page table trick can be used to read from and write to the current page directory, we'll examine how to read from and write to the page tables in the current process next. A note: 0xFFFFF000 is a valid address to any program unless you map it as SUPERVISOR, or in other words, you leave the USER bit unset. Otherwise programs in userspace will be able to edit their own page tables. Imagine a program deciding to start mapping pages in its address space to the kernel at physical address 0x100000? It could very well now decide to zero out the kernel in RAM.
 
==See Also==
* [[Paging]]
* [[Segmentation]]
=== External Links ===
*[http://en.wikipedia.org/wiki/Memory_management_unit Memory Management Unit] on Wikipedia
 
 
[[Category:Memory management]]
Anonymous user