固定分区存储管理
- 格式:doc
- 大小:177.00 KB
- 文档页数:21
第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。
但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。
实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:存在于主存中;•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;由操作系统协调这些存储器的使用。
二、存储管理的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。
(注意cpu和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。
这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;地址映射分静态和动态两种方式。
1、静态地址重定位是程序装入时集中一次进行的地址变换计算。
物理地址= 重定位的首地址+ 逻辑地址•优点:简单,不需要硬件支持;•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。
第十一讲存储器管理之连续分配方式连续分配是指将存储器中的空间按照一定的方式连续划分给进程使用的一种存储器管理方式。
常见的连续分配方式有三种:单一连续分配方式、固定分区分配方式和动态分区分配方式。
单一连续分配方式是最简单的分配方式,每个进程只有一个连续的存储区域。
操作系统将整个存储器分成两部分,一部分为操作系统占用,另一部分为用户程序占用。
优点是实现简单,缺点是无法有效利用存储器空间和不能同时运行多个程序。
2.固定分区分配方式固定分区分配方式是将存储器划分成若干个固定大小的区域,每个区域对应一个作业或进程。
每个进程的大小必须小于等于所分配的存储区域大小。
操作系统为每个进程分配存储空间时,优先从大小与所需存储空间最接近的空闲分区开始分配。
优点是管理简单,缺点是会导致存储空间的浪费和外部碎片的产生。
3.动态分区分配方式动态分区分配方式是将存储器分为多个大小不等的存储块,每个进程可以根据需要分配不同大小的存储块。
当新的进程需要存储空间时,操作系统从存储器的起始地址开始查找,找到第一个可用空闲块,并将其分配给进程。
优点是存储空间利用率高,可以同时运行多个进程,但缺点是会导致内部碎片的产生。
对于动态分区分配方式,还可以采用三种具体的分区算法:a. 首次适应算法(First Fit):从前向后遍历所有空闲分区,找到第一个大小大于或等于所需存储空间的空闲分区进行分配。
优点是速度快,但容易产生较多的碎片。
b. 循环首次适应算法(Next Fit):与首次适应算法类似,但从上一次分配的位置开始查找,减少了空闲分区的时间。
可以避免每次都从头开始,但仍会产生较多的碎片。
c. 最佳适应算法(Best Fit):从所有空闲分区中找到最小且大于所需存储空间的空闲分区进行分配。
优点是最大限度地避免碎片,但速度相对较慢。
综上所述,连续分配方式是一种常见的存储器管理方式。
根据应用场景和需求不同,可以选择合适的连续分配方式来管理存储器,以实现存储空间的高效利用和进程的有效管理。
内存管理之⼀段式与页式管理内存管理⽅法内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。
下⾯主要介绍连续分配存储管理、覆盖与交换技术以及页式与段式存储管理等基本概念和原理。
1.连续分配存储管理⽅式连续分配是指为⼀个⽤户程序分配连续的内存空间。
连续分配有单⼀连续存储管理和分区式储管理两种⽅式。
(1)单⼀连续存储管理在这种管理⽅式中,内存被分为两个区域:系统区和⽤户区。
应⽤程序装⼊到⽤户区,可使⽤⽤户区全部空间。
其特点是,最简单,适⽤于单⽤户、单任务的操作系统。
CP/M 和 DOS 2.0以下就是采⽤此种⽅式。
这种⽅式的最⼤优点就是易于管理。
但也存在着⼀些问题和不⾜之处,例如对要求内存空间少的程序,造成内存浪费;程序全部装⼊,使得很少使⽤的程序部分也占⽤—定数量的内存。
(2)分区式存储管理为了⽀持多道程序系统和分时系统,⽀持多个程序并发执⾏,引⼊了分区式存储管理。
分区式存储管理是把内存分为⼀些⼤⼩相等或不等的分区,操作系统占⽤其中⼀个分区,其余的分区由应⽤程序使⽤,每个应⽤程序占⽤⼀个或⼏个分区。
分区式存储管理虽然可以⽀持并发,但难以进⾏内存分区的共享。
分区式存储管理引⼈了两个新的问题:内碎⽚和外碎⽚。
前者是占⽤分区内未被利⽤的空间,后者是占⽤分区之间难以利⽤的空闲分区(通常是⼩空闲分区)。
为实现分区式存储管理,操作系统应维护的数据结构为分区表或分区链表。
表中各表项⼀般包括每个分区的起始地址、⼤⼩及状态(是否已分配)。
分区式存储管理常采⽤的⼀项技术就是内存紧缩(compaction):将各个占⽤分区向内存⼀端移动,然后将各个空闲分区合并成为⼀个空闲分区。
这种技术在提供了某种程度上的灵活性的同时,也存在着⼀些弊端,例如:对占⽤分区进⾏内存数据搬移占⽤CPU~t⼨间;如果对占⽤分区中的程序进⾏“浮动”,则其重定位需要硬件⽀持。
1)固定分区(nxedpartitioning)。
固定式分区的特点是把内存划分为若⼲个固定⼤⼩的连续分区。
第3章(大本)习题解答一、填空1.将作业相对地址空间的相对地址转换成内存中的绝对地址的过程称为 地址重定位 。
2.使用覆盖与对换技术的主要目的是 提高内存的利用率 。
3.存储管理中,对存储空间的浪费是以 内部碎片 和 外部碎片 两种形式表现出来的。
4.地址重定位可分为 静态重定位 和 动态重定位 两种。
5.在可变分区存储管理中采用最佳适应算法时,最好按 尺寸 法来组织空闲分区链表。
6.在分页式存储管理的页表里,主要应该包含 页号 和 块号 两个信息。
7.静态重定位在程序 装入 时进行,动态重定位在程序 执行 时进行。
8.在分页式存储管理中,如果页面置换算法选择不当,则会使系统出现 抖动 现象。
9.在请求分页式存储管理中采用先进先出(FIFO )页面淘汰算法时,增加分配给作业的块数时, 缺页中断 的次数有可能会增加。
10.在请求分页式存储管理中,页面淘汰是由于 缺页 引起的。
11.在段页式存储管理中,每个用户作业有一个 段 表,每段都有一个 页 表。
二、选择1.虚拟存储器的最大容量是由 B 决定的。
A .内、外存容量之和B .计算机系统的地址结构C .作业的相对地址空间D .作业的绝对地址空间2.采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、3、4、1、2、5、1、2、3、4、5、6。
运行时会产生 D 次缺页中断。
A .7B .8C .9D .10 从图3-1中的“缺页计数”栏里可以看出应该选择D 。
1 2 3 4 1 2 5 1 2 3 4 5 6页面走向→ 3个内存块→缺页计数→图3-1 选择题2配图3.系统出现“抖动”现象的主要原因是由于 A 引起的。
A .置换算法选择不当B .交换的信息量太大C .内存容量不足D .采用页式存储管理策略 4.实现虚拟存储器的目的是 D 。
A .进行存储保护B .允许程序浮动C .允许程序移动D .扩充主存容量5.作业在执行中发生了缺页中断,那么经中断处理后,应返回执行B 指令。
分区管理的分配策略分区管理是计算机操作系统中的重要概念,它将计算机的存储空间划分为若干个逻辑分区,以便更有效地管理和利用存储资源。
分区管理的分配策略是指在进行存储资源分配时,系统采取的具体方法和规则。
本文将介绍几种常见的分配策略,并探讨它们的优缺点。
一、连续分配策略连续分配策略是最简单、最常见的分配策略之一。
它将存储空间划分为若干个连续的分区,每个分区大小相等或不等。
当有新的作业需要分配存储空间时,系统会按照作业所需大小选择合适的分区进行分配。
如果找不到合适大小的连续分区,则会出现外部碎片。
连续分配策略的优点是实现简单,但缺点是容易产生碎片,降低存储空间的利用率。
二、非连续分配策略非连续分配策略是为了解决连续分配策略中的碎片问题而提出的。
它将存储空间分为多个不连续的分区,每个分区大小可以不同。
非连续分配策略采用链表的方式记录每个分区的使用情况,当有新的作业需要分配存储空间时,系统会在链表中找到合适大小的空闲分区进行分配。
非连续分配策略的优点是解决了碎片问题,但缺点是实现复杂,分配效率较低。
三、固定分区分配策略固定分区分配策略是将存储空间分为若干个固定大小的分区。
每个分区大小固定,不会发生变化。
当有新的作业需要分配存储空间时,系统会选择合适大小的空闲分区进行分配。
固定分区分配策略的优点是简单易实现,但缺点是会出现内部碎片,降低存储空间的利用率。
四、动态分区分配策略动态分区分配策略是为了解决固定分区分配策略中的内部碎片问题而提出的。
它将存储空间分为若干个大小不等的动态分区,每个分区可以根据作业的需求进行调整。
当有新的作业需要分配存储空间时,系统会选择合适大小的空闲分区进行分配,并根据作业的大小调整分区的大小。
动态分区分配策略的优点是解决了内部碎片问题,但缺点是实现复杂,分配效率较低。
五、基于页的分配策略基于页的分配策略是在分区管理中引入了页面的概念。
它将存储空间划分为若干个固定大小的页面,每个页面大小相等。
操作系统存储管理实验报告一、实验目的操作系统的存储管理是计算机系统中非常重要的组成部分,它直接影响着系统的性能和资源利用率。
本次实验的目的在于深入理解操作系统中存储管理的基本原理和方法,通过实际操作和观察,掌握存储分配、回收、地址转换等关键技术,并对不同存储管理策略的性能进行分析和比较。
二、实验环境本次实验在 Windows 10 操作系统下进行,使用 Visual Studio 2019 作为编程环境,编程语言为 C++。
三、实验内容(一)固定分区存储管理1、原理固定分区存储管理将内存空间划分为若干个固定大小的分区,每个分区只能装入一道作业。
分区的大小可以相等,也可以不等。
2、实现创建一个固定大小的内存空间数组,模拟内存分区。
为每个分区设置状态标志(已分配或空闲),并实现作业的分配和回收算法。
3、实验结果与分析通过输入不同大小的作业请求,观察内存的分配和回收情况。
分析固定分区存储管理的优缺点,如内存利用率低、存在内部碎片等。
(二)可变分区存储管理1、原理可变分区存储管理根据作业的实际需求动态地划分内存空间,分区的大小和数量是可变的。
2、实现使用链表或数组来管理内存空间,记录每个分区的起始地址、大小和状态。
实现首次适应、最佳适应和最坏适应等分配算法,以及分区的合并和回收算法。
3、实验结果与分析比较不同分配算法的性能,如分配时间、内存利用率等。
观察内存碎片的产生和处理情况,分析可变分区存储管理的优缺点。
(三)页式存储管理1、原理页式存储管理将内存空间和作业都划分为固定大小的页,通过页表将逻辑地址转换为物理地址。
2、实现设计页表结构,实现逻辑地址到物理地址的转换算法。
模拟页面的调入和调出过程,处理缺页中断。
3、实验结果与分析测量页式存储管理的页面置换算法(如先进先出、最近最少使用等)的命中率,分析其对系统性能的影响。
探讨页大小的选择对存储管理的影响。
(四)段式存储管理1、原理段式存储管理将作业按照逻辑结构划分为若干个段,每个段有自己的名字和长度。
分区存储管理的种类
分区存储管理主要有以下几种类型:
1. 固定分区:这种类型的分区是将内存固定地划分为若干个大小不等的分区,供各个程序使用。
每个分区的大小和位置都固定,系统运行期间不再重新划分。
这种管理方式适用于单用户、单任务系统。
2. 可变分区:这种类型的分区是根据程序的需求动态地分配内存空间。
系统会在空闲内存中寻找合适大小的分区分配给程序。
可变分区管理方式能够适应不同程序的内存需求,但可能导致内存碎片问题。
3. 动态创建分区:这种分区管理方式是根据程序的申请要求动态地分配内存空间。
优点是没有内部碎片,但缺点是有外部碎片(难以利用的小空闲分区)。
4. 重定位分区:这种类型的分区管理方式是在程序运行时,将程序的逻辑地址转换为物理地址。
当程序需要访问内存时,系统会找到对应物理地址的数据或指令。
这种管理方式适用于多道程序运行的系统。
5. 页式存储管理:这种类型的分区管理方式是将内存划分为固定大小的页面,程序可以分散在不同的页面中。
页面可以动态分配和回收,
从而减少内存碎片。
页式存储管理具有无外部碎片的优点,但可能存在内部碎片问题。
总之,不同的分区存储管理方式有各自的优缺点和适用场景。
在实际应用中,可以根据具体需求和硬件条件选择合适的分区管理方式。
一、单项选择题1.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用()技术。
A.动态重定位B.静态重定位C.动态分配D.静态分配2.固定分区存储管理把主存储器划分成若干个连续区,每个连续区称一个分区。
经划分后分区的个数是固定的,各个分区的大小()。
A.是一致的B.都不相同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.采用页式存储管理时,重定位的工作是由()完成的。
A.操作系统B.用户C.地址转换机构D.主存空间分配程序9.采用段式存储管理时,一个程序如何分段是在()决定的。
A.分配主存时B.用户编程时C.装人作业时D.程序执行时10.采用段式存储管理时,一个程序可以被分成若干段,每一段的最大长度是由( )限定的。
A.主存空闲区的长度B.硬件的地址结构C.用户编程时D.分配主存空间时11.实现虚拟存储器的目的是()。
A.扩充主存容量B.扩充辅存容量C.实现存储保护D.加快存取速度12.LRU页面调度算法是选择( )的页面先调出.A.最近才使用B.最久未被使用C.驻留时间最长D.驻留时间最短13.若进程执行到某条指令时发生了缺页中断,经操作系统处理后,当该进程再次占用处理器时,应从()指令继续执行。
全国自考操作系统(存储管理)模拟试卷2(题后含答案及解析) 题型有:1. 单项选择题 3. 填空题 4. 简答题 5. 综合题 6. 判断题单项选择题1.源程序经过编译或者汇编生成的机器指令集合,称为_______。
A.源程序B.目标程序C.可执行程序D.非执行程序正确答案:B解析:源程序经过编译或者汇编生成的机器指令集合不一定是可执行程序,如C编译用-c选项对不包括全部的模块的C程序编译生成的.o代码是目标程序,但不是可执行程序。
知识模块:存储管理2.动态重定位是在程序的_______中进行的。
A.编译过程B.连接过程C.装入过程D.执行过程正确答案:D 涉及知识点:存储管理3.下面几条中,_______是动态重定位的特点。
A.需要一个复杂的重定位装入程序B.存储管理算法比较简单C.不需地址变换硬件机构的支持D.在执行时将逻辑地址变换成内存地址正确答案:D 涉及知识点:存储管理4.固定分区存储管理一般采用_______进行主存空间的分配。
A.首次适应分配算法B.循环首次适应分配算法C.最优适应分配算法D.顺序分配算法正确答案:C解析:为了节省内存,减少内部碎片,固定分区存储管理一般不采用首次适应分配算法,而采用相对来说较费时的最优适应分配算法。
知识模块:存储管理5.在可变分区管理方式下,在释放和回收空闲区,若已判定“空闲区表第j栏中的始址=释放的分区始址+长度”,则表示_______。
A.归还区有上邻空闲区B.归还区有下邻空闲区C.归还区有上下邻空闲区D.归还区无相邻空闲区正确答案:B解析:说明回收的分区尾地址与空闲区表该项登记的空闲区始址相邻。
知识模块:存储管理6.采用单一连续区存储管理时,若作业地址空间大于空闲内存空间,可采用_______把不会同时工作的程序段轮流装入主存区执行。
A.对换技术B.可变分区技术C.虚拟存储技术D.覆盖技术正确答案:D 涉及知识点:存储管理7.将作业部分或全部移到外存,以调入其他的作业的技术称为_______。
全国自考(操作系统概论)-试卷8(总分:108.00,做题时间:90分钟)一、单项选择题(总题数:20,分数:40.00)1.下面设备中,一次只能让一个作业独占使用的设备是(分数:2.00)A.磁盘机B.光驱C.打印机√D.硬盘驱动器解析:解析:在作业执行期间只允许一个作业独占使用的设备称为独占设备。
打印机、输入机等设备,每次只能分配给一个作业独占使用,仅当一个作业不再需要使用时,才可让另一个作业去使用。
2.访问一次磁盘操作必须给出如下参数(分数:2.00)A.磁头号B.扇区号C.柱面号D.三个都给出√解析:3.用户总是用( )来向系统提出使用设备的要求的。
(分数:2.00)A.设备类B.设备名C.设备类的相对号√D.设备的绝对号解析:4.假定磁盘的旋转速度是10ms/周,每个磁道被划分为大小相等的4块,则传送一块信息所需时间为(分数:2.00)A.4msB.5msC.10msD.2.5ms √解析:解析:传送时间:由指定的磁头把磁道上的信息读到主存储器或把主存储器中信息写到磁道上所需的时间。
由于每个扇区中各磁道上的信息容量是相同的(即块的长度),所以读/写信息的传送时间也是相同的,且传送信息所需的时间是固定的。
本题中转速是10ms/周,每个磁道被分为大小相等的4块,则读出一块的时间为10/4=2.5ms。
5.CPU与通道可以并行执行,并通过( )实现彼此之间的通讯和同步。
(分数:2.00)A.I/O指令B.I/O中断C.I/O指令和I/O中断√D.操作员解析:6.通道是一种(分数:2.00)A.保存I/O信息的部件B.传输信息的电子线路C.通用处理机D.输入输出处理机√解析:解析:通道能单独地完成输入输出操作,所以通道也称为输入输出处理机。
7.下列通用缓冲技术中,( )对于一个具有低频率活动的I/O系统是比较有效的。
(分数:2.00)A.双缓冲技术√B.环形缓冲技术C.缓冲池技术D.单缓冲技术解析:8.下列关于SPOOLING系统的描述中,错误的是(分数:2.00)A.缓输出程序总是利用CPU空闲时间将作业的执行结果输出B.井管理程序负责实现输入井读和输出井写C.预输入程序和缓输出程序的执行是独立于CPU,不让CPU控制的√D.SPOOLING操作又称假脱机操作解析:解析:“预输入程序”和“缓输出程序”的执行是在计算机的控制下进行的。
习题5参考答案Ⅰ问答题1. 存储管理的主要功能是什么?答:(1)主存空间的分配与回收。
系统按照一定的算法把某一空闲的存储空间分配给作业或进程;用户不需要时,及时回收,以供其它用户程序使用。
(2)地址转换(地址重定位)。
把作业地址空间中使用的逻辑地址转换成内存空间中的物理地址。
(3)主存空间的共享和保护。
可用的主存空间可由两个或多个进程共享。
同时要保护系统程序区不被用户有意或无意的侵犯,不允许用户程序读写不属于自己地址空间的数据,避免各道程序间相互干扰。
特别是当一道程序发生错误时,不至于影响其它程序的运行。
(4)主存空间的扩充。
使用虚拟存储或自动覆盖技术提供比实际内存更大的空间。
2. 指出逻辑地址与物理地址的不同点。
答:用户的源程序一旦编译之后,每个目标模块都以0为基地址进行编址,这种地址称为逻辑地址或相对地址。
为了便于CPU访问,内存中的每个物理存储单元都有一个编号,这个编号称为内存地址,即物理地址(也称绝对地址)。
3. 何谓地址转换(重定位)?有哪些方法可以实现地址转换?答:当作业运行时,不能用逻辑地址在内存中读取信息,必须把作业地址空间中使用的逻辑地址转换成内存空间中的物理地址,这种转换称为地址转换。
实现地址转换的方法有:静态地址转换和动态地址转换。
4. 简述什么是覆盖?什么是交换?覆盖和交换的区别是什么?答:覆盖技术主要是指同一主存区可以被不同的程序段重复使用。
交换,就是系统根据需要把主存中暂时不运行的某个(或某些)作业部分或全部移到外存,而把外存中的某个(或某些)作业移到相应的主存区,并使其投入运行。
交换是由操作系统完成,用户并不知道。
操作系统按一定的策略采用“强占”和“礼让”的方法,把内存部分内容暂时放到硬盘交换区中。
覆盖是由用户控制,操作系统提供覆盖机制,用户给出该程序的覆盖结构。
覆盖机构将整个作业分为常驻和覆盖两部分。
子程序不会同时调入内存。
用户只要将最大的子程序作为覆盖区告诉系统即可。
习题四存储管理一、单项选择题1、存储管理的目的是()。
A.方便用户B.提高内存利用率C.方便用户和提高内存利用率D.增加内存实际容量2、外存(如磁盘)上存放的程序和数据()。
A.可由CPU直接访问B.必须在CPU访问之前移入内存C.是必须由文件系统管理的D.必须由进程调度程序管理3、当程序经过编译或者汇编以后,形成了一种由机器指令组成的集合,被称为()。
A.源程序B.目标程序C.可执行程序D.非执行程序4、固定分区存储管理一般采用( )进行主存空间的分配。
A.最先适应分配算法B.最优适应分配算法C.最坏适应分配算法D.顺序分配算法5、经过(),目标程序可以不经过任何改动而装入物理内存单元。
A.静态重定位B.动态重定位C.编译或汇编D.存储扩充6、若处理器有32位地址,则它的虚拟地址空间为()字节。
A.2GBB.4GBC.100KBD.640KB7、首次适应算法的空闲区是()。
A.按地址递增顺序连在一起B.始端指针表指向最大空闲区C.按大小递增顺序连在一起D.寻找从最大空闲区开始8、()是指将作业不需要或暂时不需要的部分移到外存,让出内存空间以调入其他所需数据。
A.覆盖技术B.对换技术C.虚拟技术D.物理扩充9、虚拟存储技术是()。
A.补充内存物理空间的技术B.补充相对地址空间的技术C.扩充外存空间的技术D.扩充输入输出缓冲区的技术10、虚拟存储技术与()不能配合使用。
A.分区管理B.动态分页管理C.段式管理D.段页式管理11、以下存储管理技术中,支持虚拟存储器的技术是()。
A.动态分区法B.可重定位分区法C.请求分页技术D.对换技术12、在请求页式存储管理中,若所需页面不在内存中,则会引起()。
A.输入输出中断B. 时钟中断C.越界中断D. 缺页中断13、采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是()。
A.224 B.216 C.28 D.23214、在固定分区分配中,每个分区的大小是_______。
4-1存储器管理-作业标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-第四章存储器管理1.选择题1*.固定分区存储管理中,处理器设置的地址转换机构是。
A.界限寄存器B.上限寄存器C.下限寄存器D.上限寄存器和下限寄存器2.存储保护的工作通常由实现。
A.软件B.硬件C.文件D.硬件和软件配合3.段页式存储管理中,访问快表失败时,每访问一条指令或存取一个操作数都要次访问主存。
A.1 B.2 C.3 D.44.在虚拟存储系统中,若进程在内存中占3块(开始时为空)采用先进先出页面淘汰算法,当执行访问页号序列为1、2、3、4、1、2、5、1、2、3、4、5、6时,将产生次缺页中断。
A.7 B.8 C.9 D.105.采用段页式存储管理,在CPU中应设置寄存器。
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.将主存空闲区按地址顺序从小到大登记在空闲区表中,每次分配时总是顺序查找空闲区表,此种分配算法称为分配算法。
A.最先适应B.最优适应C.最坏适应D.随机适应21.支持程序浮动的地址转换机制是。
A.页式地址转换B.段式地址转换C.静态重定位D.动态重定位22.在可变分区存储管理中,最优适应分配算法要求对空闲区表项按进行排列。
A.地址从大到小B.地址从小到大C.尺寸从大到小D.尺寸从小到大23.在请求页式存储管理中,当查找的页不在中时,要产生缺页中断。
3.1 计算机系统中的存储器3.2 重定位1.主存的地址空间常称为P39 (C )A.逻辑地址空间B.程序地址空间C.物理地址空间D.相对地址空间2.3.4.支持程序浮动的地址转换机制是P40 (D )A. 页式地址转换B. 段式地址转换C. 静态重定位D. 动态重定位5.要保证一个程序在主存中被改变了存放位置后仍能正确执行,则对主存空间应采用下列哪个技术。
(B )A.静态重定位B.动态重定位C.动态分配D.静态分配6.动态重定位是在下列哪种情况下完成的(C )A. 作业执行前集中一次B.作业执行过程中集中一次C.作业执行过程中D.作业执行过程中由用户完成7.采用静态重定位方式装入的作业,在作业执行过程中进行地址转换的是(B )A. 由软件和硬件相互配合B. 由软件独立C. 只需要硬件D. 不需要3.3 单用户连续存储管理8.在以下存贮管理方案中,不适用于多道程序设计系统的是(A )A. 单用户连续分配B. 固定式分区分配C. 可变式分区分配D. 页式存贮管理9.MS-DOS的内存空间采用的存储管理方式是(D )A.固定分区B.可变分区C.页式D.单连续3.4 固定分区存储管理10.采用固定分区方式管理主存储器的最大缺点是(B )A.不利于存储保护B.主存空间利用率不高C.要有硬件的地址转换机构D.分配算法复杂11.下面的存储管理方案中,可以采用静态重定位的是(A )A.固定分区B.可变分区C.页式D.段式12.每次分配时总是顺序查找空闲区表,找到第一个能满足作业长度要求的空闲区,此种分配算法称为(A )A. 最先适应分配算法B. 最优适应分配算法C. 最坏适应分配算法D. 随机适应分配算法13.在可变分区存储管理中,为了实现主存的空间分配,应设置(D )A.页表B.段表C.位示图D.空闲区表14.在可变分区分配方案中,为了实现主存的空间分配,管理采用(D )A.页表B.段表C.段表+页表D.分区分配表+空闲区表15.在可变式分区存储管理中,某作业完成后要收回其主存空间,该空间可能与相邻空闲区合并,在修改空闲区表时使空闲区数不变且空闲区起始地址不变的情况是(C )A.无上邻空闲区也无下邻空闲区B.有上邻空闲区但无下邻空闲区C.无上邻空闲区但有下邻空闲区D.有上邻空闲区也有下邻空闲区16.在一个可变分区存储管理中,最坏适应分配算法宜将空闲区表中的空闲区按下列次序排列的是(D )A.地址递增B.地址递减C.长度递增D.长度递减17.可变分区方式常用的主存分配算法有:最先适应、最优适应和最坏适应分配算法,其中,按分区大小排序组织空闲区表的是(B )A. 最先适应和最坏适应B. 最优适应和最坏适应C. 最先适应和最优适应D. 最先适应、最优适应和最坏适应3.6 页式虚拟存储管理18.实现虚拟存储器的目的是(A )A.扩充主存容量B.扩充辅存容量C.实现存储保护D.加快存取速度19.分页式存储管理时,每读写一个数据,要访问主存(B )A. 1次B. 2次C. 3次D. 4次20.在存储管理的各方案中,可扩充主存容量的管理方案是(D )A. 固定式分区分配B. 可变式分区分配C. 页式存储管理D. 分页虚拟存储管理21.页式存储管理中的页表是由(C )A. 用户建立B. 编译程序建立C. 操作系统建立D. 编辑程序建立22.在页式虚拟存储管理中,为实现地址变换,应建立(C )A. 空闲区表B. 分区分配表C. 页表D. 段表23.在采用页式存储管理的系统中,(B )A. 不可以把作业分散到几个不连续的主存区域B. 不需要采用移动技术移动作业区C. 不需要硬件支持 D .不采用动态重定位的方式装入作业24.在页式存储管理方案中,为地址转换提供依据需建立(A )A.页表B.段表C.段表和页表D.空闲区表25.LRU页面调度算法是选择先调出的页面是(B )A.最近才使用的B.最久未被使用的C.驻留时间最长的D.驻留时间最短的26.如果处理器有32位地址,则它的虚拟地址空间为(B )A. 2GBB. 4GBC. 640KBD. 16MB27.在请求页式存储管理中,产生缺页中断是因为查找的页不在(B )A. 外存中B. 虚存中C. 内存中D. 地址空间中28.采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是(B )A. 224 B. 216 C. 28 D. 2321.把逻辑地址转换成绝对地址的工作称为。
理工大学信息工程与自动化学院学生实验报告( 2013 —2014 学年第一学期)课程名称:操作系统开课实验室:信自楼444 2013年 11月28 日注:报告容按下列的要求进行。
一、实验目的通过编写固定分区存储管理的模拟程序,加深对操作系统存储管理功能中的固定分区管理方式、主存分配表等相应知识的理解。
通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟悉可变分区存储管理的存分配和回收。
二、实验题目1.设计一个固定分区分配的存储管理方案。
并模拟实现分区的分配和回收过程。
2.必须建立分区表,记录空闲区与占用区的状况。
本系统将存用户空间划分为五个大小不固定的分区,其分区大小由用户输入决定。
在每个分区只装入一道作业,这样把用户空间划分为几个分区,便允许几道作业并发运行。
当有一个空闲分区时,便可以从外存的后备队列中选择一个适当大小的作业装入该分区,当该作业结束时又可以从后备作业队列中找出另一作业调入该分区。
每个存空间是一个Node型的对象。
Node类有一个三个参数的构造函数。
分别为:分区号、起始地址、大小。
然后就是一些属性的get、set方法和一个打印其属性的函数。
四个数据域分别为:属性m_No用来表示该存空间的序号。
属性m_Addr用来表示存分区的起始地址。
属性m_Size用来表示存空间的大小。
属性m_State表示存空间的是否已分配的状态标志。
若该存空间已分配,m_TaskNo表示占有该存空间的任务序号。
否则没有实际意义。
在用户申请任务的存空间时,提示用户输入任务号和其需要的存空间大小。
流程图主程序:释放存空间算法四、算法设计的实现1、类设计本程序设计了两个比较简单的类:Node类和MManage类。
Node类主要是存放每个固定分区的一些信息。
而MManage类则主要是对Node类的容器List<Node>进行一些操作来实现要求的存空间的的分配和释放。
类设计的数据成员和接口如下:Node.h#ifndef NODE_H#define NODE_Hclass Node{public:Node(int No, int Addr, int Size);int getSize() constreturn m_Size;}bool getState() const{return m_State;}int getTaskNo() const{return m_TaskNo;}void setState(bool State);void setTaskNo(int TaskNo);void print();private:int m_No;int m_Addr;int m_Size;bool m_State;int m_TaskNo;};#endif //NODE_HMManage.h#ifndef MMANAGE_H#define MMANAGE_H#include <vector>class Node;class MManage{public://MManage();MManage(int MLength);MManage(std::vector<Node> Nodes);void MAlloc();void MFree();void print();private:std::vector<Node> m_Nodes;};#endif//MMANAGE_H类接口实现和main函数的实现:Node.cpp#include <iostream>#include "Node.h"Node::Node(int No, int Addr, int Size) :m_No(No),m_Addr(Addr),m_Size(Size) {m_State = true;m_TaskNo = 0;}void Node::setTaskNo(int TaskNo){m_TaskNo = TaskNo;}void Node::setState(bool State)m_State = State;}void Node::print(){std::cout<<"| "<<m_No<<" || "<<m_Addr<<" || "<<m_Size<<" || ";if(m_State)std::cout<<"Idle ||"<<std::endl;elsestd::cout<<"Occupy || "<<m_TaskNo<<" ||"<<std::endl;}MManage.cpp#include <iostream>#include "MManag.h"#include "Node.h"#define MAXSIZE 100//class Node;{int sum;std::cout << "Please input the number of memory:";std::cin >> sum;std::cout << std::endl;MManage(sum);}*/MManage::MManage(int MNo){int size;int addr = 0;char yesOrNo = 'n';while ( yesOrNo != 'y' && yesOrNo != 'Y'){m_Nodes.clear();std::cout << "Start to init the memory table" << std::endl;for (int i=0; i<MNo; ++i){do{std::cout << "Please input the size of " << i+1 << "th memory:";std::cin >> size;}while(size >= MAXSIZE);Node node(i+1, addr, size);m_Nodes.push_back(node);addr+=size;}print();std::cout << "Is this correct?" << std::endl;std::cin >> yesOrNo;}}MManage::MManage(std::vector<Node> Nodes){m_Nodes.assign(Nodes.begin(), Nodes.end());}void MManage::MAlloc(){int taskNo, size;int No = -1;int temp1 = MAXSIZE;int temp2 = MAXSIZE;bool flag;do{flag=false;std::cout << "Please input the task No. and size" << std::endl;std::cin >> taskNo >> size;for(unsigned i=0; i<m_Nodes.size(); ++i){if(m_Nodes[i].getTaskNo() == taskNo){std::cout<<"This task areally exist,please change it"<<std::endl;flag = true;}if(size > MAXSIZE){std::cout<<"The size is too big,please change it"<<std::endl;flag = true;}}}while(flag);for(unsigned i=0; i<m_Nodes.size(); ++i){if(m_Nodes[i].getState()&&m_Nodes[i].getSize()>=size){temp2 = m_Nodes[i].getSize() - size;if(temp2<temp1){temp1 = temp2;No = i;}}}if(No==-1){std::cout << "Allocation fail." << std::endl;}else{std::cout << "Allocation success." << std::endl;m_Nodes[No].setState(false);m_Nodes[No].setTaskNo(taskNo);}}void MManage::MFree(){int taskNo,No=-1;std::cout << "Please input the task No." << std::endl;std::cin >> taskNo;for(unsigned i=0; i<m_Nodes.size(); ++i){if(m_Nodes[i].getTaskNo()==taskNo&&!m_Nodes[i].getState()){No = i;}}if(No==-1){std::cout << "Free fail(Can not find the task)." << std::endl;}else{std::cout << "Free success." << std::endl;m_Nodes[No].setState(true);m_Nodes[No].setTaskNo(0);}}void MManage::print(){std::cout << "The the memory table:" << std::endl;std::cout << "| No |" << "| Addr |" << "| Size |" << "| State |" << "| TaskNo |"<< std::endl;for (unsigned i=0; i<m_Nodes.size(); ++i)m_Nodes[i].print();}Main.cpp#include <iostream>#include "MManag.h"#include "Node.h"#define SIZE 5 //分配区的个数void testNode(){int size = 10;Node node1(1,0,size);node1.print();Node node2(2,size,size);node2.setState(false);node2.setTaskNo(1);node2.print();//MManage m1();//m1.print();MManage m2(2);m2.print();}int main(){MManage m(SIZE);char yesOrNo = 'y';int swt = 0;while(yesOrNo != 'n' && yesOrNo != 'N'){while(swt != 1 && swt != 2){system("cls");std::cout<<"=========================="<<std::endl;std::cout<<" Please put your choice:"<<std::endl;std::cout<<" 1--apply memory"<<std::endl;std::cout<<" 2--free memory"<<std::endl;std::cout<<"=========================="<<std::endl;std::cin>>swt;if(swt!=1&&swt!=2)std::cout<<"error iput,please put(1、2)"<<std::endl;}switch(swt){case 1: m.MAlloc();break;case 2: m.MFree();break;default:{printf("exception ouccer\n");return 1;}}m.print();std::cout<<"Do you like to continue?"<<std::endl;std::cin >> yesOrNo;swt = 0;}}四、运行结果与分析手工输入每个分区的大小来初始化分区表:分析:在手工输入每个存空间的大小后,立即调用打印的函数将存空间的情况打印出来。