2024-07-08 07:00:04 +01:00
|
|
|
---
|
|
|
|
tags: [memory, Linux]
|
|
|
|
created: Monday, July 08, 2024
|
|
|
|
---
|
|
|
|
|
2024-07-16 17:00:03 +01:00
|
|
|
# Memory Management Unit (MMU)
|
2024-07-08 07:00:04 +01:00
|
|
|
|
2024-07-16 17:00:03 +01:00
|
|
|
The MMU is the bridge between the physical memory devices of the machine and the
|
|
|
|
virtual memory space. It is a chip that sits between the CPU and the RAM and
|
|
|
|
determines the physical location of the memory requested by the kernel as
|
|
|
|
virtual memory.
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
## Pages
|
|
|
|
|
|
|
|
We use the term **pages** to denote blocks of virtual memory and to distinguish
|
|
|
|
them from **addresses** as physical blocks. The MMU possesses a **page table**
|
|
|
|
which is registry logging which pages correspond to which physical blocks.
|
|
|
|
|
|
|
|
## Shared pages
|
|
|
|
|
|
|
|
Virtual memory allows the sharing of files and memory by multiple processes.
|
|
|
|
Crucially the shared data doesn't have to be within the address of each process,
|
|
|
|
instead there is a reference in the page table that each process has access to
|
|
|
|
the shared data.
|
|
|
|
|
|
|
|
## Page faults
|
|
|
|
|
|
|
|
There are two kinds of error that can occur with relation to paged memory:
|
|
|
|
|
|
|
|
- minor page faults
|
|
|
|
- The desired page is in main memory but the MMU doesn't currently know where
|
|
|
|
it is
|
|
|
|
- major page faults
|
|
|
|
- The desired page is not in main memory at all. Therefore the kernel must
|
|
|
|
fetch it from disk
|
|
|
|
|
|
|
|
Minor page faults are very common and are to be expected; they resolve quickly.
|
|
|
|
On the other hand too many major page faults can slow the system down both
|
|
|
|
because of the time-costly process of fetching data from disk and because it
|
|
|
|
demands more kernel resources to locate the missing page, which puts other
|
|
|
|
processes on hold.
|