操作系统之虚拟存储器

虚拟存储器概述

1. 常规存储器管理方式的特征和局部性原理

  • 常规存储器管理方式的特征:

    • 一次性。要求将作业全部装入内存才能运行,当程序大于内存时,作业无法运行。
    • 驻留性。装入内存中用的作业一直驻留内存,直到运行结束(处于等待状态的进程也占用内存)。
  • 局部性原理:
    • 时间局限性。如果程序中的某条指令一旦执行, 则不久以后该指令可能再次执行;如果某数据被访问过, 则不久以后该数据可能再次被访问。产生时间局限性的典型原因,是由于在程序中存在着大量的循环操作。
    • 空间局限性。一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行。

2. 虚拟存储器的定义和特征

  • 虚拟存储器定义:

    • 具有请求调入功能和置换功能, 能从逻辑上对内存容量加以扩充的一种存储器系统。
    • 其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
  • 虚拟存储器的特征 :
    • 多次性:作业被分成多次调入内存运行。
    • 对换性:允许在作业的运行过程中进行换进、换出。
    • 虚拟性:从逻辑上扩充内存容量。
  • 实现虚拟存储器的效果:
    • 可使一个大的用户程序能在较小的内存空间中运行;也可在内存同时装入更多的进程使它们并发执行。
    • 从用户的角度看,该系统所具有的内存容量,比实际容量大得多。这只是一种感觉,是虚的。故称为虚拟存储器。
    • 虚拟空间的容量由系统的有效地址长度决定。假设地址长度为32,按字节寻址,则虚拟存储空间大小为232个字节。即32位的操作系统,用户程序只能编写最多4G的程序(虚存空间) 。

虚拟存储的实现方式

1. 请求分页存储管理方式

(1) 请求分页的硬件支持
  • 请求页标机制,将用户地址空间中的逻辑地址映射成为内存空间中的物理地址。
  • 请求分页系统中的每个页表结构如下:

  • 状态位P:表明该页是否在内存。
  • 访问字段A:记录本页在一段时间内被访问的次数,或记录本页最近有多长时间未被访问,供换出页面时参考。
  • 修改位M:查看此页在调入内存后是否被修改过。供置换页面时参考。
  • 外存地址:指出该页在外存上的地址,供调入该页时参考。
(2) 缺页中端机构
  • 要访问的页不在内存时,便产生了一个缺页中断,请求操作系统将该页面调入内存。缺页中断同其它中断一样要经历CPU环境保护、分析中断原因、转入中断处理程序、恢复CPU环境等步骤。但缺页中断又是一种特殊的中断。
  • 这种中断在指令执行期间产生和处理中断信号。
  • 一条指令在执行期间可能产生多次缺页中断。
  • 地址变换机构如下图:

(1) 请求分页中的页面置换算法
  • 最佳置换算法

    • 其所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。
    • 实际上该算法是无法实现的。
  • 先进先出置换算法
    • 实现方便。不需要额外硬件。 效果不好。
  • 最近最久未使用LRU算法
    • 根据页面调入内存后的使用情况来做出决策。
    • 为了快速知道哪一页是最近最久未使用的页面,需要硬件支持。
  • Clock置换算法
    • 简单的Clock置换算法
    • 只需要为每页设置一位访问位,再将内存中的所有页面都通过链接指针连接成一个循环队列。当某页访问时,其访问位被置为1.置换算法在选择一页淘汰时,只需要检查页的访问位。如果是0,就选择该页换出。若为1,则将其重新置为0,暂不换出。给与第二次驻留内存的机会。流程如下:

  • 改进的Clock置换算法
    • 在将一个页面换出时,若该页已被修改过,便将该页重新写回磁盘上,但如果该页未被修改过,则不必将它考回磁盘。
    • 改进型Clock算法:换出的页面是既未使用的、又未被修改过的页面。
    • 在Clock算法的访问为A基础上加一个修改位M。
    • 由访问位A和修改位M可以组合成下面四种类型的页面:
      • 1类(A=0, M=0):表示该页最近既未被访问, 又未被修改, 是最佳淘汰页。
      • 2类(A=0, M=1): 表示该页最近未被访问, 但已被修改, 并不是很好的淘汰页。
      • 3类(A=1, M=0): 最近已被访问, 但未被修改, 该页有可能再被访问。
      • 4类(A=1, M=1):最近已被访问且被修改, 该页可能再被访问。
    • 其执行过程可分成以下三步:
      • 从指针所指示的当前位置开始, 扫描循环队列, 寻找A=0且M=0的第一类页面, 将所遇到的第一个页面作为所选中的淘汰页。 在第一次扫描期间不改变访问位A(改变访问位会对第2步产生影响)。
      • 如果第一步失败,即查找一周后未遇到第一类页面, 则开始第二轮扫描,寻找A=0且M=1的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位都置0。
      • 否则第三遍找A=0,M=0的页面,有则淘汰(其实这里的A=0,M=0的页面是由A=1,M=0的页面被第2步修改形成的)。
      • 否则第四遍找A=0,M=1的页面,(肯定会找到)。其实这里的A=0,M=1的页面是由A=1,M=1的页面被第2步修改形成的)。
(2) 抖动
  • 产生原因:

    • 因系统中运行的进程太多,分配给每个进程的物理块太少,导致每个进程在运行时,频繁地出现缺页,必须请求OS将所缺的页调入内存。

2. 请求分段存储管理方式

虚拟段式分配又称为请求分段,在程序装入时,只需调入几个分段而不是所有的分段。随着程序的运行,如果需要访问的段不在内存,可以请求操作系统把需要的段调入内存。

(1) 请求分段中的硬件支持
  • 请求段表机制:

  • 存取方式:表明本段是只执行、只读,还是允许读/写。
  • 访问字段A :用于记录该段被访问的频繁程度。
  • 修改位M:用于记录该段在进入内存后是否被修改过。
  • 存在位P :记录该段是否已调入内存。
  • 增补位:表明本段在运行过程中,是否做过动态增长。
  • 外存始址:表明本段在外存中的起始盘号。
(2) 缺段中断机构
  • 请求分段系统中的中断处理过程:

  • 请求分段系统中的地址变换机构:

时间: 2024-07-28 22:08:12

操作系统之虚拟存储器的相关文章

【操作系统】虚拟存储器

相关文章: [操作系统]存储器管理 [操作系统]处理机调度简述 [操作系统]之进程管理 [操作系统]经典的同步问题(生产者消费者问题, 哲学家进餐问题, 读写问题) 内存的容量有限, 如果有大作业或大量作业运行, 内存就会不够用. 为解决这一问题边催生了虚拟存储器的概念. 常规存储器管理方式的特征 一次性 作业必须一次性地全部装入内存后才能开始运行. 驻留性 作业被装入内存后, 整个作业都一直驻留在内存中, 其中任何部分都不会被换出, 直至作业运行结束. 局部性原理 由1968年P.Dennin

[CSAPP笔记][第九章虚拟存储器][十分核心]

9.虚拟存储器 为了更加有效地管理存储器且少出错,现代系统提供了对主存的抽象概念,叫做虚拟存储器(VM). 虚拟存储器是硬件异常,硬件地址翻译,主存,磁盘文件和内核软件的完美交互. 为每个进程提供一个大的,一致的和 私有的地址空间. 提供了3个重要能力. 将主存看成磁盘地址空间的高速缓存. 只保留了活动区域,并根据需要在磁盘和主存间来回传送数据,高效使用主存. 为每个进程提供一致的地址空间 简化存储器管理 保护了每个进程的地址空间不被其他进程破坏. 程序员为什么要理解它? 虚拟存储器是中心的.

39 - 同步-异步-IO多路复用

目录 1 同步与异步 2 阻塞与非阻塞 3 什么是IO 3.1 内核态用户态 3.2 IO两个阶段 3.3 IO模型 3.3.1 同步阻塞IO 3.3.2 同步非阻塞IO 3.3.3 IO多路复用 3.3.4 异步IO 4 Python中的IO多路复用 4.1 selectors库 4.2 register方法 4.3 利用selectors完成IO多路复用版本的EchoServer 4.4 聊天室 1 同步与异步 同步和异步关注的是程序在执行时的状态: 同步,可以理解为在执行完一个函数或方法之

操作系统-页式虚拟存储器管理系统设计

(大三下学期开学)操作系统课程设计 题外话: 介个系统的算法啊其实很简单很好理解,就是当时自己实践的时候整了好久,各种调bug各种惆怅啊! 但是此乃100%原创哇!真是老老实实光啃操作系统书自己设计出来的,啥参考都没有 写完的时候真是太有成就感了(流泪) 还为此特别手写了算法研究了好久,刚刚翻出笔记本发现自己为了研究地址变换画了个小漫画!(见最下页) 当时的计划:2/27实现的目标:能够根据作业大小为作业分配空间,建立页表.2/28实现的目标:完成两种算法的设计与调试3/1实现的目标:完善展示界

操作系统--虚拟存储器

虚拟存储器概述 常规的存储器特征 一次性:是指一次性将作业的所有内容装入到内存中才能开始程序的运行,其中有很多的东西没有用到,严重了浪费了内存,也对内存空间的大小有一定的要求 驻留性:装入内存的程序里面的东西是不会置换出内存的,知道程序运行结束.这也大大的浪费了内存空间. 局部性原理 时间的局部性:程序运行的时候大多数的时候都是多次去执行一个指令,因为有多次的循环操作,导致了时间的局限性 空间的局限性:程序运行的时候cpu可能多次的去访问已经访问过的存储单元,其附近的存储单元也可能被访问,所以c

操作系统基础知识

操作系统的分类: 批处理操作系统.分时操作系统.实时操作系统.网络操作系统.分布式操作系统.个人计算机操作系统. 批处理操作系统: 优:资源共享,自动调度,提高了资源利用率和系统分吞吐量. 劣:无交互,周转时间较长. 多道批处理程序要处理的问题:同步互斥,内存大小,使用效率,内存保护 分时系统:联机多用户交互式操作系统,中断技术,时间片轮转 优:人机交互性好,共享主机 ,用户独立性 实时操作系统:联机系统,对外部请求能够在规定的时间内完成. 特点:有限等待 有限响应 用户控制 可靠性高 出错处理

操作系统 内存地址(逻辑地址、线性地址、物理地址)概念

逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分.例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干.只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换):逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段.数据段如果完全一样).应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是

操作系统 汤子瀛版 读书总结

用了一周时间,看哈工大操作系统的视频,学习完操作系统前六章.这本书是2000年的版本. 主要学习操作系统五大功能:进程管理,处理机管理,存储器管理,设备管理,文件管理.还有操作系统接口. 视频和书本的内容偏概念,主要是对操作系统有宏观的了解,没有做实际的实验. 第一章引论介绍了一些整体的概念. 第二章进程管理,对进程有了概念,明白了进程是系统进行资源分配和调度的一个独立单位,进程的创建.控制.同步等在系统中活动的过程.理解了信号量机制和生产者-消费者等经典问题.线程是系统中独立运行的最小单位.

操作系统 庞丽萍 第七章

1. 存储管理的功能与目的是什么? 主要包括以下四个方面:(1)映射逻辑地址到物理主存地址:(2)在多用户之间分配物理主存:(3)对各个用户区的信息提供保护措施:(4)扩充逻辑主存区. 2.物理地址 VS 逻辑地址 把内存分成若干个大小相等的单元,每个单元给个编号,就是物理地址,又称为绝对地址或者实地址: 逻辑地址是用户编程序时所用的地址,又称为程序地址或者虚地址. 为了支持多道程序运行,方便用户使用:使得多用户程序共享主存, 必须要解决主存区域如何分配.各个区域内信息如何保护等问题.如果直接以