start from page 58 ppt
是为了解决每次执行指令都需要两次访问内存
命中--> 一次块表 + 一次内存 访问
p58
protection bit
valid/invalid bit attached to each entry in the page table
PTBR
页表基址寄存器 PTLR
页表线长寄存器
copy -> waste
share page ->
shared code
不管逻辑号是多少,为了共享,映射到物理号都是一样的
private code and data 其他的,都可以散落在其他逻辑号的页。
如果一个进程就超过了最大页表量该怎么办?
访问内存次数增长快,怎么办?
Hashed Page Table
1.页号放入哈希表里去,找到物理页框号
2.拿物理页框号对进行比对
3.如果..提取
查询效率更高,但是要解决冲突。
反置页表
好处:不用每个进程存一个页表,整个系统就只需要维护一张表
坏处:
1.检索时间开销比较大
2.还是可以用hash table来优化检索效率,不需要比对,直接映射
段长 长度可变
分段,段是单元
分页,页是单元
STBR …基址…
STLR …线长…
segment table: base + limit
base(contains the starting physical address where the segments reside in memory)
limit(specifies the length of segment)
不能直接映射,因为页表页的大小一样可以随便映射,但是段的大小不一,不能直接映射。
与分页最大的不同是? 不是叠加而是直接相加,因为得到的直接是基地址,而不是物理页框号
##总结
分页:面向系统 离散 解决了外部碎片 但是存在少量内部碎片 提高了内存利用率 页是最小单元 依赖硬件 维度是1维的
分段:面向用户 离散 段是最小单元 依赖程序本身 维度是2维的
分段分页都涉及到了 操作系统,cpu,用户程序, 第一件事就是分离地址工作,是谁做的,cpu做的(上面的mmu), 第二件事是查表映射,是谁做的,cpu做的(上面的mmu),
第三件事是页表段表内容的更新,操作系统做的 第四件事是叠加(或直接相加),cpu做的。
操作系统做了什么?
页表段表内容的更新