虚拟存储器

虚拟存储器

在这里插入图片描述

页式存储产生原因

  • 分区式存储管理最大的缺点是碎片问题严重,内存利用率低。究其原因,主要在于连续分配的限制,即它要求每个作用在内存中必须占一个连续的分区。

  • 如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存,而无需再进行“紧凑”。

  • 基于这一思想,产生了“非连续分配方式”,或者称为“离散分配方式”。

  • 连续分配:为用户进程分配的必须是一个连续的内存空间。

  • 非连续分配:为用户进程分配的可以是一些分散的内存空间。

页式虚拟存储器

  • 以页为单位的虚拟存储器,称为页式虚拟存储器。
  • 它的虚拟空间跟主存空间都将被划分为相同大小的页。
  • 主存中的页,称为实页,虚存中的页,称为虚页。
  • 虚拟地址被分为两个字段,虚页号和页内偏移。
  • 为了对每个虚拟页的存放位置,存取位置,使用情况,修改情况等等进行等进行说明,操作系统在主存中给每个进程都生成一个页表。
  • 因此,每个虚拟页表都对应有一个页表项。页表是一张存放在主存中的,虚拟页与实页对照的映射表。
  • 其中存放位置字段用来建立虚拟页与实页之间的映射,进而进行地址转换。有效位用来表示对应页面是否存在。

在这里插入图片描述

工作原理

  • 只要求将当前需要的一部分页面装入内存,便可以启动作业运行,倘若在执行的过程中,出现要访问的页面不在内存中,那么就通过页面调入功能将其调入,同时还可以将暂时不用的页面换出到辅存,以腾出空间。因为页是根据请求调入的,故称为请求页式存储管理。

在这里插入图片描述
在这里插入图片描述

  • 状态位P:用于记录该页是否已经调入内存

  • 访问字段:记录该页多久没有被访问了

  • 修改位:标识该页调入内存后是否被修改过

  • 外存地址:指出该页在内存外的地址,供调入该页的时候使用。

分页

分页方式

  • 把物理内存划分成固定且很小的块,称为页框,每个进程也划分为固定长的块,称为页

  • 进程的程序块装到可用的存储块中,且无须用连续的页框来存放

  • 编写程序不再使用物理地址,所有程序使用统一的虚拟地址

  • 操作系统提供一个页表,提供虚拟地址到物理地址的转换
    在这里插入图片描述

  • 每个用户进程都使用虚拟地址,然后都通过页表找到对应的物理地址,然后从内存中读取数据。

缺页中断

  • 在请求分页系统中,当所要访问的页面不在内存中时,便产生一个缺页中断,请求操作系统将所缺的页调入内存。此时应将缺页的进程阻塞(调页完成唤醒),若内存中有空闲块,则分配一个块,将要调入的页装入该块,并修改页表中的相应页表项,若此时内存中没有空闲块,则要淘汰某页(若被淘汰页在内存期间被修改过,则要将其写回外存)。
注意
  • 在指令执行期间而非一条指令执行完后产生和处理中断信号,属于内部中断。
  • 一条指令在执行期间,可能产生多次缺页中断。

快表(TLB)

  • 页表指出逻辑地址中的页号与所占主存物理块号的对应关系。页式存储管理在用动态重定位方式装入作业时,要利用页表做地址转换工作。
  • 快表就是存放在高速缓冲存储器的部分页表。作为页表的Cache,它的作用与页表相似,但是提高了访问速率。
  • 由于采用页表做地址转换,读写内存数据时CPU要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。
  • 如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据。

页面置换算法

页面置换算法

LRU

  • 最近最少使用(LRU):将页帧按照最近最多使用到最近最少使用进行排序,再次访问一个页帧时,将该页帧移到表头,替换时将表尾的页帧换出。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值