虚拟存储

前面的物理内存管理是关于如何给进程分配一块物理内存空间。非连续内存分配是在内存里找存储空间,虚拟存储是在非连续内存存储的基础上,把一部分内容放到外存里的做法,可以让应用程序可使用更大的空间。

用户看到的只是抽象的地址空间,操作系统自动做抽象地址空间映射到存储介质的使用。
在这里插入图片描述
内存空间不足,有三种解决方法。
在这里插入图片描述

  1. 覆盖:一个程序在所有内存空间里内存不够,程序员将一个进程分成多个模块。操作系统不知道进程内模块的逻辑关系
    在这里插入图片描述
    下图展示了覆盖技术实例。物理内存不够190k,就将这个程序分成3组,A自己一组;B、C互相无调用关系,为一组;D、E、F相互无调用关系(不会同时执行),为一组。分配存储空间:A给20k,B、C分50k,D、E、F给40k。B或C(D或E或F)调用谁就把谁放入内存,把其他的挪出去。
    在这里插入图片描述
    在这里插入图片描述
  2. 交换:是以进程为单位的交换技术。一个程序在内存空间里够用,但多道程序运行过程中其他程序占用了内存空间使这个程序内存空间不够。可以让操作系统完成
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    交换和覆盖的比较
    在这里插入图片描述
  3. 虚拟存储技术
    (1)目标
    用户编制程序时使用的地址(虚拟地址由编译程序生成)称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为物理地址,其对应的存储空间称主存空间。虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器。它借助于磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用。虚拟存储器指的是主存-外存层次,它以透明的方式为用户提供了一个比实际主存空间大得多的程序地址空间。
    在程序运行时,则分配给每个程序一定的运行空间,由地址转换部件(硬件或软件)将编程时的地址转换成实际内存的物理地址。如果分配的内存不够,则只调入当前正在运行的或将要运行的程序块(或数据块),其余部分暂时驻留在辅存中一个大作业在执行时,其一部分地址空间在主存,另一部分在辅存,当所访问的信息不在主存时,则由操作系统而不是程序员来安排I/O指令,把信息从辅存调入主存。从效果上来看,好像为用户提供了一个存储容量比实际主存大得多的存储器,用户无需考虑所编程序在主存中是否放得下或放在什么位置等问题。称这种存储器为虚拟存储器.
    上面是虚拟的抽象的进程地址空间,下面是实际的物理内存和外存,中间由操作系统完成相应转换。只把部分进程放入内存,不像交换是以整个进程为单位;同时不需要程序员参与。
    在这里插入图片描述
    (2)局部性原理
    在这里插入图片描述
    (3)概念
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (4)虚拟页式存储
    之前的页式存储是把程序的所有页都加载到内存中,存储可以不连续。
    在这里插入图片描述
    虚拟页表:操作系统为每一个进程维护了一个从虚拟地址到物理地址的映射关系的数据结构,叫页表,页表的内容就是该进程的虚拟地址到物理地址的一个映射。
    在页表项中多一个标志位,表示对应的这一页是否在物理内存里,如果标志位是无效就会产生缺页异常,操作系统就会接管,操作系统找页。缺页需要把现在在内存的某一页去掉,把这一页内容写到内存里。
    在这里插入图片描述
    在这里插入图片描述
    驻留位是1,就可以找到实实在在的物理内存地址。
    驻留位有效时,看修改位。修改位为1,且我想把这一页放到外存中,要把内存中修改的内容写回到外存;修改位为0,若外存中有相应内容,就只需把这页作废。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    虚拟页式存储实例
    X代表逻辑地址空间中的对应页号没有映射到物理内存。
    在这里插入图片描述
    (5)缺页中断的处理
    缺页异常分为两种处理情况,第一种是物理内存中有空闲的帧,第二种是物理内存没有空闲帧,需要把别的帧赶走。
    页表项中逻辑页号有很多物理帧号却较少,把要替换的帧放到外存中后要改相应页表项的标志位。新的帧装入内存后也要把对应的页表项修改。
    在这里插入图片描述
    在这里插入图片描述
    (6)性能
    有效访问存储的时间:第一部分是读内存的时间,第二部分是缺页时从硬盘上读的时间。第二部分中,不管有没有空闲帧的空间,只要缺页就一定要访问硬盘,花费时间5000000p,还有就是,如果要把其他修改过的帧赶走,还要花时间把它写到外存中,花费时间5000000pq。
    在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值