精华内容
下载资源
问答
  • 7.2.3 内存覆盖技术 覆盖_Overlay 常驻区:被某段单独且固定地占用,可划分多个. 覆盖区:能被多段共用(覆盖),可划分多个. 覆盖的缺点 编程复杂:程序员划分程序模块并确定覆盖关系 程序执行时间长:从外存装入内存...

    7.1.3 内存覆盖技术
    覆盖_Overlay

    • 常驻区:被某段单独且固定地占用,可划分多个.
    • 覆盖区:能被多段共用(覆盖),可划分多个.

    覆盖的缺点

    • 编程复杂:程序员划分程序模块并确定覆盖关系
    • 程序执行时间长:从外存装入内存耗时
    展开全文
  • 后来人们引入了覆盖技术,用来解决”程序大小超过物理内存总和”的问题 覆盖技术的思想:就是将程序分为多个段(多个模块), 常用的段常驻内存,不常用的段的需要调入内存内存中分为一个固定区 和若干个覆盖区...

    首先,我们要先了解清楚的问题是,为什么会出现内存扩充?这个可以思考一下

    好,开始正文:

    覆盖技术:

    早起的计算机内存很小,比如IBM推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。

    后来人们引入了覆盖技术,用来解决”程序大小超过物理内存总和”的问题

    覆盖技术的思想:就是将程序分为多个段(多个模块),

    常用的段常驻内存,不常用的段的需要调入内存。

    内存中分为一个固定区 和若干个覆盖区

    常用的段呢存储在固定区,调入后就不会再调出(除非结束运行)

    不常用的段放在覆盖区  需要用到的时候调入内存,用不到的时候调出内存

    从下图:

    以上面这张图为例,main方法是必须要使用到的,必然会存储在固定去,但是B 和C是两个分支,不可能同时执行,这个时候,就会把这两个程序存储在覆盖区域,

    执行谁的时候,就会把那一个调入内存,另一个调出内存。同理,下面的分支同上。

     

    必须由程序员声明覆盖结构,操作系统完成自动覆盖。缺点:对用户不透明,增加了用户变成负担。

    覆盖技术只用于早起的操作系统,现在的操作系统已经不在使用。

     

    交换技术:

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

     

    暂时换出外村等待的进程状态为挂起状态(挂起态 suspend)

    挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态

    看一下进程状态转换图:

    每产生新的思想和新的方式的时候,肯定会有新问题的出现,那下面几个问题就是需要去思考的几个问题:

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

    2.什么时候应该进行交换

    3.应该换入换出哪些进程?

     

    1.具有交换功能的操作系统中,通常会把磁盘分为两个区,一个是对换区,一个是文件去两部分。文件区呢主要来存储文件,主要追求存储空间的利用率,因此

    对文件区空间的管理采用离散分配方式。

    对换区空间只占磁盘空间的一小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响系统的整体速度,因此对换区空间的管理主要追求的事换入换出的速度,

    因此通常对换区采用连续分配方式。总之就是,对换区的I/O速度比文件区的更快。

    2.交换通常在许多进程运行且内存吃紧的时候进行的,而系统负荷降低就暂停。

    例如:在发现许多进程运行时经常发生缺页,就说明内存吃紧,此时可以换出一些进程;

    如果缺页率明显下降,就可以暂停换出、

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

    Pcb会常驻内存,不会被换出外存,因为进程的换入换出等相关位置和状态都会存储在pcb中。

    展开全文
  • 如果程序太大,超过了内存的容量,可以采用手动的覆盖(overlay)技术,只把需要的指令和数据保存在内存当中; 如果程序太多,超过了内存的容量,可以采用自动交换技术(swapping)技术,把暂时不能执行的...

    理想的存储器:更大、更快、更便宜的非易失性存储器(存储器层次结构实现)

    在早期(虚拟内存出现之前的解决方法)计算机系统当中,尤其是在多道程序运行的环境下,可能会出现内存不够的情况,怎么解决

    • 如果程序太大,超过了内存的容量,可以采用手动的覆盖(overlay)技术,只把需要的指令和数据保存在内存当中;
    • 如果程序太多,超过了内存的容量,可以采用自动交换技术(swapping)技术,把暂时不能执行的程序运送到外存当中;
    • 如果想要在有限容量的内存中,以更小的页粒度为单位装入更多更大的程序,可以采用自动的虚拟存储技术;

    覆盖技术:

    目标:是在较小的可用内存中运行较大的程序。常用多道程序系统,与分区存储管理配合使用。(产生于上世纪八十年代和九十年代初,当时的代表操作系统是DOS,硬件只有640K的内存)

    基本原理:把程序按照其自身的逻辑结构,划分为若干个功能上相对独立的程序模块,那些不会同时执行的模块共享一块内存区域,按时间先后来运行。

    • 必要部分(常用功能)的代码和数据常驻内存;
    • 可选部分(不常用功能)在其它程序模块中实现,平时存放在外存当中,在需要的时候才装入内存;
    • 不存在调用关系的模块不必同时装入到内存当中,从而可以相互覆盖,即这些模块公用一个分区;

    缺点

    • 有程序员来把一个大的程序划分为若干个小的功能模块,并确定各个模块之间的覆盖关系,费时费力,增加了编程的复杂度;
    • 覆盖模块从外存装入内存,实际上是以时间的延长来换取空间的节省;

    交换技术(由操作系统完成):

    目标:多道程序在内存中时,让正在运行的程序或需要运行的程序获得更多的内存资源

    方法:

    • 可将暂时不能运行的程序运送到外存,从而获得空闲的内存空间。
    • 操作系统把一个进程的整个地址空间的内容保存到外存中(换出 swap out),而将外存中某个进程的地址攻坚读入到内存当中(换入 swap in)。换入换出内容的大小为整个程序的地址空间。

    交换技术实现中的几个问题:

    • 交换时机的确定:何时需要发生交换?只有当内存空间不够或者有不够的危险时换出;
    • 交换区的大小:必须足够大以存放所有用户进程的所有内存映像的拷贝;必须能够对这些内存映像进行直接存取;
    • 程序换入时的重定位:换出后再换入的内存位置一定要在原来的位置上吗,不一定,最好采用动态地址映射的方法。

    覆盖技术与交换技术的比较:
    • 覆盖只能发生在那些相互之间没有调用关系的进程模块之间,因此程序员必须给出程序内的各个模块之间的逻辑覆盖结构。

    • 交换技术是以在内存中的程序大小为单位来进行的,它不需要程序员给出各个模块之间的逻辑覆盖结构。换言之,交换发生在内存中程序与管理程序或者操作系统之间,而覆盖则发生在运行程序的内部;


    提示:为了更好的理解知识点,博主在微信公众号中将操作系统知识进行了重新排版和插入图片。感兴趣的朋友可以扫码进行关注。

    在这里插入图片描述

    展开全文
  • 随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的

          随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的存储器。

    首先想到的就是硬盘,所以在硬盘的基础上建立了覆盖技术,把常用的数据放在内存,不常用的数据放在外存。或者使用交换技术,把最近使用的数据放在内存,把很久没用的内存数据换到外存。现如今,我们在分页分段的基础上建立了虚拟内存技术。

     

    一、覆盖技术

        典型的案例是DOS操作系统:

       程序需要按照自身的逻辑划分出多个功能上独立的模块把那些不会同时运行的模块共享同一个内存空间(分区),按照时间的先后来执行。这需要一个常驻内存的代码空间,它主要负责管理在某个时间段把哪些数据,函数导入/导出内存。对于不常用的功能,在其他程序执行的时候需要把这功能上的数据放到外存中去,需要的时候再装入内存。

    此覆盖技术的缺点就是需要程序员自己去实现各个模块之间的覆盖关系,大大增加了编程难度。另外,模块用调用时间来换取内存空间的节约。其程序的运行时间效率会大大降低。

     

    二、交换技术

       典型案例 Unix 操作系统。

       考虑由操作系统来帮助程序员完成数据的导入/导出操作。在CPU 和 MMU (内存管理单元)的帮助下,在某个时刻将整个程序的空间导出到外存中。在需要的访问的时候,再把整个程序空间导入到内存中。此技术需要考虑的问题是:

    1)什么时候开始交换?

         当内存不够用或者内存有不够用的风险时才考虑换出。内存读写和硬盘读写效率相差甚大,可能内存需要在次读程序时还要等硬盘写完才能够换入

    2)交换区的大小应为多大合适?

    3)程序换入时的重定位

        当需要换入的时候,分配到的内存空间可能会不一样,那么程序运行时寻址的问题就需要考虑了?可以考虑页表的动态地址映射。

    三、虚拟内存技术

           像覆盖技术那样,虚存技术并不会把所有程序都搬到内存中,因而可以运行比空闲内存还要大的程序。但这个分配部分程序的实现不再由程序员完成,而是由操作系统和MMU完成。也像交换技术一样,在某些情况可以以更小的粒度(页)为单位实现内存与外存的交换。

           程序的局部性原理:分为时间局部性和空间局部性。所谓时间局部性就是一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在很短的时间内。所谓的空间局部性当前指令的和邻近的指令,当前访问数据的邻近的数据访问,其内存地址都集中在很小的空间中。

          虚拟页式内存管理:当用户程序需要把数据调入内存中时,只把部分指令的数据装进内存中。如果正常执行指令的时候发现,数据不在内存中,则会抛出缺页/缺段中断给操作系统请求调页。之后,由操作系统把外存的数据按页搬进内存中,如果程序内存的可用空间不足,那么操作系统会考虑(页面置换算法)把哪些内存数据换出到外存,腾出内存空间。

        虚拟内存有大用户空间、部分交换、不连续性的特征。把物理内存和外存相结合,使执行用户程序可以比内存大,换入/换出操作使得程序虚拟内存的分配可能不连续,但是寻址由操作系统完成。

        有效存储器访问时间(EAT,Effective Memory Access Time ) =访问内存时间 * 页表命中几率   + 缺页处理时间  *  页表非命中几率。

    dirty page  :脏页,正在写磁盘或者等待写磁盘的页

    page fault : 缺页异常, 当访问内存时,找不到数据对应的页。

    展开全文
  • 本节主要讲覆盖技术和交换技术,虚拟存储技术在后续小节会详细展开。 实现内存空间扩充的技术 一、覆盖技术 用于解决“程序大小超过物理内存总和”的问题。 思想: 将程序分为多个段,常用的段常驻在内存,不...
  • 一、覆盖技术 基本思想:将一个程序分为多段,对于常用的段应当常驻内存,不常用的段在需要的时候进入内存 采用这种技术的时候,内存中被划分为:一个固定区 + N个覆盖区。常驻内存的段进入固定区(进入之后只有在...
  • 覆盖技术的思想:将程序分为多个段(多个模块)。 常用的段常驻内存,不常用的段在需要时调入内存内存中分为一个“固定区”和若干个“覆盖区”。 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行...
  • 文章目录知识总览覆盖技术交换技术知识回顾 知识总览 覆盖技术 缺点 交换技术 知识回顾
  • 有何作用进程的运行原理 - 指令逻辑地址VS物理地址内存管理内存保护内存覆盖内存交换技术内存分配单一连续分配固定分区分配动态分区分配动态分配算法 什么是内存?有何作用 内存是用于存放数据的硬件。程序执行前需要...
  • 操作系统笔记(五)覆盖和交换,虚拟内存

    万次阅读 多人点赞 2017-02-09 00:09:30
    5-2 覆盖技术 5-3 交换技术 5-4,5 虚拟内存5-1 虚拟内存:起因内存越来越不够用,理想中的存储器是更大,更快,更便宜的非易失存储器。 为了有效管理物理内存,采用了分段,分页,也许在这个基础上可以达到更大...
  • 首先明白交换技术和覆盖技术是用来干嘛的? 相同点:都是为了内存扩张 1.覆盖技术:按逻辑把程序分段,然后运行时只把需要的程序装入。不需要的就调出。可以节省内存空间。(程序比内存大也可以运行) 缺点:覆盖...
  • C++内存管理技术内幕

    千次阅读 2015-11-22 09:19:04
    这几天在整理硬盘的资料,发现一个PDF,名字叫《C++内存管理技术内幕》,名字很霸气,于是顺着好奇心打开看看。花了一个多小时,终于看完,看完的感觉就是相见恨晚啊,写的如此之好,想看看这篇文章是谁写的,结果找...
  • 虚拟内存虚存的起源覆盖技术交换技术 虚存的起源 (从二维方块到3D和动画CG)电子游戏所占的内存越来越大,对计算机要求的性能也就越来越过。也就说程序规模的增长远大于储存器容量增长的速度。 我们理想中的存储器...
  • 覆盖技术目的是使得单个程序尽可能少的占用内存资源,要求程序员在代码中指定内存的使用与释放,对代码要求较高。其具体实现有点类似union结构体的功能,同一块内存实现分时复用,不过必须是没有相互调用关系的子...
  • 操作系统(3)—— 虚拟内存 本节要学习的知识点如下: 虚拟内存的起因 覆盖技术 交换技术 虚存技术 一. 虚拟内存的起因 ...程序太大,超过内存容量,可以采用手动的覆盖技术,只把需要的指令和...
  • 1、覆盖技术 1、作用:解决“程序大小超过物理内存总和”的问题 2、思想**:将程序分为多个段,在需要运行时,需要长驻的段放入内存的固定区(1个),不需要常驻的段放入内存的覆盖区(多个) 3、举例: 4、缺点:...
  • 虚拟存储:在非连续存储内存分配的基础上,可以把一部分内容放到外存的做法 需求背景: 增长迅速的存储需求:程序规模的增长速度远远大于存储器容量的增长速度 理想的存储器:更大,更快,更便宜,非易...覆盖overl...
  • 验证复杂的SoC设计要耗费极大的成本和时间。据证实,验证一个设计所需的时间会随着...在一个全功能处理器模型上执行代码的缺点是模型运行较慢,因此只有少量软件会使用这个技术执行。很多固件执行由取指令操作和内存
  • http://www.cnblogs.com/heiyue/p/3271421.html Keil C51编译及连接技术
  • 4.5覆盖与交换技术

    千次阅读 2010-10-20 00:08:00
    覆盖技术 覆盖技术是指一个程序的若干程序段,或几个程序的某些部分共享某一个存储空间。 下面举一个例子说明覆盖技术的特点,参见图4-19。 图 假设作业1的程序正文由A、B、C、D、E、F等6个程序段组。它们...
  • 一. 交换技术和覆盖技术(一) 存储扩容概述(二) 覆盖技术1. 概述2. 原理3. 优缺点(三) 交换技术1. 原理2. 优缺点二. 虚拟存储(一) 局部性原理1. 时间局部性2. 空间局部性(二) 虚拟存储(三) 虚拟存储的...
  • 1.覆盖技术 2.交换技术 3.虚拟存储技术 3.1传统存储管理方式的缺点 3.2局部性原理 3.3虚拟内存的定义和特征 3.4如何实现虚拟内存技术 3.5小结​ 1.覆盖技术 2.交换技术 3.虚拟存储技术 3.1...
  • 一,内存空间的分配和回收 二,内存空间的扩充(实现虚拟性) 三,地址转换(操作系统负责实现逻辑地址到物理地址的转换) 1,绝对装入:编译器负责地址转换(单道程序阶段,无操作系统) 2,可重定位装入:装入...
  • 22、内存管理概述 (1)内存管理的功能 内存管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。为此存储管理应具有以下功能: 内存的分配与回收...
  • 操作系统 内存管理

    2019-08-31 12:05:01
    操作系统要做的事情 内存空间的分配与回收 内存分配 优点 缺点 连续内存分配 ... 可以采用覆盖技术扩充内存 不一定要内存保护 只能用于单用户和单任务的操作系...
  • 内存管理基本知识

    2019-03-18 15:18:45
    二、虚拟内存1、虚拟内存原理2、虚拟内存的优缺点三、内存覆盖与内存交换1、内存覆盖2、内存交换四、内存连续分配管理方式1、内部碎片2、外部碎片五、内存连续分配管理方式1、单一连续分配2、固定分区分配3、动态...
  • 操作系统-3.2-内存

    2021-08-03 16:20:21
    覆盖与交换技术3.1覆盖技术3.2交换技术3.3总结4.连续分配管理方式4.1单一连续分配4.2固定分区分配4.3动态分区分配4.4总结 操作系统-3.2-内存 本节内存管理中内存空间的扩充的技术和内存空间的分配与回收中的连续...
  • 文章目录1 内存概念1.1 内存作用1.2 逻辑地址VS物理地址1.3 装入的三种方式1.4 链接的三种方式1.5 内存的基础知识小结2 内存管理2.1 内存管理的任务2.2 内存管理小结2.3 内存空间扩充2.3.1 内存空间扩充之覆盖技术...
  • 历史的弃子——从覆盖技术说起 崭新的思路——交换的思想 从连续到离散——基本分页,基本分段,基本段页式 被欺骗的眼睛——虚拟内存       引子 在讨论「如何」提高内存利用率之前,先问一句「为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,077
精华内容 28,830
关键字:

内存覆盖技术缺点