精华内容
下载资源
问答
  • 内存覆盖技术缺点
    2019-06-07 13:40:41

    7.1.3 内存覆盖技术
    覆盖_Overlay

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

    覆盖的缺点

    • 编程复杂:程序员划分程序模块并确定覆盖关系
    • 程序执行时间长:从外存装入内存耗时
    更多相关内容
  • 随着时间的推移,程序不断地更新,规模不断增长,运行的时候可能会发现内存会越来越不够用。所以希望一个容量大,更快,更便宜,数据不易丢失的

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

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

     

    一、覆盖技术

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

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

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

     

    二、交换技术

       典型案例 Unix 操作系统。

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

    1)什么时候开始交换?

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

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

    3)程序换入时的重定位

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

    三、虚拟内存技术

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

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

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

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

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

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

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

    展开全文
  • 1.覆盖技术:解决"程序大小超过物理内存总和"的问题。 (1)覆盖技术的思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存内存中分为一个"固定区"和若干个"覆盖区"。 常驻...

    3.13内存空间的扩充——覆盖与交换:

    1.覆盖技术:解决"程序大小超过物理内存总和"的问题。

        (1)覆盖技术的思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。
            内存中分为一个"固定区"和若干个"覆盖区"。

    •         常驻内存的段放在"固定区"中,调入后就不再调出(除非运行结束)。
    •         不常用的段放在"覆盖区",需要用到时调入内存,用不到时调出内存。

            必须由程序员声明覆盖结构,操作系统完成自动覆盖。
            缺点:对用户不透明,增加了用户编程负担。
            覆盖技术只用于早期的操作系统中,现在已成为历史。

     

    2.交换/对换技术:

        (1)交换技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)。
            之前的中级调度就是为了实现交换技术而使用的一种策略。
            中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。


        (2)应该在外存(磁盘)的什么位置保存被换出进程?
            具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分。
                文件区:主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;
                对换区:空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式。
                对换区的I/O速度比文件区的更快。


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


        (4)应该换出哪些进程?
            可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间。(注意:PCB会常驻内存,不会被换出外存)
     

    3.小结:

    展开全文
  • 有何作用进程的运行原理 - 指令逻辑地址VS物理地址内存管理内存保护内存覆盖内存交换技术内存分配单一连续分配固定分区分配动态分区分配动态分配算法 什么是内存?有何作用 内存是用于存放数据的硬件。程序执行前需要...

    什么是内存?有何作用

    内存是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。

    在多道程序环境下,系统中会有多个程序并发执行,也就是说会有多个程序的数据需要同时放到内存中。那么,如何区分各个程序的数据是放在什么地方的呢?

    方案:给内存的存储单元编地址

    在这里插入图片描述
    值得注意的就是每个计算机的位数不同, 有16位, 32位, 那么每个地址对应的存储空间是不一样的, 而且CPU一次处理指令的位数也是不一样的

    进程的运行原理 - 指令

    在这里插入图片描述
    在这里插入图片描述
    可见,我们写的代码要翻译成CPu能识别的指令。这些指令会告诉cPU应该去内存的哪个地址存/取数据,这个数据应该做什么样的处理。在这个例子中,指令中直接给出了变量x的实际存放地址(物理地址)但实际在生成机器指令的时候并不知道该进程的数据会被放到什么位置。所以编译生成的指令中一般是使用逻辑地址(相对地址)

    逻辑地址VS物理地址

    宿舍四个人一起出去旅行,四个人的学号尾号分别是0、1、2、3。
    住酒店时酒店给你们安排了4个房号相连的房间。
    四个人按学号递增次序入住房间。
    比如0、1、2、3号同学分别入住了5、6、7、8号房间。
    四个人的编号0、1、2、3其实是一个“相对位置”,而各自入住的房间号是一个“绝对位置”。
    只要知道О号同学住的是房号为N的房间,那么M号同学的房号一定是N+M。
    也就是说,只要知道各个同学的“相对位置”和“起始房号”,就一定可以算出所有同学的“绝对位置”

    指令中的地址也可以采用这种思想。编译时产生的指令只关心“相对地址”,实际放入内存中时再想办法根据起始位置得到“绝对地址”

    Eg:编译时只需确定变量x存放的相对地址是100(也就是说相对于进程在内存中的起始地址而言的地址)。CPU想要找到x在内存中的实际存放位置,只需要用进程的起始地址+100即可。

    相对地址又称逻辑地址,绝对地址又称物理地址。

    内存管理

    操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?

    1.操作系统负责内存空间的分配与回收
    2.操作系统需要提供某种技术从逻辑上对内存空间进行扩充
    3.操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
    4.操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰

    内存保护

    内存保护可采取两种方法:
    方法一:在CPu中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPu检查是否越界。
    在这里插入图片描述
    方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。
    在这里插入图片描述

    内存覆盖

    早期的计算机内存很小,比如IBM推出的第一台PC机最大只支持1MB大小的内存。因此经常会出现内存大小不够的情况。
    在这里插入图片描述

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

    覆盖技术的思想:将程序分为多个段(多个模块)。常用的段常驻内存,不常用的段在需要时调入内存。内存中分为一个“固定区”和若干个“覆盖区”。

    需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行结束)
    不常用的段放在“覆盖区”,需要用到时调入内存,用不到时调出内存
    在这里插入图片描述
    必须由程序员声明覆盖结构,操作系统完成自动覆盖。缺点:对用户不透明,增加了用户编程负担。覆盖技术只用于早期的操作系统中,现在已成为历史。

    内存交换技术

    交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)
    暂时换出外存等待的进程状态为挂起状态(挂起态,suspend)
    挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态
    在这里插入图片描述
    交换(对换)技术的设计思想:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(进程在内存与磁盘间动态调度)

    但又会有以下问题

    1.应该在外存(磁盘)的什么位置保存被换出的进程?
    2.什么时候应该交换?
    3.应该换出哪些进程?

    在这里插入图片描述

    1.具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部分

    文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到系统的整体速度,因此对换区空间的管理主要追求换入换出速度,因此通常对换区采用连续分配方式。总之,对换区的I/o速度比文件区的更快。

    2.交换通常在许多进程运行且内存吃紧时进行,而系统负荷降低就暂停。例如:在发现许多进程运行时经常发生缺页,就说明内存紧张,此时可以换出一些进程;如果缺页率明显下降,就可以暂停换出。
    3. 可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出,有的系统还会考虑进程在内存的驻留时间…
    (注意:PCB会常驻内存,不会被换出外存)

    内存分配

    单一连续分配

    在单一连续分配方式中,内存被分为系统区和用户区。系统区通常位于内存的低地址部分,用于存放操作系统相关数据;用户区用于存放用户进程相关数据。

    内存中只能有一道用户程序,用户程序独占整个用户区空间。

    优点:实现简单;无外部碎片;可以采用覆盖技术扩充内存;不一定需要采取内存保护(eg:早期的PC操作系统MS-DOS) 。

    缺点:只能用于单用户、单任务的操作系统中;有内部碎片;存储器利用率极低。
    在这里插入图片描述

    固定分区分配

    20世纪6o年代出现了支持多道程序的系统,为了能在内存中装入多道程序,且这些程序之间又不会相互干扰,于是将整个用户空间划分为若干个固定大小的分区,在每个分区中只装入一道作业,这样就形成了最早的、最简单的一种可运行多道程序的内存管理方式。

    固定分区分配

    1. 分区大小相等
    2. 分区大小不等

    分区大小相等:缺乏灵活性,但是很适合用于用一台计算机控制多个相同对象的场合(比如:钢铁厂有n个相同的炼钢炉,就可把内存分为n个大小相等的区域存放n个炼钢炉控制程序)
    分区大小不等:增加了灵活性,可以满足不同大小的进程需求。根据常在系统中运行的作业大小情况进行划分(比如:划分多个小分区、适量中等分区、少量大分区)
    在这里插入图片描述
    优点:实现简单,无外部碎片。
    缺点: a.当用户程序太大时,可能所有的分区都不能满足需求,此时不得不采用覆盖技术来解决,但这又会降低性能;
    b.会产生内部碎片,内存利用率低。

    动态分区分配

    动态分区分配又称为可变分区分配。这种分配方式不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。因此系统分区的大小和数目是可变的。
    在这里插入图片描述
    在这里插入图片描述

    动态分区分配没有内部碎片,但是有外部碎片。
    内部碎片,分配给某进程的内存区域中,如果有些部分没有用上。
    外部碎片,是指内存中的某些空闲分区由于太小而难以利用。
    如果内存中空闲空间的总和本来可以满足某进程的要求,但由于进程需要的是一整块连续的内存空间,因此这些“碎片”不能满足进程的需求。

    可以通过紧凑(拼凑,Compaction)技术来解决外部碎片。

    动态分配算法

    首次适应算法
    算法思想:每次都从低地址开始查找,找到第一个能满足大小的空闲分区。
    如何实现:空闲分区以地址递增的次序排列。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
    优点:实现简单
    缺点:会有内存碎片化问题, 而且每次找到合适位置效率低

    最佳适应算法
    算法思想:由于动态分区分配是一种连续分配方式,为各进程分配的空间必须是连续的一整片区域。
    因此为了保证当“大进程”到来时能有连续的大片空间,可以尽可能多地留下大片的空闲区,即,优先使用更小的空闲区。
    如何实现:空闲分区按容量递增次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。
    在这里插入图片描述
    缺点:每次都选最小的分区进行分配,会留下越来越多的、很小的、难以利用的内存块。因此这种方法会产生很多的外部碎片。

    最坏适应算法
    又称最大适应算法(Largest Fit)
    算法思想:为了解决最佳适应算法的问题――即留下太多难以利用的小碎片,可以在每次分配时优先使用最大的连续空闲区,这样分配后剩余的空闲区就不会太小,更方便使用。
    如何实现:空闲分区按容量递减次序链接。每次分配内存时顺序查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

    缺点:每次都选最大的分区进行分配,虽然可以让分配后留下的空闲区更大,更可用,但是这种方式会导致较大的连续空闲区被迅速用完。如果之后有“大进程”到达,就没有内存分区可用了。

    邻近适应算法
    算法思想:首次适应算法每次都从链头开始查找的。这可能会导致低地址部分出现很多小的空闲分区,而每次分配查找时,都要经过这些分区,因此也增加了查找的开销。如果每次都从上次查找结束的位置开始检索,就能解决上述问题。
    如何实现:空闲分区以地址递增的顺序排列(可排成一个循环链表)。每次分配内存时从上次查找结束的位置开始查找空闲分区链(或空闲分区表),找到大小能满足要求的第一个空闲分区。

    在这里插入图片描述
    首次适应算法每次都要从头查找,每次都需要检索低地址的小分区。但是这种规则也决定了当低地址部分有更小的分区可以满足需求时,会更有可能用到低地址部分的小分区,也会更有可能把高地址部分的大分区保留下来(最佳适应算法的优点)

    邻近适应算法的规则可能会导致无论低地址、高地址部分的空闲分区都有相同的概率被使用,也就导致了高地址部分的大分区更可能被使用,划分为小分区,最后导致无大分区可用(最大适应算法的缺点)综合来看,四种算法中,首次适应算法的效果反而更好

    展开全文
  • 后来人们引入了覆盖技术,用来解决”程序大小超过物理内存总和”的问题 覆盖技术的思想:就是将程序分为多个段(多个模块), 常用的段常驻内存,不常用的段的需要调入内存内存中分为一个固定区 和若干个覆盖区...
  • 一、覆盖技术 基本思想:将一个程序分为多段,对于常用的段应当常驻内存,不常用的段在需要的时候进入内存 采用这种技术的时候,内存中被划分为:一个固定区 + N个覆盖区。常驻内存的段进入固定区(进入之后只有在...
  • 覆盖技术的思想:将程序分为多个段(多个模块)。 常用的段常驻内存,不常用的段在需要时调入内存内存中分为一个“固定区”和若干个“覆盖区”。 需要常驻内存的段放在“固定区”中,调入后就不再调出(除非运行...
  • 如果程序太大,超过了内存的容量,可以采用手动的覆盖(overlay)技术,只把需要的指令和数据保存在内存当中; 如果程序太多,超过了内存的容量,可以采用自动交换技术(swapping)技术,把暂时不能执行的...
  • 本节主要讲覆盖技术和交换技术,虚拟存储技术在后续小节会详细展开。 实现内存空间扩充的技术 一、覆盖技术 用于解决“程序大小超过物理内存总和”的问题。 思想: 将程序分为多个段,常用的段常驻在内存,不...
  • 内存覆盖 覆盖的基本思想是:由于程序运行时并非任何时候都要访问程序及数据的各个部分(尤其是大程序),因此可以把用户空间分成一个固定区和若干个覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。...
  • ​ 虚拟内存:将不同进程的虚拟地址和不同内存的物理地址映射起来,让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 ​ 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的...
  • 验证复杂的SoC设计要耗费极大的成本和时间。据证实,验证一个设计所需的时间会随着...在一个全功能处理器模型上执行代码的缺点是模型运行较慢,因此只有少量软件会使用这个技术执行。很多固件执行由取指令操作和内存
  • 首先明白交换技术和覆盖技术是用来干嘛的? 相同点:都是为了内存扩张 1.覆盖技术:按逻辑把程序分段,然后运行时只把需要的程序装入。不需要的就调出。可以节省内存空间。(程序比内存大也可以运行) 缺点:覆盖...
  • 每个现代计算机系统都配有高速可随机访问存储器,称为主存储器、物理内存或者直接称为内存内存是用于存放代码和数据的硬件,它是处理器能直接寻址的存储空间,内存由半导体器件制成,特点是存取速率快。程序被执行...
  • 虚拟存储:在非连续存储内存分配的基础上,可以把一部分内容放到外存的做法 需求背景: 增长迅速的存储需求:程序规模的增长速度远远大于存储器容量的增长速度 理想的存储器:更大,更快,更便宜,非易...覆盖overl...
  • 覆盖技术:主要用来解决程序大小超过物理内存总和的问题 (1)基本思想 思想:将程序分为多个段(多个模块) 需要常驻内存的段放在固定区,调入后不再调出 不常用的段放在覆盖区,需要用到时调入,用不到时调出 ...
  •  结果标明该函数已经被覆盖到了,但同时也查找到了新的错误:  我们的测试用例查找到了更多的内存相关错误。很显然,当失败处理函数被调用时,我们的内存初始化存在问题(空指针)。通过更进一步的分析,我们...
  • 操作系统(3)—— 虚拟内存 本节要学习的知识点如下: 虚拟内存的起因 覆盖技术 交换技术 虚存技术 一. 虚拟内存的起因 ...程序太大,超过内存容量,可以采用手动的覆盖技术,只把需要的指令和...
  • 历史的弃子——从覆盖技术说起 崭新的思路——交换的思想 从连续到离散——基本分页,基本分段,基本段页式 被欺骗的眼睛——虚拟内存       引子 在讨论「如何」提高内存利用率之前,先问一句「为...
  • 一. 交换技术和覆盖技术(一) 存储扩容概述(二) 覆盖技术1. 概述2. 原理3. 优缺点(三) 交换技术1. 原理2. 优缺点二. 虚拟存储(一) 局部性原理1. 时间局部性2. 空间局部性(二) 虚拟存储(三) 虚拟存储的...
  • 一,内存空间的分配和回收 二,内存空间的扩充(实现虚拟性) 三,地址转换(操作系统负责实现逻辑地址到物理地址的转换) 1,绝对装入:编译器负责地址转换(单道程序阶段,无操作系统) 2,可重定位装入:装入...
  • 文章目录知识总览覆盖技术交换技术知识回顾 知识总览 覆盖技术 缺点 交换技术 知识回顾
  • 建议将思维导图保存下来观看,或点击这里在线观看
  • 为什么要有虚拟内存

    千次阅读 多人点赞 2022-04-28 19:29:31
    4.1 为什么要有虚拟内存? 本篇跟大家说说内存管理,内存管理还是比较重要的一个环节,理解了它,至少对整个操作系统的工作会有一个初步的轮廓,这也难怪面试的时候常问内存管理。 干就完事,本文的提纲: 虚拟内存...
  • 操作系统之内存管理详解

    千次阅读 2022-04-23 13:44:15
    1 内存管理概念 1.1 基本原理和要求 内存管理: 操作系统对内存的划分和动态分配 ...利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存 存储保护 保证各道作业在各自的存储空间内运行,互不干扰 程序的装
  • 操作系统笔记(五)覆盖和交换,虚拟内存

    万次阅读 多人点赞 2017-02-09 00:09:30
    5-2 覆盖技术 5-3 交换技术 5-4,5 虚拟内存5-1 虚拟内存:起因内存越来越不够用,理想中的存储器是更大,更快,更便宜的非易失存储器。 为了有效管理物理内存,采用了分段,分页,也许在这个基础上可以达到更大...
  • P2P技术原理 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服务器获取数据。这种...
  • 共享内存

    2019-05-24 23:05:02
    一、原理:开辟一块物理内存,将这块物理内存映射连接到进程的虚拟地址空间进行操作,若多个进程映射连接同一块物理内存,则通过这块物理内存实现进程间通信,这种通信相较于其他进程间通信方式,少了两步用户态与...
  • 思考一下,GTA游戏60GB,讲道理运行前应该把60GB数据放入内存,然而我的电脑只有4GB,但是为什么游戏可以正常运行?在了解内存空间的分配与回收后,我们讲下内存空间的扩充......
  • 1.覆盖技术 (1)一个固定区 1.存放最活跃的程序段 2.固定区中的程序段在运行过程中不会调入和调出 (2)若干个覆盖区 1.不可能同时被访问程序段(处在同一级)可共享一个覆盖区 2.覆盖区中的程序段在运行过程中会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,178
精华内容 32,871
热门标签
关键字:

内存覆盖技术缺点