首页 > 系统相关 >操作系统 内存空间的扩充(虚拟内存)

操作系统 内存空间的扩充(虚拟内存)

时间:2022-11-29 21:23:03浏览次数:51  
标签:操作系统 中断 内存空间 访问 内存 进程 缺页 虚拟内存 页面

覆盖与交换

 

1. 覆盖与交换

覆盖, 交换, 虚拟存储技术常用于实现内存空间的扩充

 

1.1 覆盖技术

覆盖技术的思想:将程序分为多个段,常用的段常驻内存,不常用的段在需要的时候调入内存

内存中分为一个"固定区" 和若干个"覆盖区",常用的段放在固定区,不常用的段放在覆盖区

缺点:必须由程序员声明覆盖结构, 对用户不透明, 增加了用户的编程负担,覆盖技术只用于早期的操作系统中。

1.2 交换技术

交换技术的思想:内存空间紧张时, 系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(即进程在内存与磁盘间动态调度)

1、应该在外存(磁盘)的什么位置保存被换出的进程?

2、什么时候应该交换?

3、应该换出哪些进程?

 

1.具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式。总之,对换区的I/o速度比文件区的更快。

2.交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。

3.可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时。

  

2. 虚拟内存

虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。

 

2.1 传统存储管理方式的特征、缺点

1、一次性:作业必须一次性全部装入内存后才能开始运行

  • 作业很大时,无法装入导致大作业无法运行
  • 大量作业要求运行时内存无法容纳所有作业,导致多道程序并发度下降


2、驻留性:一旦作业被装入内存,就会一直驻留在内存中,直到作业运行结束,这样会导致内存中驻留大量的,暂时用不到的数据,浪费内存资源。

2.2 高速缓冲技术的思想

将近期会频繁访问到的数据放到更高速的存储器中,暂时用不到的数据放在更低速存储器中。

 

2.3 虚拟内存的定义和特征

  • 在程序装入时,将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。
  • 在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息由外存调入内存,然后继续执行程序。请求调页/段
  • 内存空间不够时, 操作系统负责将内存中暂时用不到的信息换出到外存。页面置换
  • 在用户看来,就有一个比实际内存大很多的内存,这就叫虚拟内存。

 

虚拟内存的最大容量是由计算机的地址结构(CPU的寻址范围)确定的

虚拟内存的实际容量 = min(内存容量+外存容量,CPU寻址范围)

特征

多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调入内存。

对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入、换出。

虚拟性:从逻辑上扩充了内存的容量,使用户看到的内存容量远大于实际容量。

 

 

2.4 虚拟内存的实现

请求分页存储管理

页表机制

缺页中断机构

在请求分页操作系统中,每当要访问的页面不在内存时,便产生一个缺页中断, 然后由操作系统的缺页中断处理程序处理中断。

此时缺页的进程阻塞,放入阻塞队列,调页完成后再将其唤醒, 放回就绪队列。

  • 如果内存中有空闲块,则为进程分配一个空闲块,将所缺页面装入该块,并修改页表中相应的页表项
  • 如果内存中没有空闲块,则由页面置换算法选择一个页面淘汰,若该页面在内存期间被修改过,则要将其写回外存,未修改过的页面不用写回外存。


缺页中断是因为当前执行的指令想要访问目标页面未调入内存而产生的,因此属于内中断(故障) 。

 

页面置换算法

 

1. 最佳置换(Optimal, OPT)

1.1 基本思想

  置换以后不再被访问,或者在将来最迟才回被访问的页面,缺页中断率最低。但是该算法需要依据以后各业的使用情况,而当一个进程还未运行完成是,很难估计哪一个页面是以后不再使用或在最长时间以后才会用到的页面。所以该算法是不能实现的。但该算法仍然有意义,作为很亮其他算法优劣的一个标准。

1.2 算例

  采用固定分配局部置换的策略,嘉定系统为某进程在内存中分配了3个物理块,页面访问顺序为2、3、2、1、5、2、4、5、3、2、5、2。假定系统未采用预调页策略,即未事先调入任何页面。

      进程运行时,一次将2、3、1三个页面调入内存,发生3次缺页中断。当第一次访问页面5时,产生第4次缺页中断,根据OPT算法,淘汰页面1,因为它在以后不会在使用了;第5次缺页中断时,淘汰页面2,因为它在5、3、2三个页面中,是在将来最迟才会被页面访问的页面。

      以此类推:   

    注意:第4次中断时将最后不会访问的1剔除,将最后才访问的3放入最下面的内存块中,以后的调度过程中,最后不会访问或最后才被访问的页面总是放在最下面的内存块中。内存块从上到下依次存放最先访问的页面。   

    中断次数为6,缺页中断率为6/12*100% = 50%。

 

 

2. 先进先出置换算法(First In First Out, FIFO)

2.1 基本思想

  置换最先调入内存的页面,即置换在内存中驻留时间最久的页面。按照进入内存的先后次序排列成队列,从队尾进入,从队首删除。但是该算法会淘汰经常访问的页面,不适应进程实际运行的规律,目前已经很少使用。

2.2 算例

  仍然以OPT算例为例子。   

  中断次数为6,缺页中断率为9/12*100% = 75%。

2.3 Belady异常

  一般来说,分配给进程的物理块越多,运行时的缺页次数应该越少,使用FIFO时,可能存在相反情况,分配4个物理块的缺页竟然比3个物理块的缺页次数还多!   

  例如:进程访问顺序为0、2、1、3、0、2、4、0、2、1、3、4。   M=3时,缺页中断9次。

  缺页中断率9/12*100% = 75%。

  M=4时,缺页中断10次。缺页中断率10/12*100% = 83.3%。

 

3 最近最久未使用置换算法(Least Recently Used, LRU)

3.1 基本思想

  置换最近一段时间以来最长时间未访问过的页面。根据程序局部性原理,刚被访问的页面,可能马上又要被访问;而较长时间内没有被访问的页面,可能最近不会被访问。   

  LRU算法普偏地适用于各种类型的程序,但是系统要时时刻刻对各页的访问历史情况加以记录和更新,开销太大,因此LRU算法必须要有硬件的支持。

3.2 算例

  仍然以OPT算例为例子。   

   中断次数为6,缺页中断率为7/12*100% = 58.3%。

堆栈实现LRU:   

  系统使用特殊的堆栈来存放内存中每一个页面的页号。每当访问一页时就调整一次,即把被访问页面的页号从栈中移出再压入栈顶。因此,栈顶始终是最新被访问页面的页号,栈底始终是最近最久未被访问的页号。当发生缺页中断时,总是淘汰栈底页号所对应的页面。 

 

标签:操作系统,中断,内存空间,访问,内存,进程,缺页,虚拟内存,页面
From: https://www.cnblogs.com/wxk1213/p/16936759.html

相关文章

  • 操作系统原理之线程的分类:用户级线程和内核级线程
    本篇文章作为Java并发编程的前置重点知识,有助于理解乐观锁和悲观锁。 这个世界上只有两种锁-->乐观锁:指的是在操作数据的时候非常乐观,乐观地认为别人不会同时修改数据,......
  • 图数据平台解决方案:操作系统环境准备
    图数据平台解决方案:操作系统环境准备​​图数据平台解决方案:操作系统环境准备​​​​一、安装CentOS系统​​​​二、安装Xshell7终端管理工具​​​​三、安装Java运行环......
  • 快速hodl,操作系统精华摘要
    小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。在​​实践​​​的道路上走的太远,就需要回头看一下​​理论​​。操作系统,可以说是基础知识中的重中之重。它不像汽......
  • 操作系统03_1
    内存的基础知识知识总览.什么是内存?有何作用?.补充知识:几个常用的数量单位.进程的运行原理—指令.执行数据传送指令:将01001111内存地址中的数据传送到000000......
  • VirtualBox-Ubuntu-哈工大李治军操作系统课程实验环境搭建
    每次更换电脑,都需要重新搭建操作系统的实验环境,每次都在网上找来找去,很麻烦,干脆就自己记录下整个搭建过程吧。(一)下载实验所需的资源linux-0.11源码、Bochs、用来编译li......
  • C++ 预防死锁和银行家算法(操作系统)
    /*子函数声明*/intIsprocessallover();//判断系统中的进程是否全部运行完毕voidSystemstatus();//显示当前系统中的资源......
  • 自制操作系统 Step 2 —— Bootloader(一)
    部分内容来源于《一个60位操作系统的设计与实现》此博客仅记录学习过程。一、BIOS引导原理BIOS自检结束后会根据启动选项设置选择启动设备,即检测软盘的第0磁头-第......
  • 操作系统迁移实战之Apache 2.4.39 移植
    ApacheHTTPServer(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件......
  • U盘恢复内存空间变小问题
    第一步:按下Win+R,输入cmd打开命令提示符第二步:输入diskpart,进入磁盘管理第三步:输入listdisk,展示磁盘列表第三步:输入selectdisk2,选择所需要恢复内存空间的U盘第四......
  • 用虚拟机VMware安装雪豹提示:当前主机无法支持64位操作系统
    这个原因我知道,因为你的CPU不支持Intel虚拟化技术,所以无法在32位主机上装64位系统,100%的原因。AMD的CPU有很多都支持的,但是Intel的,据我所知,T6600都不行,T6670才支持虚拟化技......