内存管理机制
块式管理
一种连续管理方式, 为每个进程提供一块连续的内存.
块中可能有进程未使用到的空间, 称为碎片
段式管理
段是程序逻辑的分块. 通过段表确定逻辑地址对应的物理地址
页式管理
现代操作系统采用进程, 每个进程有独立的地址空间, 这个地址空间是虚拟内存. 使用虚拟内存有两个好处:
- 程序不直接操作物理内存, 避免造成系统崩溃
- 多进程并发运行, 如果直接操作物理内存容易冲突
- 虚拟内存可以比物理内存更大, 避免内存不足
虚拟内存分为页, 物理内存分为页框, 与页一一对应. 通过MMU映射到物理内存, 如果页不在物理内存中, 发生缺页中断, MMU中存有页表, 将页与页框映射起来
对于4GB的内存, 若每页4KB, 则共1M页, 如果有16位地址线, 一次可寻址2^16=64K页, 则需要二级页表.
64位系统需要多级页表
通过多级页表找到虚拟地址对应的物理地址, 此映射关系会被缓存到CPU的TLB高速缓存中.
CPU --> TLB --> MMU ->物理地址总线 ->多级页表
段页式存储
| 段 | 页 | |
|---|---|---|
| 分割依据 | 逻辑分割 | 固定大小分割 |
| 用户可见 | √ | × |
| 固定大小 | × | √ |
用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。
用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。
每一个段对应一张页表