操作系统原理 —— 内存覆盖与交换(十九)

news2024/11/26 22:30:03

什么情况下需要覆盖与交换

要弄清楚什么是覆盖与交换的概念,首先我们要知道在什么情况下才会使用到覆盖与交换。

在早期的计算机内存很小的时候,比如 IBM 推出的第一台 PC 机最大只支持 1 MB 大小的内存,因此会经常出现内存大小不够的情况,后来就引入了 覆盖技术 用来解决程序内存大小超过了物理内存总和的问题。

说白了就是我需要运行一个 20 MB 大小的程序,但是这台计算机内存大小只有 10 MB 那怎么运行呢? 带入这个问题,我们接着往下看 覆盖技术 是如何解决这个问题的。

覆盖的实现方式

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

简单点说,就是将内存分为一个固定区,若干个覆盖区,经常需要用到的程序就会放入这个固定区,调入后就不再调出,除非程序结束运行。不常用的程序就会放在覆盖区,需要用的时候就调入内存,用不到的时候就调出内存。

接下来我们来看个实际的例子,更加容易理解:
在这里插入图片描述

有一个程序 X,这个程序指定了调用结构,如图上所示, A 是主要的调用,所以 A 是被放在了固定区当中,紧接着 A 调用了 B、C,在这个时候 B、C 属于同一个层级,被放入了同一个覆盖区,但是覆盖区域大小是以 C 为主,选择最大的,否则就不满足内存大小了,这个覆盖区,让那些不可能同时被访问的程序段,共享一个覆盖区。 同样的道理 D、E、F 共用一个覆盖区。

原本 B、C、D、E、F 它们共占了 44 K 的内存,但是由于覆盖技术,只需要占用 22 K 的内存就搞定了。

在这里就有同学好奇了,那程序是如何指定调用结构的呢? 这个呀,必须由程序员声明覆盖结构,然后由操作系统完整自动覆盖。 缺点:对用户不透明,而且还增加了程序员编程的负担,覆盖技术只用于早期的操作系统中,现在已经成为历史了

那既然覆盖技术已经不再使用了,那现在用的啥技术呀? 我们接着往下看

交换的实现方式

交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出到外存,把外存中某些已具备运行条件的进程换入内存,也就是进程在内存与硬盘之间动态调度,也就是我们之前章节所讲的中级调度。

大家一起来思考一下如下几个问题:

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

2、什么时候应该交换?

3、应唤出哪些进程?

我们一个个问题来看,先看第一个:应该在外存的什么位置保存被换出的进程?

如果你当前使用的操作系统,它是具备交换功能的,那么通常操作系统会把磁盘空间划分为两个部分:文件区、对换区文件区主要就是用来存放文件,被唤出的进程数据就保存在对换区

既让这个对换区 是和我们内存打交道比较频繁的,会直接影响系统的整体速度,所以对换区通常采用的是连续分配方式,I/O 的速度是肯定要比文件区的速度更快。在这里还有同学可能不理解什么是连续分配方式,这个在文件管理的章节中会讲到。

接着来看第二个问题,交换通常是在许多进程运行并且内存吃紧时进行交换,等待系统负荷降低了就暂停。比如说:在发现很多进程在运行的时候经常发生缺页,就说明内存比较紧张了,此时就可以换出一些进程。

那最后操作系统发现内存资源紧张了,那该换出哪些进程呢? 有这么几个参考条件: 可优先换出当前处于阻塞状态的进程,也可以优先换出优先级比较低的进程。 但是要注意一点,被唤出的进程所属的 PCB 是会常驻在内存的,如果 PCB 都没有了,那内存对应的记录都找不到了,PCB 通常会记录该进程被唤出在外存的具体位置,便于重新调入时可找。

本章总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++函数重载与运算符重载基础

什么是重载 重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 重载的作用:重载函数常用来实现功能类似而所处理的…

【C语言】数组和字符串

目录 数组和字符串 概述 一维数组 一维数组的定义和使用 一维数组的初始化 数组名 二维数组 字符数组与字符串 字符数组与字符串区别 数组和字符串 概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。 数组就…

紧接上文,基于轻量级yolov5s模型开发构建手写甲骨文检测识别系统

在我之前的文章中,关于手写文字、手写数字、手写字母的检测识别相关的项目都有了不少的实践了,这里就不在赘述了,感兴趣的话可以自行移步阅读即可。 《基于轻量级目标检测模型实现手写汉字检测识别计数》 《python开发构建基于机器学习模型…

【ICEM CFD】导入模型后,即使勾选point和curve也看不到几何模型上的点和线

一、问题背景 导入模型后,即使勾选point和curve也看不到几何模型上的点和线。 二、解决办法 原来导入模型后,往往第一步最需要操作的是!!! 构建拓扑!!! Build Diagnostic Topolo…

完美解决safari、微信浏览器下拉回弹效果、包含微信小程序 webview 套H5页面下拉效果。

如题,解决微信小程序、公众号 下拉回弹橡皮筋效果, 屏蔽掉 “此网页由XXXXX提供”; // 禁止页面上下整体滑动 document.body.style.overflow "hidden"

基于Jmeter+ant+Jenkins+钉钉机器人群通知的接口自动化测试

前言 搭建jmeterantjenkins环境有些前提条件,那就是要先配置好java环境,本地java环境至少是JDK8及以上版本,最好是JAVA11或者JAVA17等较高的java环境,像jenkins这种持续构建工具基本都在向上兼容JAVA的环境,以前的JAV…

为什么网络安全人口很稀缺,招聘人数却很少?

2020年我国网络空间安全人才数量缺口超过了140万,就业人数却只有10多万,缺口高达了93%。这里就有人会问了: 1、网络安全行业为什么这么缺人? 2、明明人才那么稀缺,为什么招聘时招安全的人员却没有那么多呢&#xff1…

常见数据库(MSSQL,Mysql,PostgreSQL,Oracle)安装注意事项

常见数据库安装注意事项 (原标题: DataWindowHTTP数据库安装) 转载请保留版权消息勿删除:(谢绝转载到任何文档网站!) blog.csdn.net/chengg0769 http://www.powerbuilder.ltd http://www.haojiaocheng.…

设计模式(行为型模式)之:Observer(观察者模式)

文章目录 动机使用场景代码实现类图结构模式分析: 动机 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” - 一个对象(目标对象)的状态改变,所有的依赖对象(观察者对象)都将得到通…

绝不能错过!8款AI文案神器,让你轻松写出优质文案

无论你是否准备好,它们都已经来了。如果你知道如何使用它们,AI文案工具可以成为你的新朋友。 现在AI文案工具无处不在,眼花缭乱,从内容生成器到电子商务聊天机器人。原因很简单:AI可以节省大量时间和金钱。这是我们都喜…

markdown 编辑器使用

在博客开头加上 [TOC](这是你的目录标题)就可以根据博客内容自动生成如下所示的目录: 这是你的目录标题 Markdown 编辑器功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表无序…

智慧城市的建设需要数字孪生技术吗?

智慧城市建设需要依靠多种技术来实现数字化、智能化和可持续发展的目标。其中,数字孪生技术在智慧城市建设中起着重要的作用。 首先,数字孪生技术可以提供高度精确的城市建筑和基础设施的数字模型。通过对城市的建筑、道路、水系等要素进行数字化建模&a…

vue.set this.$set的作用

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法 当一个对象在vue中是响应式的,如果仅仅使用普通的方式向这个对象添加或修改这个属性的值,是不会触发视图更新的 但是使用 vue.set 或者 this.$set 的方式可以使得新添加的属性也是响…

【ARM AMBA AXI 入门 2 - AXI协议中的BURST】

文章目录 1.1 突发传输简介1.1.1 AXI4 突发传输控制信号1.1.1.1 AxLEN 突发传输长度1.1.1.2 AxSIZE 突发传输宽度1.1.1.3 AxBURST 突发传输类型 1.1.2 AXI 传输实例 1.1 突发传输简介 在地址总线上进行一次地址传输后,进行多次数据传输( data transfer)…

GPT4 在医学任务表现-Capabilities of GPT-4 on Medical Challenge Problems

微软和openai在2023年4月的论文。 Capabilities of GPT-4 on Medical Challenge Problems 数据集介绍 USMLE Self Assessments:问题,有表格 USMLE Sample Exam:pdf,有图片 MedQA:多语种多选, PubMedQA…

基于Python的接口自动化-pymysql模块操作数据库

目录 引言 一、PyMySQL安装 二、Python操作数据库 写在最后 引言 在进行功能或者接口测试时常常需要通过连接数据库,操作和查看相关的数据表数据,用于构建测试数据、核对功能、验证数据一致性,接口的数据库操作是否正确等。 因此&#x…

MES系统选择指南:企业如何选择适合需求的MES管理系统?

MES(Manufacturing Execution System)管理系统是一种用于生产管理的软件系统,可以帮助企业提高生产效率、降低成本和提高质量。然而,不同类型的MES管理系统适用于不同类型的企业需求,因此选择适合自己企业需求的MES管理…

基于瑞芯微芯片RK3399学习

同是soc,参加新星计划学习下大佬的思路 sys系统 针对:(内核)1.1、通过sysfs清楚了解设备的系统状况的学习 通过了解sys目录和文件了解嵌入式设备的系统状况。 sysfs把连接在系统上的设备和总线组织成为一个分级的文件&#xff0c…

全国职业院校技能大赛信息安全管理与评估赛题一

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 赛题一 模块一 网络平台搭建与设备安全防护 赛项时间 共计180分钟。 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 任务1 网络平台搭建 XX:XX- XX:XX 50 任务…

第6章SpringMVC的RESTful

一、RESTful 1.RESTful简介 REST:Representational State Transfer,表现层资源状态转移 ①资源 将服务器看作是由很多离散的资源组成。每个资源是服务器上一个可命名的抽象概念 ②资源的表述 源的表述可以有多种格式,例如HTML/XML/JSON…