内存覆盖及内存交换

14 篇文章 1 订阅
订阅专栏

内存覆盖和交换技术是在多道程序环境下用来扩充内存的两种方法。

覆盖技术主要用在早期的操作系统中,而交换技术在现代操作系统中具有较强的生命力。

一、内存覆盖(Overlay)

在早期的计算机系统中,主存容量很小。虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生。这一矛盾可以用覆盖技术来解决。

1、覆盖的基本思想是:
由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分为一个固定区若干个覆盖区

经常活跃的部分放在固定区其余部分按照调用关系分段,首先将那些即将要访问的段放入覆盖区,其他段放在外存中,在需要调用前,系统将其调入覆盖区,替换覆盖区中原有的段。

---- 覆盖技术的实现是把程序划分为若干个功能上相对独立的程序段,按照其自身的逻辑结构使那些不会同时运行的程序段共享同一块内存区域。程序段先保存在磁盘上,当有关程序的前一部分执行结束后,把后续程序段调入内存,覆盖前面的程序段。

---- 所谓覆盖,就是把一个大的程序划分为一系列覆盖,每个覆盖就是一个相对独立的程序单位,把程序执行时并不要求同时装入内存的覆盖组成一组,称为覆盖段。一个覆盖段内的覆盖共享同一存储区域,该区域成为覆盖区,它与覆盖段一一对应。显然,为了使一个覆盖区能为相应覆盖段中的每个覆盖在不同时刻共享,其大小应由覆盖段中的最大覆盖来确定。

---- 覆盖技术要求程序员必须把一个程序划分为不同的程序段,并规定好它们的执行和覆盖顺序,操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。

例如,一个用户程序由6个模块组成,下图给出了各个模块的调用关系,Main模块是一个独立的段,其调用A和B模块,A和B是互斥被调用的两个模块。在A模块执行过程中,调用C模块;而在B模块执行过程中,它可能调用D或E模块(D和E模块也是互斥被调用的)。为该用户程序建立的覆盖结构如下:Main模块是常驻段,其余部分组成两个覆盖段。
在这里插入图片描述
由以上推理可知,A和B模块组成覆盖段1,C、D和E组成覆盖段2。为了实现真正覆盖,相应的覆盖区应为每个覆盖段中最大覆盖的大小。

2、覆盖技术的特点
打破了必须将一个进程的全部信息装入内存后才能运行的限制,但当同时运行程序的代码量大于主存时仍不能运行,再而,内存中能够更新的地方只有覆盖区的段,不在覆盖区的段会常驻内存。

二、内存交换(Swapping)

1、交换(对换)的基本思想是:

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

换入:把准备好竞争CPU运行的程序从辅存移到内存。

换出:把处于等待状态(或CPU调度原则下被剥夺运行权力)的程序从内存移到辅存,把内存空间腾出来。

中级调度(策略)就是釆用交换技术。

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

1)对换的引入

在多道程序环境下,一方面,在内存中的某些进程由于某事件尚未发生而被阻塞运行,但它却占用了大量的内存空间,甚至有时可能出现在内存中所有进程都被阻塞而迫使CPU停止下来等待的情况。另一方面,却又有着许多作业在外存等待,因无内存而不能进入内存运行的情况。显然这是对系统资源的一种严重浪费,使系统吞吐量下降,于是增设了对换(交换)设施。

----- 所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程调入内存。

----- 如果对换是以整个进程为单位的,便称之为“整体对换”或“进程对换”。解决内存紧张的问题。

----- 如果对换是以“页“或”段“为单位进行的,则分别称之为”页面对换“或”分段对换“。为了实现进程对换,系统必须能实现3个方面的功能:对换空间的管理、进程的换出、进程的换入。

2)对换空间的管理

在具有对换功能的OS中,通常把外存分为文件区和对换区。前者用于存放文件,后者用于存放从内存换出的进程。对换区采用的是连续分配的方式(考虑到对换的速度)。

3)进程的换出与换入

换出:每当一进程由于创建子进程而需要更多的内存空间,但又无足够的内存空间等情况发生时,系统应将某进程换出。系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动磁盘,将该进程的程序和数据传送到磁盘的对换区。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改。

换入:把外存交换区中的数据和程序换到内存中。系统应定时的查看所有进程的状态,从中找出”就绪“状态但已换出的进程。将其中换出时间最久(换出到磁盘上)的进程作为换入进程,将之换入。直至已无可换入的进程或无可换出的进程为止。交换的特点是打破了一个程序一旦进入主存便一直运行到结束的限制,但运行的进程大小仍受实际主存的限制。

---- 与覆盖技术相比,交换不要求程序员给出程序段之间的覆盖结构,而且交换主要是在进程或作业之间进行;而覆盖则主要在同一个作业或进程中进行。另外,覆盖只能覆盖与覆盖程序段无关的程序段。

计算机内存覆写,内存覆盖内存交换
weixin_39678493的博客
07-24 1110
覆盖交换技术是在多程序环境中扩展内存的两种方法.覆盖技术主要用于早期操作系统,而交换技术在现代操作系统中仍然具有强大的生命力.1. 内存覆盖(覆盖)在早期的计算机系统中,主存储器容量很小. 尽管仅一个用户程序存储在主存储器中,但是用户处理无法放入存储空间的现象也经常发生. 这种矛盾可以用覆盖技术解决. 覆盖的基本思想是: 由于程序不需要随时访问程序和数据的所有部分(特别是大型程序),因此用户空间...
操作系统~内存管理之覆盖交换、连续内存分配,不愧是阿里P8
m0_60568072的博客
03-31 943
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
第4章 内存管理.ppt
06-22
◆熟悉存储管理目的和功能,掌握地址重定位的概念。 ◆熟悉单一连续分配、固定分区、可变分区实现原理,掌握可变分区分配的数据结构和分配回收算法。了解覆盖交换的概念。 ◆熟练掌握分页存储管理原理,熟练掌握基本的地址变换机构和具有快表的地址变换机构。掌握请求分页的页表机制、缺页中断机构和地址变换机构,掌握页面置换算法。 ◆掌握虚拟存储器的理论基础和定义,熟悉虚拟存储器实现方式和特征。掌握分段、分页和段页式存储管理原理和地址变换机构。
内存与工作内存数据交换八个步骤:
weixin_50697861的博客
11-23 119
内存与工作内存数据交换八个步骤;java面试
操作系统~内存管理之覆盖交换、连续内存分配(1)
最新发布
VIP129370的博客
04-12 1010
面试建议是,
磁盘(硬盘)概述、磁盘缓存、虚拟内存及虚拟内存内存交换方式。相当于单片机启动方式选择从FLASH,内部RAM.或者原子嵌入式linux启动方式:EMMC或者NAND存储启动
二进制模----细微行动改变影响世界
08-26 396
https://blog.csdn.net/m0_61961937/article/details/127150247
讲解覆盖交换技术的PPT
12-03
在多道环境下扩充内存的方法,用以解决在较小的存储空间中运行较大程序时遇到的矛盾.覆盖技术主要用在早期的操作系统交换技术被广泛用于小型分时系统中,交换技术的发展导致了虚存技术的出现.
2.内存覆盖内存交换
chengonghao的博客
03-28 720
转载自:http://c.biancheng.net/cpp/html/2609.html点击打开链接 覆盖交换技术是在多道程序环境下用来扩充内存的两种方法。 内存覆盖 早期的计算机系统中,主存容量很小,虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生,这一矛盾可以用覆盖技术来解决。 覆盖的基本思想是:由于程序运行时并非任何时候都要访问程序及数据的各个部分
操作系统】3.2 内存覆盖交换
weixin_45434953的博客
03-04 344
覆盖交换 覆盖 如果在程序运行期间要将所有的程序数据装入内存,那么60G大的GTA5就需要60G的运行内存了。但是实际上在程序运行时,有些数据是暂时不需要的,他们可以暂时不装入内存这么快。比如下图:B模块和C模块是不会同时执行的,因此只需要在内存中空出一个10K的覆盖区,在需要B的时候将B存入,要C的时候将C存入,而不是将B和C都存入内存覆盖技术提升了内存的使用效率,将暂时不需要使用的信息留在了外存。但是哪些是需要使用的哪些是不需要使用的,需要在编写程序的时候需要指明,这增加了程序猿的负担和设计程序
内存管理中内存空间的扩充——覆盖技术与交换技术
CHEN的博客笔记
08-28 686
文章目录前言知识总览覆盖技术交换技术知识回顾与重要考点 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。 提示:以下是本篇文章正文内容 知识总览 覆盖技术 交换技术 交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度) 中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。 进程的PCB是需要常驻内存的。 暂时换出外存等待
内存覆盖交换
qq_36610334的博客
08-31 180
1. 内存覆盖 需要程序员声明覆盖结构,已退出历史舞台。 2. 内存交换 指的是将某些进程暂时换出外存,成为挂起态;将外存中某些具备运行条件的进程换入内存
MMU内存管理单元
06-06
但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程 序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块...
wiper:用于安全销毁敏感虚拟数据,临时文件和交换内存的工具包
05-23
用于安全销毁敏感虚拟数据,临时文件和交换内存的工具包。 它的设计目的是使有关个人数据销毁的任务变得更加容易,例如那些在员工离开公司时仍保留在工作计算机上的任务。 通过交互模式使整个过程变得更加容易,并...
内存虚拟物理硬盘(VSuite Ramdisk专业版) 4.5.7219.1638中文特别版
10-01
这对于频繁通过网络交换大容量文件的用户尤其有帮助。由于内存具有断电数据消失的特性,VSuite Ramdisk 也提供镜像功能,支持关机时自动保存数据到镜像文件以及开机时自动从镜像文件加载数据到虚拟硬盘,从而避免...
Linux源码剖析——内存交换
白话机器学习
07-24 352
最简单的方法就是把内存页放进一个队列里, 如果内存页被访问了, 就把内存页移动到链表的头部, 这样没被访问的内存页在一段时间后便会移动到队列的尾部, 而释放内存页时从链表的尾部开始. 著名的缓存服务器。的功能 -- 把某些进程的一些暂时用不到的内存页保存到磁盘中, 然后把物理内存页分配给更紧急的用户使用, 当进程用到时再从磁盘读回到内存中即可. 有了。如果在这个过程中, 内存页又被访问了, 那么Linux内核会把内存页移动到活跃链表中, 并且建立内存映射关系, 这样就不需要从磁盘中读取内存页的内容.
7.5 内存交换空间(swap)之创建
明确的爱,真诚的喜欢,直接的厌恶,站在太阳底下的坦荡,被坚定的选择。
07-04 324
安装时一定需要的两个 partition ,一个是根目录,另外一个就是 swap(内存交换空间)。
内存管理之覆盖交换
I feel lost
04-01 2336
覆盖交换覆盖  追根溯源——早期计算机系统内存容量小,虽然内存中只有一道用户程序,内存存储空间仍有可能放不下。覆盖的基本思想是:程序运行时并非任何时候都要访问程序及数据的各个部分,因此可以把用户空间分成一个固定区和若干个覆盖区。经常活跃的部分放在固定区,其余部分按调用关系分段。在覆盖区和外存(即磁盘)中屡次调入调出。特点是打破了必须将一个进程的全部信息装入主存后才能运行的限制。 交换  交换的基...
内存覆盖内存交换
热门推荐
dongyanxia1000的专栏
05-17 1万+
覆盖交换技术是在多道程序环境下用来扩充内存的两种方法。 1)内存覆盖 在早期的计算机系统中,主存容量很小。 虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生。 这一矛盾可以用覆盖技术来解决。 覆盖的基本思想是: -------  由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),            因此可以把用户空间分成一个固定区和
交换两段不连续的内存块(Swap Nonadjacent Memory Blocks)
Computer Graphics Changes Your Life
12-10 5474
问题:如何交换两段不连续的内存块?分析篇这道题是编程珠玑,第二版>第二章后的一个习题。看过这本书的朋友一定会对书中第二章介绍的用来交换两段连续的内存块的"reversal algorithm"一定记忆犹新。"reversal algorithm"无论在时间复杂度还是在空间复杂度上都有良好的表现,更重要的是它的实现相当简单:1。假设有两段连续的内存块a和b;2。首先对内存块a进行反转:a = re
linux查看用户内存
08-30
Linux下,可以使用多种方法来查看用户内存的使用情况。其中一种方法是使用gnome-system-monitor命令,它可以显示CPU历史、内存交换历史以及网络历史等信息,可以实时查看内存的使用情况,但无法查看buffer和cache的使用情况。 另一种方法是使用cat /proc/meminfo命令,它可以查看动态更新的虚拟文件,其中包含了许多关于内存的详细信息,可以得到更全面的了解。 还有一种常用的方法是使用free命令,它可以快速查看内存的使用情况。通过使用参数-h,可以以更人性化的方式显示内存的单位,而参数-m则以M的形式显示内存。 此外,还可以使用top命令来查看CPU的使用情况,它可以提供关于系统的实时统计信息,包括内存的使用情况。 另外,vmstat命令也是一种常用的工具,它可以显示实时的和平均的统计信息,覆盖了CPU、内存、I/O等内容。特别是对于内存情况,vmstat命令不仅显示物理内存的使用情况,还统计了虚拟内存的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux系统如何查看内存](https://blog.csdn.net/qq_44333320/article/details/125985576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux下快速查看CPU使用情况的相关命令](https://blog.csdn.net/boonya/article/details/68922919)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 指针和引用的区别 17260
  • 几种常见的指针类型 5481
  • 一个进程可以创建多少线程? 5030
  • 二叉树的最近公共祖先 4797
  • TCP对应的应用层协议之FTP /SMTP / HTTP 3944

分类专栏

  • git/github 2篇
  • 小tips 2篇
  • C语言 12篇
  • C++ 10篇
  • 算法与数据结构 8篇
  • 十大排序 8篇
  • 数组 15篇
  • 枚举 1篇
  • 栈和队列 9篇
  • 链表 8篇
  • 字符串 16篇
  • 哈希表 10篇
  • 二叉树 31篇
  • 回溯法 14篇
  • 贪心算法 18篇
  • 动态规划 44篇
  • acm竞赛 4篇
  • linux操作系统 14篇
  • 数据库 3篇
  • 计算机网络 10篇
  • linux 网络通信/高性能服务端编程 1篇
  • 设计模式
  • 框架 1篇
  • 分布式架构

最新评论

  • CAP 理论:分布式场景下我们真的只能三选二吗?

    CSDN-Ada助手: 云原生入门 技能树或许可以帮到你:https://edu.csdn.net/skill/cloud_native?utm_source=AI_act_cloud_native

  • 402.移掉K位数字,使得剩下数字最小

    qq_64904972: 完全是错误的

  • 三数之和

    PERSISTENCECUIY: 先去重再移动,去重已经移到了新位置,这样不就少判断了两个值吗。。。。[委屈][委屈]哪里想错了啊,求指正

  • 三数之和

    PERSISTENCECUIY: while(left<right&&nums【left+1】==nums【left】)left++; while(left<right&&nums【right-1】==nums【right】)right--; 这,如果有重复的话,已经把rightleft移动到了xindeweizhi,为啥还要有下面的语句? left++; right--; 找到了符合条件的三元组不应该是先进行left++;right—,再进行去重吗。while(left<right&&nums【left+1】==nums【left】)left++; while(left<right&&nums【right-1】==nums【right】)right--;

  • 二叉树的最近公共祖先

    Uoyaij_: 不是原创就别投原创!!!!!!!!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • CAP 理论:分布式场景下我们真的只能三选二吗?
  • 二维数组数组名的使用
  • 合并排序的数组
2024年1篇
2021年239篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码朔州网络推广报价淮南推广网站推荐常州关键词按天计费延边网站建设设计价格太原至尊标王推荐双龙建设网站价格临沂关键词排名包年推广价格永州百度seo报价株洲网络推广南阳企业网站改版公司丹东关键词按天计费大芬网站优化软件报价黄南网站优化按天收费多少钱宿州SEO按天计费价格辽源外贸网站建设双龙网站建设哪家好晋城网络推广报价漯河网站推广多少钱大鹏模板推广多少钱许昌网站制作设计凉山企业网站改版哪家好福田网络广告推广多少钱赣州百度seo衡阳企业网站制作广东网站推广阿坝百姓网标王价格丹东网站建设多少钱西乡优秀网站设计海西网络推广多少钱天门优秀网站设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化