精华内容
下载资源
问答
  • 内存分区分配算法
    千次阅读
    2016-04-21 22:15:15

    在多道程序的存储管理模式中,分区分配算法显得尤为重要。这里主要说一下动态分区分配算法。
    主要有下面五种分配算法:

    1. 首次适应算法
    2. 循环首次适应算法
    3. 最佳适应算法
    4. 最坏适应算法
    5. 快速适应算法

    对于这几种方式的算法,可以说各自有其优缺点,或许它的优点正好就是它的缺点呢!

    首次适应算法

    顾名思义,首次适应是从空闲链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止,然后按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍然留在空闲链中。若从头到尾都不能找到一个能满足空间要求的分区,则此次内存分配失败。该算法倾向优先使用内存中低地址部分的空闲分区,从而保留了高址部分的大空闲区,为后续到达的大作业分配大的内存空间创造了条件。那么相反,每次都从空闲链首开始查找,低地址部分不断的被划分就会导致产生许多难以利用的、很小的空闲分区,同时也会增加每次查找的开销。
    

    循环首次适应算法

    没错,比前一个多了循环两个字,即就是在前一个算法的基础上添加了循环的功能,使用该算法为进程分配内存空间时,不再从头开始,而是从上次分配的位置为起点的下一个分区为起点开始查找,其余与首次适应算法相同。这样就解决了每次从头开始查找开销大的问题,但是这样在多次分配之后也会导致缺乏大的空闲分区
    

    最佳适应算法

    最佳适应是在每次分配时将**能满足要求的最小的**空闲分区分配给作业,避免了大材小用。为了加速查找,该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链,这样,从该空闲分区链中查找到的第一块符合要求的空闲区必然是最佳的。但是最佳适应算法也是有缺点的,每次分配的是最佳,那么剩余的空闲将会是尽可能的小,就会导致小的空闲分区无法分配给作业,就会在存储器中留下许多难以利用的小空闲区。
    

    最坏适应算法

    与最佳适应算法正好相反,最坏适应算法是挑选一个最大的空闲分区给作业分配使用,其优点是可使剩余空间不至于太小,产生碎片的几率最小,对中、小作业有利。同时,该算法要求所有的空闲分区按其容量以从大到小的顺序形成空闲分区链,查找时只要看第一个分区能产生否满足要求即可。,那么它的缺点就对应是缺少大的空闲分区。
    

    上述四种算法也称为顺序搜索法。

    快速适应算法

    又称为分类搜索法,是将空闲分区根据其容量按照大小进行分类,对每类相同容量的所有空闲分区,单独设立一个空闲分区链表,这样,就会在系统中存在多个空闲分区链表,同时会在内存中设立一张管理索引表,该表的每一个表项对应一中空闲分区类型,并记录该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分,比如2k、4k、8k等,对于特殊大小的分区,如7k大小,即可放在特殊的分区中,也可放在8k分区的链表当中。
    该算法的优点是查找效率高,仅需要根据进程的长度,寻找到能容纳它的最小空间区链表,并取第一块进行分割即可。另外该算法在进行空闲分区分配时不会对任何分区产生分割,所以能保留大的分区,也不会产生内存碎片。
    缺点是在进行分区归还时算法复杂,系统开销大。
    

    +++++++++++++++++++++++++++++++++++++
    顺带看一下分区分配中的数据结构

    常用的有下面的两个数据结构:

    1. 空闲分区表:在系统中设置一张空闲分区表,用于记录,每个空闲分区的情况,每个空闲分区占一个表目,表中包括分区序号,分区开始地址以及分区的大小等数据。
    2. 空闲分区链:这个数据结构是在每个分区的起始部分设置一些用于控制分区分配的信息,以及用于链接各个分区所用的前后指针,这样可以将所有的空闲分区链接成一个双向链,为了检索方便,在分区尾部重复设置状态伟和分区大小表目,当分区已分配,则将状态位由0该为1,此时前后向指针失去作用。
    更多相关内容
  • 1.内存管理的主要目的是( ) 编号 选项 A 方便用户 B 增加内存物理容量 C 方便用户和提高内存利用率 D 提高内存利用率 2.关于内存管理下列叙述中正确的是( ) 编号 选项 A 内存保护的...

    计算机操作系统 电子科技大学 通关攻略

    第一章第二章第三章第四章第五章考试
    操作系统概述2.1进程描述与控制存储管理(测试1)I/O设备管理文件系统期末考试
    2.2进程调度存储管理(测试2)
    2.3进程并发
    2.4死锁与饥饿

    1.内存管理的主要目的是( )

    编号选项
    A方便用户
    B增加内存物理容量
    C方便用户和提高内存利用率
    D提高内存利用率

    2.关于内存管理,下列叙述中正确的是( )

    编号选项
    A内存保护的目的是限制内存的分配
    B若内存为M、用户数量为N,则分时系统中每个用户占用M/N的内存空间
    C在虚拟内存系统中,只要磁盘空间无限大,进程就能拥有任意大的地址空间
    D实现虚拟内存管理必须有相应的硬件的支持

    3.为保证进程空间不被非法访问,内存保护由( )完成

    编号选项
    A操作系统独立完成
    B硬件机构独立完成
    C操作系统和硬件机构合作完成
    D操作系统或硬件机构独立完成

    4.为了进程在内存中改变了位置后仍能正确执行,则应采用( )技术。

    编号选项
    A静态重定位
    B动态重定位
    C编译或汇编
    D静态链接

    5.运行时重定位的缺点是( )。

    编号选项
    A进程无法在内存中移动
    B进程必须连续存储
    C不利于代码共享
    D同一逻辑地址,可能需要多次转换为物理地址

    6.不适合多道程序设计的存储管理技术是( )

    编号选项
    A单一连续分配
    B固定分区分配
    C可变式分区分配
    D分页存储管理

    7.可变式分区存储管理中,实施拼接技术的目的是( )

    编号选项
    A集中空闲分区
    B增加物理内存
    C缩短访问时间
    D简化分配算法

    8.某动态分区存储管理系统,用户可用内存容量为55MB(初始为空闲)。若采用最佳适配算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配8MB,分配6MB,则内存中最大空闲分区的大小是( )

    编号选项
    A7MB
    B9MB
    C10MB
    D11MB

    9.若在动态分区中,采用首次适应算法,则空闲分区( )

    编号选项
    A按大小递减顺序连在一起
    B按大小递增顺序连在一起
    C按地址由小到大排列
    D按地址由大到小排列

    10.对于动态分区,下列说法错误的是( )

    编号选项
    A碎片是分区之外的“外零头”
    B碎片可以通过“紧凑”技术来消除
    C碎片是内存中非常小的无法利用的空闲区
    D碎片是产生于分区之内的“内零头”

    11.若在动态分区中,采用最坏适应分配算法,则空闲分区 ( )。

    编号选项
    A按地址从大到小排列
    B按地址从小到大排列
    C按尺寸从大到小排列
    D按尺寸从小到大排列

    12.采用分页或分段管理后,提供给用户的物理地址空间( )

    编号选项
    A分页支持更大的物理地址空间
    B分段支持更大的物理地址空间
    C不能确定
    D一样大

    13.分页管理系统的页面为( )

    编号选项
    A用户所感知
    B操作系统所感知
    C编译系统所感知
    D链接、装载程序所感知

    14.关于分页存储管理系统,下列说法正确的是( )

    编号选项
    A分页存储为了提高内存利用率
    B分页存储有利于实现信息共享
    C分页存储有利于提高内存访问速度
    D分页存储有利于于实现信息保护

    15.具有快表的页式存储管理系统中,若内存访问时间是1微秒,检索快表时间为0.2微秒,快表命中率为85%,则有效存取时间是( )

    编号选项
    A0.95微秒
    B1.35微秒
    C2.15微秒
    D1.20微秒

    16.( )不是引入分段存储管理方式的原因。

    编号选项
    A信息保护
    B信息共享
    C提高内存利用率
    D段可以动态增长

    17.分段存储管理系统中,若地址长度为32位,其中段号占8位,则最大段长为( )

    编号选项
    A 2 8 2^8 28字节
    B 2 16 2^{16} 216字节
    C 2 24 2^{24} 224字节
    D 2 32 2^{32} 232字节

    18.下列存储管理方式中,能够使存储碎片尽可能少且内存利用率较高的是( )

    编号选项
    A固定分区
    B动态分区
    C分页管理
    D段页式管理

    19.在请求分页系统中,主要的硬件支持有页表机制、缺页中断机构和( )。

    编号选项
    A时间支持
    B空间支持
    C地址变换机构
    D虚拟存储

    20.页式内存管理不会引入( )

    编号选项
    A内部碎片
    B外部碎片
    C访存时间增加
    D权限控制复杂

    @Power By Exercises-Manager

    展开全文
  • 操作系统复习题-第四章 存储器管理

    千次阅读 2018-06-22 20:27:00
    第四章 存储器管理 ...1、存储管理的目的是( C )。 A.方便用户 B.提高内存利用率 C.方便用户和提高内存利用率 D.增加内存实际容量 2、外存(如磁盘)上存放的程序和数据( B )。 A.可由CPU直接访问...

    第四章  存储器管理

    一、单项选择题

    1、存储管理的目的是(  C  )。

    A.方便用户                      B.提高内存利用率

    C.方便用户和提高内存利用率      D.增加内存实际容量

    2、外存(如磁盘)上存放的程序和数据(  B  )。

    A.可由CPU直接访问                    B.必须在CPU访问之前移入内存

    C.是必须由文件系统管理的              D.必须由进程调度程序管理

    3、当程序经过编译或者汇编以后,形成了一种由机器指令组成的集合,被称为( B   )。

    A.源程序       B.目标程序        C.可执行程序        D.非执行程序

    4、可由CPU调用执行的程序所对应的地址空间为(  D   )。

    A.符号名空间                  B.虚拟地址空间

    C.相对地址空间                D.物理地址空间

    5、经过(  B  ),目标程序可以不经过任何改动而装入物理内存单元。

    A.静态重定位                    B.动态重定位

    C.编译或汇编                    D.存储扩充

    6、若处理器有32位地址,则它的虚拟地址空间为( B   )字节。

    A.2GB            B.4GB            C.100KB            D.640KB

    7、分区管理要求对每一个作业都分配(  A  )的内存单元。

    A.地址连续                           B.若干地址不连续

    C.若干连续的帧                        D.若干不连续的帧

    8、(  B  )是指将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据。

    A.覆盖技术                           B.对换技术

    C.虚拟技术                            D.物理扩充

    9、虚拟存储技术是(  B  )。

    A.补充内存物理空间的技术              B.补充相对地址空间的技术

    C.扩充外存空间的技术                  D.扩充输入输出缓冲区的技术

    10、虚拟存储技术与( A   )不能配合使用。

    A.分区管理                          B.动态分页管理

    C.段式管理                          D.段页式管理

    11、以下存储管理技术中,支持虚拟存储器的技术是( A  )。

        A.动态分区法    B.可重定位分区法    C.请求分页技术    D.对换技术

    12、在请求页式存储管理中,若所需页面不在内存中,则会引起(  D  )。

       A.输入输出中断                    B.时钟中断

       C.越界中断                        D.缺页中断

    13、在分段管理中,(  A  )。

    A、以段为单位分配,每段是一个连续存储区

    B、段与段之间必定不连续

    C、段与段之间必定连续

    D、每段是等长的

    14、(  C  )存储管理方式提供一维地址结构。

    A.固定分区                    B.分段

    C.分页                        D.分段和段页式

    15、分段管理提供(  B   )维的地址结构。

    A.1           B.2             C.3              D.4

    16、段页式存储管理汲取了页式管理和段式管理的长处,其实现原理结合了页式和段式管理的基本思想,即( B   )。

    A、用分段方法来分配和管理物理存储空间,用分页方法来管理用户地址空间。

    B、用分段方法来分配和管理用户地址空间,用分页方法来管理物理存储空间。

    C、用分段方法来分配和管理主存空间,用分页方法来管理辅存空间。

    D、用分段方法来分配和管理辅存空间,用分页方法来管理主存空间。

    17、段页式管理每取一次数据,要访问( C   )次内存。

    A.1             B.2             C.3              D.4

    18、碎片现象的存在使得(  A  )。

    A.内存空间利用率降低                    B.内存空间利用率提高

    C. 内存空间利用率得以改善               D.内存空间利用率不影响

    19、下列(  D   )存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。

    A.固定分区       B.可变分区       C.分页管理         D.段页式管理

    20、系统抖动是指(  B  )。

    A、使用机器时,千万屏幕闪烁的现象

    B、刚被调出的页面又立刻被调入所形成的频繁调入调出现象

    C、系统盘不净,千万系统不稳定的现象

    D、由于内存分配不当,偶然造成内存不够的现象

    21、在请求分页系统中,LRU(缓存淘汰)算法是指( B   )。

    A、最早进入内存的页先淘汰

    B、近期最长时间以来没被访问的页先淘汰

    C、近期被访问次数最少的页先淘汰

    D、以后再也不用的页先淘汰

    二、判断题(正确写T,错误写F并改正)

    1、在现代操作系统中,不允许用户干预内存的分配。(  T  )

    2、固定分区式管理是针对单道系统的内存管理方案。(  F  )

    改正为:固定分区式管理是支持多道程序系统的一种存储管理方式。

    3、采用动态重定位技术的系统,目标程序可以不经任何改动,而装入物理内存。(  T  )

    4、可重定位分区管理可以对作业分配不连续的内存单元。(  F  )

    改正为:可重定位分区管理必须把作业装入到一个连续的内存空间中。

    5、利用交换技术扩充内存时,设计时必须考虑的问题是:如何减少信息交换量、降低交换所用的时间。( T   )

    6、在虚拟存储方式下,程序员编制程序时不必考虑主存的容量,但系统的吞吐量在很大程度上依赖于主存储器的容量。(  T  )

    7、在页式存储管理方案中,为了提高内存的利用效率,允许同时使用不同大小的页面。(  F  )

    改正为:在页式存储管理方案中,不允许同时使用不同大小的页面。

    8、页式存储管理中,一个作业可以占用不连续的内存空间,而段式存储管理,一个作业则是占用连续的内存空间。(   F

    改正为:页式存储管理和段式存储管理,一个作业都可以占用不连续的内存空间。

    三、填空题

    1、在存储管理中,为实现地址映射,硬件应提供两个寄存器,一个是基址寄存器,另一个是    限长寄存器    。

    2、实现虚拟存储技术的物质基础是   二级存储结构    和    动态地址转换机构   。

    3、在段页式存储管理系统中,面向   用户   的地址空间是段式划分,面向  物理实现    的地址空间是页式划分。

    四、简答题

    1、解释下列概念:逻辑地址、物理地址、重定位

    答:逻辑地址:用户程序经编译之后的每个目标模块都以0为基地址顺序编址。

            物理地址:内存中各存储单元的地址是从统一的基地址顺序编址。

            重定位:把逻辑地址转变为内存的物理地址的过程。

    2、什么是虚拟存储器?它有哪些基本特征?

    答:虚拟存储器是由操作系统提供的一个假想的特大存储器。

    它的基本特征是:

    虚拟扩充——不是物理上,而是逻辑上扩充了内存容量;

    部分装入——每个作业不是全部一次性地装入内存,而是只装入一部分;

    离散分配——不必占用连续的内存空间,而是“见缝插针”;

    多次对换——所需的全部程序和数据要分成多次调入内存。

    五、计算题

    1、某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:

    页号       物理块号

     0                  3

     1                  7

     2                 11

     3                  8

    则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。 

    解:页式存储管理的逻辑地址分为两部分:页号和页内地址。

    由已知条件“用户编程空间共32个页面” 即 2的5次方,可知页号部分占5位;由“每页为1KB”,1K=2的10次方,可知内页地址占10位。由“内存为16KB”,可知有16块即2的4次方,块号为4位。

     逻辑地址0A5C(H) 所对应的二进制表示形式是:000 1010 0101 1100,根据上面的分析,加粗部分为页内地址,编码“00010”为页号,表示该逻辑地址对应的页号为2。查页表,得到物理块号是11(十进制),即二进制的物理块地址为:1011,拼接块内地址10 0101 1100,得10 1110 0101 1100,即2E5C(H)。

    2、对于如下的页面访问序列:

    1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4,5

    问:当内存块数量为3时,试问:使用FIFO、LRU置换算法产生的缺页中断是多少?写出依次产生缺页中断后应淘汰的页。(所有内存开始时都是空的,凡第一次用到的页面都产生一次缺页中断。要求写出计算步骤。)

    解:

    img_7c6b56470112d461e6f8cd761f898010.png
    img_49ec156bb91ba22dacd794ebd7c878a3.png
    展开全文
  • 在牛客网上刷题: 外部碎片( External Fragmentation )最严重的存储管理方式是() A、固定分区; B、可变分区; C、分页; D、分段。答案为B,并不明白,就整理了一下大牛的总结~ 感谢博主: ...

    在牛客网上刷题:
    外部碎片( External Fragmentation )最严重的存储管理方式是()
    A、固定分区;
    B、可变分区;
    C、分页;
    D、分段。答案为B,并不明白,就整理了一下大牛的总结~
    感谢博主:
    http://blog.csdn.net/umdcoding/article/details/52742643
    http://blog.csdn.net/haiross/article/details/38704945

    最生动的解释:

    外部碎片,是由于大量信息由于先后写入、置换、删除而形成的空间碎片。为了便于理解,我们将信息比作货物,将存储空间比作仓库来举例子。假设,我们有编号为1、2、3、4、5、6的6间仓库库房,前天送来了一大宗货,依次装入了1、2、3、4、5号仓库,昨天又因故将4号库房的货物运走了,那么数值上说我们还有两间空仓库的空间,但是如果这时候送来两间仓库容量的货物但要求必须连续存放的话,我们实际上是装不下的。这时的4、6号仓库,就成为一种空间的碎片。由于这样的原因形成的空间碎片,我们称之为外部碎片。
    从上面的例子我们可以理解,外部碎片是可以通过一些措施来改善或者解决的。对于在硬盘上的外部碎片,我们通常用磁盘碎片整理来解决,对应上面的例子,就是将5号仓库的货物及时移动到新腾出的4号仓库,这样,1-4号仓库都是满的,而5、6号仓库则形成了有效的、连续的空间,能够适应新的应用要求了;对于内存中的外部碎片,我们内存管理中常用的页面管理形式,就是为了解决这个问题的。这里就不详述了。

    内部碎片,是由于存量信息容量与最小存储空间单位不完全相符而造成的空间碎片。还是沿用上面的例子,这次我们的6间仓库目前都是空置的,但是假设我们管理仓库的最小空间单位是间,今天运来了容量为2.5间仓库的货物,那也要占用我们1-3号3间仓库,尽管3号仓库还闲置着一半的空间,但是这半间仓库已经不能再利用了(因为是以间为最小单位么);这时,我们的仓库中就形成了半间仓库的空间碎片,仓库的有效容量只剩下3间仓库了。

    【外部碎片】
    外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
    外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
    多道可变连续分配只有外部碎片。

    【内部碎片】
    内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间;
    内部碎片是处于区域内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
    单道连续分配只有内部碎片。多道固定连续分配既有内部碎片,又有外部碎片。

    上面应该是针对内存的,下面是针对磁盘的。

    很多人会把文件碎片跟簇的概念混淆起来。其实对windows系统来说硬盘上的每个分区都是由最小存储单元——簇组成的。就好比,一面墙是由一块块转头组成的。簇的大小可以在分区格式化时由用户定义,一般是数个KB大小,比如是8KB。假设我有一个文件,大小是80MB零1KB(1MB=1000KB),换算一下就是80,001KB,其中的80,000KB正好占用10000个簇,剩下的那1KB,不得以也要占用1个簇,但这最后一个簇还有7KB的空间没用上了。而且这个未完全使用的簇,其他文件也不允许继续使用。这就造成了一点点的空间浪费。
    不少人就把这被浪费了的7KB空间就是磁盘上的内部碎片。

    而磁盘上的外部碎片(即平时所说的磁盘碎片,磁盘碎片清理工具只能清理磁盘上的外部碎片,清除不了磁盘上的内部碎片,除非改变文件系统的分配单位即簇的大小,使之是一个文件大小的整数倍。)实际上指的是一个文件占据那些簇是不连续的,就相当于文件被分割开来,分别存放在相互间断的几段簇上。文件被分割为几个部分就是几个碎片。所以碎片其实是指文件碎片,可以理解成,文件破碎成片之意。而且文件碎片之间有时候顺序还是错乱的。比如说,有时候“文件里靠后的碎片”所占的簇段在硬盘上反而会排在“文件里位置靠前的碎片”簇段的前面。这样一来,一个文件就会以比较混乱的顺序存放在硬盘上。

    显然计算机读取连续的有序的数据肯定要比不连续的乱序的数据来得快。所以整理碎片可能会大幅度提高系统性能。

    举个例子,起初硬盘某个分区是空白的,写入三个文件A、B和C。显然这个时候,三个文件都是顺次占用三个簇段(这个说明存放文件所用的文件系统应该是类似FAT这样的文件系统,具体参看注释1)。故而三个文件不会产生碎片。

    现在假设你删除了B文件,这个时候A和C中间就有一块空闲簇段了。此时还是不存在文件碎片的,因为每个文件各自占据的簇段都是连续的,没有文件被分割。而如果现在需要写入一个文件D,而且D比刚刚删去的文件B要大。那么A和C之间的空闲簇段就不足以放入D,再假设C后面的空闲簇段也不足以放下D,这个时候D就势必要分割成两块存放,一块放在A和C之间,另一块放在C之后。这样一来,文件碎片就产生了。D文件有两个文件碎片。

    磁盘碎片整理要做的工作就是:把C文件前移,一直移到紧接A文件的簇段上去。这样A和C之间就没有空闲簇了,C之后剩下的将是一段完整的空闲簇段,足以放下文件D。这样D就也占据一段连续的簇段。碎片也就消除了。

    外部碎片的两种理解:

    1、在内存上,位于任何两个操作系统分配的用于装载进程的内存区域或页面之间的空闲区域称为外部碎片

    2、在磁盘上,将文件分割成几块不相连的分片,这样不相连的分片叫做文件碎片,也即外部碎片。如果将文件分割成几块相连的分片,这样相连的分片则不是文件碎片。

    减少内存碎片

     内存碎片是因为在分配一个内存块后,使之空闲,但不将空闲内存归还给最大内存块而产生的。最后这一步很关键。如果内存分配程序是有效的,就不能阻止系统分配内存块并使之空闲。即使一个内存分配程序不能保证返回的内存能与最大内存块相连接(这种方法可以彻底避免内存碎片问题),但你可以设法控制并限制内存碎片。所有这些作法涉及到内存块的分割。每当系统减少被分割内存块的数量,确保被分割内存块尽可能大时,你就会有所改进。
     
    这样做的目的是尽可能多次反复使用内存块,而不要每次都对内存块进行分割,以正好符合请求的存储量。分割内存块会产生大量的小内存碎片,犹如一堆散沙。以后很难把这些散沙与其余内存结合起来。比较好的办法是让每个内存块中都留有一些未用的字节。留有多少字节应看系统要在多大程度上避免内存碎片。对小型系统来说,增加几个字节的内部碎片是朝正确方向迈出的一步。当系统请求1字节内存时,你分配的存储量取决于系统的工作状态。

    将相邻空闲内存块连接起来是一种可以显著减少内存碎片的技术。如果没有这一方法,某些分配算法(如最先适合算法)将根本无法工作。然而,效果是有限的,将邻近内存块连接起来只能缓解由于分配算法引起的问题,而无法解决根本问题。而且,当内存块存储量有限时,相邻内存块连接可能很难实现。

    有效地利用暂时的局限性通常是很困难的,但值得一提的是,在内存中暂时扩展共处一地的分配程序更容易产生内存碎片。尽管其它技术可以减轻这一问题,但限制不同存储量内存块的数目仍是减少内存碎片的主要方法。
    现代软件环境业已实现各种避免内存碎片的工具。例如,专为分布式高可用性容错系统开发的 OSE 实时操作系统可提供三种运行时内存分配程序:内核 alloc(),它根据系统或内存块池来分配;堆 malloc(),根据程序堆来分配; OSE 内存管理程序 alloc_region,它根据内存管理程序内存来分配。

    从 许多方面来看,Alloc就是终极内存分配程序。它产生的内存碎片很少,速度很快,并有判定功能。你可以调整甚至去掉内存碎片。只是在分配一个存储量后,使之空闲,但不再分配时,才会产生外部碎片。内部碎片会不断产生,但对某个给定的系统和八种存储量来说是恒定不变的。

    Alloc 是一种有八个自由表的固定存储量内存分配程序的实现方法。系统程序员可以对每一种存储量进行配置,并可决定采用更少的存储量来进一步减少碎片。除开始时以外,分配内存块和使内存块空闲都是恒定时间操作。首先,系统必须对请求的存储量四舍五入到下一个可用存储量。就八种存储量而言,这一目标可用三个 如果 语句来实现。其次,系统总是在八个自由表的表头插入或删除内存块。开始时,分配未使用的内存要多花几个周期的时间,但速度仍然极快,而且所花时间恒定不变。

    堆 malloc() 的内存开销(8 ~ 16 字节/分配)比 alloc小,所以你可以停用内存的专用权。malloc() 分配程序平均来讲是相当快的。它的内部碎片比alloc()少,但外部碎片则比alloc()多。它有一个最大分配存储量,但对大多数系统来说,这一极限值足够大。可选的共享所有权与低开销使 malloc() 适用于有许多小型对象和共享对象的 C++ 应用程序。堆是一种具有内部堆数据结构的伙伴系统的实现方法。在 OSE 中,有 28 个不同的存储量可供使用,每种存储量都是前两种存储量之和,于是形成一个斐波那契(Fibonacci)序列。实际内存块存储量为序列数乘以 16 字节,其中包括分配程序开销或者 8 字节/分配(在文件和行信息启用的情况下为 16 字节)。

    当你很少需要大块内存时,则OSE内存管理程序最适用。典型的系统要把存储空间分配给整个系统、堆或库。在有 MMU 的系统中,有些实现方法使用 MMU 的转换功能来显著降低甚至消除内存碎片。在其他情况下,OSE 内存管理程序会产生非常多的碎片。它没有最大分配存储量,而且是一种最先适合内存分配程序的实现方法。内存分配被四舍五入到页面的偶数——典型值是 4 k 字节。

    存储器是个宝贵但却有限的资源。一流的操作系统,需要能够有效地管理及利用存储器。

    内存为程序分配空间有四种分配方式:
    1、连续分配方式
    2、基本分页存储管理方式
    3、基本分段存储管理方式
    4、段页式存储管理方式
    具体实现方式见此博主文章:
    http://blog.csdn.net/kennyrose/article/details/7530330

    固定分区存在内部碎片,可变式分区分配会存在外部碎片;
    页式虚拟存储系统存在内部碎片;
    段式虚拟存储系统,存在外部碎片
    为了有效的利用内存,使内存产生更少的碎片,要对内存分页,内存以页为单位来使用,最后一页往往装不满,于是形成了内部碎片。
    为了共享要分段,在段的换入换出时形成外部碎片,比如5K的段换出后,有一个4k的段进来放到原来5k的地方,于是形成1k的外部碎片。
    分页式存储管理旨在提高内存利用率,满足系统管理的需要;
    分段式存储管理则旨在满足用户(程序员)的需要,在实现共享和保护方面优于分页式存储管理。

    可以得出选B了吧~

    展开全文
  • 操作系统:内存管理

    2021-05-17 00:10:32
    1 内存管理 1.1 内存管理的原理 ... 地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址不-一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。 内存空间的扩充:
  • 一、内存管理 1.1 内存的基础知识 1.1.1 什么是内存,有何作用 1.1.2 进程运行的原理-指令 可见,我们写的代码要翻译成CPU识别的指令。这些指令会告诉CPU应该去内存的哪个地址存/取数据,这个数据应该做...
  • 尽力全面地网罗关于C++内存管理的知识,覆盖了常见系统以及内存硬件的内存管理策略,详细介绍了C++中new与delete操作,附带讨论了内存对齐,内存池,单例模式,垃圾收集等内存操作相关的话题。文章从全面,低门槛,...
  • 一、内存管理 1.1 内存的基础知识 1.1.1 什么是内存,有何作用 1.1.2 进程运行的原理-指令 1.1.3 逻辑地址VS物理地址 1.1.4 进程运行的基本原理(从写程序到程序运行) 1.1.5 装入内存的三种方式 1.1.5 ...
  • 虚拟存储器1.引入缓冲可以(C)。A.改善用户编程环境 B.提高CPU的处理速度C.提高CPU与设备之间的并行程度D....下列( C )存储管理方式能使内存碎片尽可能少避免内存的整理。A.固定分区 B.可变分区 C...
  • 伙伴系统之伙伴系统概述--Linux内存管理(十五)

    万次阅读 多人点赞 2016-09-03 00:13:15
    日期 内核版本 架构 作者 GitHub CSDN 2016-09-02 Linux-4.7 ...1 前景回顾1.1 Linux内存管理的层次结构Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(no
  • OS知识点汇总(考研用)——第三章:内存管理  本文参考于《2021年操作系统考研复习指导》(王道考研),《计算机操作系统教程》 文章目录OS知识点汇总(考研用)——第三章:内存管理3.内存管理3.1 内存管理概念 ...
  • 计算机操作系统复习题(四)

    千次阅读 2021-01-16 23:14:33
    第四部分 存储管理 一、选择题(选择最确切的一个答案,将其代码填入括号中) 1、把逻辑地址转变为内存的物理地址的过程称做(D )。 A、编译 B、连接 C、运行 D、重定位 2、重定位内存分区分配目的为( A )。 A、解决...
  • 内存可存放数据。程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾。 地址 210 = 1K; 220 = 1M; 230 = 1G; 地址长度应该是多少(即要多少个二进制位才能表示相应数目的存储单元)。 4GB的内存...
  • 在内核初始化完成之后, 内存管理的责任就由伙伴系统来承担. 伙伴系统基于一种相对简单然而令人吃惊的强大算法. Linux内核使用二进制伙伴算法来管理和分配物理内存页面, 该算法由Knowlton设计, 后来Knuth又进行了...
  • 操作系统的重要功能——内存管理

    千次阅读 2020-07-03 19:54:14
    内存是计算机中一种需要认真管理的重要资源。正如帕金森定律所述:"不管存储器有多大,程序都可以把...因此,我们需要针对内存进行单独管理,比避免这种现象的发生。本文将主要介绍在操作系统中,如何对内存进行管理
  • [4]硬件高速缓存的高性能又是尽可能地限制对伙伴系统分配器调用的另一个理由,因为对伙伴系统函数的每次调用都“弄脏”硬件高速缓存,所以增加了对内存的平均访问时间。 slab分配器把对象分组放进高速缓存,每个...
  • 知识点总结 1、在操作系统中引入多道程序设计的目的在于充分利用CPU,减少CPU等待时间。...7、抢占优先级进程调度算法适合紧急事件的处理 8、进程依靠“合作”进程唤醒从阻塞态过渡到就绪态。 9、
  • 第四章 存储器管理
  • 一、内存管理 1.1 内存的基础知识 1.1.1 什么是内存,有何作用 1.1.2 进程运行的原理-指令 1.1.3 逻辑地址VS物理地址 1.1.4 进程运行的基本原理(从写程序到程序运行) 1.1.5 装入内存的三种方式 1.1.5 链接的...
  • linux内存管理

    2021-04-28 20:48:44
    linux系统的性能取决于如何有效的管理动态内存,因此现在所有的多任务操作系统都在尽力优化对动态内存的使用,也就是说尽可能做到当需要时分配,不需要时释放。 内存寻址 内存地址 内存地址:作为访问内存单元内容...
  • 基本分页存储管理的原理在分区存储管理中,要求把作业放在一个连续的存储区中,因而会产生许多碎片固定分区会产生内部碎片,动态分区会产生外部碎片。尽管通过拼接技术可以解决碎片问题,但代价较高。分页存储...
  • 内存管理(1)

    2019-09-24 17:18:35
    支持多道程序设计的存储管理方案是:可变分区管理 页式存储管理 固定分区存储管理 段页式存储管理 从简单页式存储管理方案发展到虚拟页式存储管理方案,页表项中通常需要增加的信息有:有效位,修改为,访问位 ...
  • Linux存储管理

    千次阅读 2019-02-22 18:15:27
    一、磁盘管理 接口类型 IDE(ata):并口 SCSI SATA SAS USB 机械硬盘 磁道 扇区 柱面 设备类型 块设备 字符设备 设备文件 /dev:关联至设备的驱动程序 设备号:major, minor 手动创建设备 mknod命令 ...
  • 操作系统章节练习 存储管理 一、单项选择题 题目1 1.通常,用户编写的程序中所使用的地址是( )。 A. 内存地址 B. 物理地址 C. 逻辑地址 D. 绝对地址 题目2 2.可由CPU调用执行的程序所对应的地址空间为( )。 A....
  • Linux 内存管理

    2018-02-06 18:39:18
    进程并不直接在物理内存上寻址,而是由Linux内核为每个进程维护一个特殊的虚拟地址空间(virtual address space)。这个地址空间是线性的,从0开始,到某个最大值。虚拟空间由许多页组成。系统的体系结构以及机型...
  • 操作系统精选习题——第四章

    千次阅读 2021-07-05 17:13:18
    一.单选题二.填空题三.判断题 一.... 静态链接是在( )进行的。 ...在段页式存储管理中,当执行一段程序时,至少访问()次内存。 A、1 B、2 C、3 D、4 在分段管理中,( )。 A、以段为单位分配,每.
  • 第一章 信息化基础知识 一、信息与信息化 1、信息论奠基者香农认为:信息就是...5、信息系统由硬件、软件、数据库、网络、存储设备、感知设备、外设、人员把数据处理成信息的规程等。 6、信息系统生命周期简化为:①
  • 操作系统-第四章习题

    千次阅读 2020-12-09 23:41:13
    1.从下列关于存储器管理功能的论述中,选出两条正确的论述。 (1)即使在多道程序设计的环境下,用户也设计出用物理地址直接访问内存的程序。 (2)内存分配最基本的任务是为每道程序分配内存空间,其所追求的主要目标...
  • 存储管理

    2020-05-24 09:43:54
    其目的是充分利用内存空间,为多道程序并发执行提供存储基础,并尽可能地方便用户。(存储器的多层结构:(寄存器)CPU>(高速缓存>主存储器>磁盘缓存)主存>固定磁盘>移动存储介质)看书P130 2、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,710
精华内容 684
关键字:

下列( )存储管理方式能使内存碎片尽可能少,避免内存的整理。 固定分区 可变分区