操作系统(五)虚拟存储器管理

在这里插入图片描述

一学期的可也算是基本上完了,不知道大家学的怎样。
应朋友之约,我来总结一下这学期学的操作系统课程,方便大家复习。
总纲:https://blog.csdn.net/qq_43762191/article/details/106411766 (带思维导图)

概述

虚拟存储器就是使用虚拟技术从逻辑上对存储器进行扩充。

局部性原理

一次性和驻留性严重地降低内存的利用率,显著地减少了系统吞吐量。
研究表明,程序在执行过程中呈现局部性原理。

时间局部性

一条指令被执行后,那么它可能很快会再次被执行

空间局部性

若某一存储单元被访问,那么与该存储单元相邻的单元可能也会很快被访问

局部性原理使得虚拟存储技术的实现成为可能。一个程序特别是一个大型程序的一部分装入内存是可以运行的。

虚拟存储器的特征

可以把一个程序分多次装入内存,每次装入当前运行需要使用的部分——多次性;
在程序执行过程中,可以把当前暂不使用的部分换出内存,若以后需要时再换进内存——交换性即非驻留性;
程序在内存中可分段存放,每一段是连续的——离散性。
虚拟存储器还有一个最重要的特征——虚拟性,从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。

虚拟存储器定义

所谓虚拟存储器,是指仅把程序的一部分装入内存便可运行程序的存储器系统。具体地说,所谓虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。

虚拟存储器并非可以无限大,其容量受外存大小和指令中地址长度两方面的限制。

分页虚拟存储管理方式

分页虚拟存储管理

基本原理

分页虚拟存储管理方式是在分页系统的基础上,增加了请求调页功能、页面置换功能所形成的虚拟存储器系统。
在分页虚拟存储管理时使用的页表,是在原来页表的基础上发展起来的,包括以下内容:物理块号、状态位、访问位、修改位、外存地址 。

缺页中断

每当要访问的页面不在内存时,便产生一缺页中断,请求操作系统把所缺页面调入内存。,请求操作系统把所缺页面调入内存。缺页中断作为中断,它同样需要经历诸如保护CPU现场环境、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU环境等几个步骤。

缺页中断与与一般的中断的区别

-在指令执行期间产生和处理中断信号。
-一条指令在执行期间,可能产生多次缺页中断。

地址变换

在分页存储管理方式中的地址变换机构的基础上,增加了产生和处理缺页中断,以及从内存中换出一页等功能。具体过程:

  • 保存当前进程的CPU现场环境,从辅存中找到该页;
  • 查看当前内存是否有空闲空间调入该页,如果有则启动I/O,将该页由辅存调入内存,同时修改页表,再按分页存储管理方式的地址变换过程转换地址;如果内存已满,则按照某种算法选择一页作为淘汰页调出,腾出空间后再调入。当然如果被淘汰的页在内存中已经被修改过,则需将该页写回辅存。

页面置换算法

如果内存空间己被装满而又要装入新页时,必须按某种算法将内存中的一些页淘汰出去,以便调入新页,这个工作称为“页面置换”。选择被淘汰页的方法成为页面置换算法。

下面都看这张图,并思考如何实现

在这里插入图片描述

最佳置换算法

-算法:淘汰那些以后永不使用,或者是在最长时间内不再被访问的页
-无法实现的,只能作为其它置换算法的衡量标准

先进先出算法

-算法:每次淘汰最先进入内存的页
-优点:简单,易于实现
-缺点:效率不高,可能产生“抖动”现象

先进先出算法

-算法:每次淘汰最先进入内存的页
-优点:简单,易于实现
-缺点:效率不高,可能产生“抖动”现象

最近最久未使用(LRU)算法

-算法:淘汰那些在最近一段时间里最久未被使用的一页
- LRU算法是较好的一个算法,但是开销太大,要求系统有较多的支持硬件(移位寄存器或栈)

改进型Clock置换算法

-算法:除了考虑到页面的使用情况外,还增加了置换代价,选择换出页面时,既要是未使用过的页面,又要是未被修改过的页面把同时满足两条件的页面作为首选被淘汰的页。
-该算法与简单Clock算法比较,可减少磁盘的I/O操作次数 ,但实现该算法本身的开销将有所增加

分页虚拟存储器

内存分配策略和分配算法

最小物理块数
  • 最小物理块数是指能保证进程正常运行所需的最少物理块数。
  • 进程所需的最少物理块数与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。
物理块的分配策略
固定分配局部置换
  • 基于进程的类型或根据程序员的建议,为每个进程分配一定数量的物理块,在整个运行期间都不再改变。

  • 如果进程在运行期间发现缺页,则只能在该进程在内存的n个页面中选出一页换出,然后在调入一页,保证分配给该进程的物理块数保持不变。

  • 困难:难以确定为每个进程分配的物理块数,若太少,则会频繁地出现缺页中断,降低了系统的吞吐量;若太多,则必然使内存中驻留的进程数目减少,进而可能造成CPU空间或其它资源的浪费,而且在实现进程交换时,会花费更多的时间。

可变分配全局置换
  • 先为系统中的每个进程分配一定数量的物理块,而操作系统本身也保留一个空闲物理块队列。
  • 当某个进程发现缺页时,由系统从空闲物理块队列中,取出一个物理块分配给该进程,并将欲调入的(缺)页装入其中。仅当空闲物理块队列中的物理块用完时,操作系统才从内存中选择一页调出,该页可能是系统中任一进程的页,
  • 会使被淘汰页的那个进程的物理块数减少,进而使其缺页率增加。
  • 最容易实现的一种物理块分配和置换策略。
可变分配局部置换
  • 进程的类型或根据程序员的要求,为每个进程分配一定数目的物理块;但当某进程发生缺页时,只允许从该进程在内存的页面中选出一页换出。
  • 如果进程在运行中频繁地发生缺页中断,则系统须再为该进程分配若干附加的物理块,直至进程的缺页率减低到适当程度为止;反之,若一个进程在运行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理块,但不应引起其缺页率的明显增加。

调页策略

请求调页策略
  • 当缺页中断发生时进行调度,即当访问某一页面而该页面不在内存时由操作系统将其调入内存。
    预调页策略
  • 也称先行调度,是当缺页中断发生前进行调度,即当一个页面即将被访问之前就将其调入内存。
  • 预调页可以节省进程因缺页中断而等待页面调入的时间。

抖动问题

-进程的大部分时间,都用于页面的换进换出,而几乎不能再去做任何有效的工作,从而导致发生处理机利用率急剧下降,而趋于零的现象,我们称此时系统处于抖动状态。
-产生抖动的原因
产生抖动的根本原因是,系统中进程的数量太多,因此分配给每个进程的物理块数量太少,使得每个进程在运行时频繁的发生缺页中断
-工作集
所谓工作集就是指在某段时间间隔∆内,进程访问页面的集合。为了使进程有较低的缺页率,应在该段时间内把进程的全部工作集装入内存中

预防抖动的方法
采用局部置换策略
利用工作集算法防止抖动
利用“L=S”准则调节缺页率
挂起某些进程	  

分段虚拟存储管理

基本原理

-分段虚拟存储管理原理同分页虚拟存储管理原理一样,在程序运行前,不必调入所有分段,只需先调入若干个分段便可启动运行。当所访问的段不在内存中时,可请求操作系统将所缺的段调入内存
-分段虚拟存储管理中的段表包括:段名、段长、段的基址、存取方式、访问位、修改位、存在位、增补位和外存地址

缺段中断

-在分段虚拟存储管理系统中,如果访问的段不在内存中,系统将产生一个缺段中断,请求操作系统将该段调入到内存
-缺段中断和缺页中断一样 ,但段是信息的逻辑单位,所以不可能出现一条指令和一组信息被分割在两个段里的情况

段的共享

-利用段的动态链接很容易实现段的共享,一个共享段在不同作业中可具有不同的段号
-设立一张共享段表对段的共享进行集中管理

  • 可重入代码又称为“纯代码”,是一种允许多个进程同时访问的代码。

猜你喜欢

转载自blog.csdn.net/qq_43762191/article/details/106741897