虚拟存储器
虚拟地址<–>实际地址
- 引入:程序需要的地址空间很大,但是内存满足不了。
- 页式:虚拟地址按页分(虚页),需要时载入主存空间(页架)。
- 页式管理:每一页比较大(2-64KB),页架与页全相联(缺页要从磁盘载入页,代价太大),写回方式(读写辅存代价太大),地址转换(硬件实现),缺页管理(软件OS实现)
- 页表:反映虚页和页架关系的表。页表是一个结构数组,存在进程(可执行文件)的内核区。页表本身也很大,需要用分页方式管理。
- 快表:把那些常用的页表项加入到缓存(像cache一样)中。
- cpu(线性地址)<—>快表(得到实际地址)<—->cache(命中)/主存(未命中)
^ | ^
|——–>页表(得到实际地址)<——|
|
缺页中断(OS从磁盘载入页到主存并更新页表,快表)
- 段式:便于优化管理,保证不会跨段访问
缺点:产生碎片,段太大无法载入主存。 - 段页式:先分段,后分页
段表+页表+页内偏移=实际地址 - 存储保护:进程对存储的访问是受限的。
硬件需要模式位来区分用户态,核心态
需要增加指令来转换用户态,核心态