首页 > 代码库 > 存储系统(4)-------虚拟存储
存储系统(4)-------虚拟存储
1.目的
将一部分磁盘空间作为主存,价格、容量接近辅存,速度接近主存。
2.工作原理
CPU给出虚拟地址,进行内部转换,判断改地址是否在主存中
若在,从主存中提取数据
若不在,进行外部地址转换(利用外页表,外段表,通常由软件实现)
外部转换计算出辅存地址,并使用替换算法,进行数据的调入调出
备注:
? CPU通过MMU支持操作系统进行存储管理的相关工作
? MMU完成虚拟地址到物理地址的转换
3.地址转换
页式 、 段式 、 段页式
1).页式
? 思想:用固定大小的页描述逻辑空间和物理空间
? 程序调入调出以页为单位
? 由页表完成页管理和地址转换。
页表保存在主存。
页表起始地址由页表基址寄存器给出
?至少访问两次主存。
改进:使用快慢表。块表保存在cache,TLB(利用程序访问局部性)
?主存利用率高,地址变换快,调入简单。不利于编程独立性
?页表项:
有效位 + 物理页号
?地址:
物理(逻辑)地址 = 页大小 * 页面号 + 页内地址
?地址转换:
虚拟地址的虚拟页号作为偏移地址,利用页表基址找到对应页表项,有效位为1时,从页表项提取物理页号,与虚拟地址的页内地址共同形成物理地址。
2).段式:
? 程序以逻辑结构分段,主存以段为单位分配
? 由段表对程序进行管理。
段表保存在主存。
段表基址由段表基址寄存器给出
?段表项:
有效位 + 段起址 + 段长
?地址转换:
段基址寄存器取出段表基址,加上虚拟地址的段号,定位到段表的对应存储字
在存储字中取出段起始地址,与虚拟地址的段内地址相加,的物理地址
3).段页式
? 物理空间分页,程序分段,段再分页
? 由一个段表和一组页表管理
程序调入调出以页为单位,编程、保护、调度以段为单位
?段表项:
该段页表起始地址 + 页表长度
页表项:
该段各页在主存中实页号 + 有效位 + 是否已修改
? 地址:
段号 + 页号 + 页内地址
4.存储保护
1)目的
? 保证程序间不会相互覆盖,不会访问无关程序数据
? 保证出错程序不会破坏其他用户程序及系统程序
? 以段或者页为单位对主存中程序与数据进行保护
1)分类
? 存储区域保护
防止地址越界
? 基于页表或段表的保护
程序虚页号固定,转换后实页号固定,保证不会相互影响
段表记录段上界、下界、段长,保证不会越界
? 键保护
每页分配一个存储建,用于指明保护等级。
操作系统给出的访问建与存储建相等时才允许访问
? 环保护
将程序分为多个保护级别,一级为一环。
? 访问方式保护
保证程序不会对主存执行非授权操作(通过对页表、段表设置访问权限标志位实现)
存储系统(4)-------虚拟存储