首页 > 代码库 > 存储系统(4)-------虚拟存储

存储系统(4)-------虚拟存储

1.目的

  将一部分磁盘空间作为主存,价格、容量接近辅存,速度接近主存。

2.工作原理

  CPU给出虚拟地址,进行内部转换,判断改地址是否在主存中

    若在,从主存中提取数据

    若不在,进行外部地址转换(利用外页表,外段表,通常由软件实现)

      外部转换计算出辅存地址,并使用替换算法,进行数据的调入调出

  备注:

    ? CPU通过MMU支持操作系统进行存储管理的相关工作

    ? MMU完成虚拟地址到物理地址的转换

3.地址转换

   页式 、 段式 、 段页式

 

  1).页式

    ? 思想:用固定大小的页描述逻辑空间和物理空间

    ? 程序调入调出以页为单位

    ? 由页表完成页管理和地址转换。

     页表保存在主存。

       页表起始地址由页表基址寄存器给出

    ?至少访问两次主存。

      改进:使用快慢表。块表保存在cache,TLB(利用程序访问局部性)

    ?主存利用率高,地址变换快,调入简单。不利于编程独立性

    ?页表项:

        有效位 + 物理页号

    ?地址:

        物理(逻辑)地址 = 页大小 * 页面号 + 页内地址

    ?地址转换:

      虚拟地址的虚拟页号作为偏移地址,利用页表基址找到对应页表项,有效位为1时,从页表项提取物理页号,与虚拟地址的页内地址共同形成物理地址。

  2).段式:

    ? 程序以逻辑结构分段,主存以段为单位分配

    ? 由段表对程序进行管理。

     段表保存在主存。

       段表基址由段表基址寄存器给出

    ?段表项:

        有效位 + 段起址 + 段长

    ?地址转换:
      段基址寄存器取出段表基址,加上虚拟地址的段号,定位到段表的对应存储字

      在存储字中取出段起始地址,与虚拟地址的段内地址相加,的物理地址

  3).段页式

    ? 物理空间分页,程序分段,段再分页

    ? 由一个段表和一组页表管理

     程序调入调出以页为单位,编程、保护、调度以段为单位

    ?段表项:

        该段页表起始地址 + 页表长度

      页表项:    

        该段各页在主存中实页号 + 有效位 + 是否已修改

    ? 地址:

        段号 + 页号 + 页内地址

4.存储保护

  1)目的

    ? 保证程序间不会相互覆盖,不会访问无关程序数据

    ? 保证出错程序不会破坏其他用户程序及系统程序

    ? 以段或者页为单位对主存中程序与数据进行保护

  1)分类

    ? 存储区域保护

      防止地址越界

      ? 基于页表或段表的保护

        程序虚页号固定,转换后实页号固定,保证不会相互影响

        段表记录段上界、下界、段长,保证不会越界

      ? 键保护

        每页分配一个存储建,用于指明保护等级。

        操作系统给出的访问建与存储建相等时才允许访问 

      ? 环保护

        将程序分为多个保护级别,一级为一环。

    ? 访问方式保护

      保证程序不会对主存执行非授权操作(通过对页表、段表设置访问权限标志位实现)

    

存储系统(4)-------虚拟存储