存储管理(2)

2020-06-23  本文已影响0人  R_est

虚拟内存管理

目标 实现思路
使得大的程序能在较小的内存中运行、使得多个程序能再较小的内存中运行、使得多个程序并发运行时地址不冲突、使得内存利用率高:无碎片,共享方便 程序运行时,只把当前必要的很小一部分代码和数据装入内存,其余代码和数据需要时再装入。不再运行的代码和数据及时从内存删除。实际内存很容易满足上述的内存需求。
算法 特点
最佳算法(OPT算法) 淘汰以后不再需要或最远的将来才会用到的页面。理论上最佳,由于无法预知未来,在实践中无法实现
先进先出(FIFO算法) 淘汰在内存中停留时间最长的页面。算法实现简单,但除非进程按顺序访问地址空间,否则缺页率高。特定访问序列会出现页框增多,缺页率也增加的异常现象
最久未使用淘汰算法(LRU算法) 淘汰最长时间未被使用的页面。算法易于实现,存在硬件和软件方法。
最不经常使用算法(LFUS算法) 淘汰到当前时间为止被访问次数最少的页面。每页设置访问计数器,访问则加1,淘汰计数值最小的页面,并将所有计数清零

硬件方法:在页面设置移位寄存器R,当页面被访问时置1,周期性地将所有页面R左移,淘汰R值最大地页面,R的位数越多且周期越小就越精确,但硬件成本高,R的位数越少,可能同时出现多个0,难以比较。
软件方法:利用页表访问位,页被访问时置1,软件周期T将所有访问位置0,淘汰访问位为0的页面。周期T太小,多个访问位为0,找不到合适淘汰页,周期T太大,多个访问位为1,找不到合适淘汰页。

页式系统 段式系统
地址空间 一维地址空间 二维地址空间
空间 页面大小固定 段长可变
划分 页面无意义 段有意义
共享 页面不方便共享 段方便共享
可见 页面用户不可见 段用户可见
溢出 页面偏移无溢出 段偏移有溢出
保护模式的寄存器模型
INDEX TI DPL
_KERNEL_CS 0x10 0000 0000 0001 0 0 00
_KERNEL_DS 0x18 0000 0000 0001 1 0 00
_USER_CS 0x23 0000 0000 0010 0 0 11
_USER_DS 0x2B 0000 0000 0010 1 0 11

表示2,3,4,5全局描述符,按描述符说明可得


全局描述符

XXXX:基地址,hhhh:段界限,等于段长度-1
G位为1,表示段长单位4KB,
P为1,表示段在内存
DP表示段的描述符级别
都占4GB内存,具有相同的范围,code/data在0x00,不同的是段的描述符级别,权限级别。内核段级别为0,用户段级别为3。
利用段机制隔离用户数据和系统数据,保留段的等级保护机制
简化避免逻辑地址到线性地址的转换,可以直接将虚拟地址当做线性地址,两者完全一致。

上一篇下一篇

猜你喜欢

热点阅读