基于可重定位分区分配算法的内存管理的设计与实现
- 格式:docx
- 大小:115.69 KB
- 文档页数:20
注意:1)“本章要点”部分,用红字标注的不是期末考试出题范围。
2)“习题部分”用蓝字标注的是重点习题,期末考试50%的题目是这些习题的原题。
红字标注的习题期末考试不考,仅供考研的同学参考。
3)大部分习题答案只给出要点,同学们可以自行适当补充,但一定要简明扼要。
4)如“本章要点”部分用红字标注的非考试内容,在“习题”部分有相关的重点习题,则对该部分内容只需做该习题即可。
------------------------------------------------------------第四章存储器管理要点4.1 存储器的层次结构理解P116图4-1的存储器层次结构,知道这种结构从经济上考虑,具有好的性能/价格比。
了解P117-118高速缓存CACHE和磁盘缓存,知道它们使用的淘汰算法与虚拟内存的页面置换算法是基本相同的。
4.2 程序的装入和链接这一小节的内容是一些重要的专业常识。
应了解本小节介绍的各种装入和链接方法,要求结合Windows操作系统及C 语言的实际去理解上述装入和链接方法(联系实际部分可上网查询)。
4.3 连续分配方式通用操作系统大都不用连续分配方式,有些嵌入式OS可能使用这种分配方式。
这一小节只需阅读P121-124即可。
4.4 基本分页存储管理方式这是本章最重要的一小节,要求全读。
重点理解页面、物理块、页表、页表的访存、物理地址、逻辑地址、快表(TLB)等概念及相互关系。
4.5 基本分段存储管理方式阅读4.5.1,知道为什么要分段。
阅读4.5.2 知道分段的原理。
考研的同学要知道段表、地址变换,知道分段和分页的主要区别。
阅读4.5.3 知道分段有利于信息共享,知道“纯代码”的概念。
阅读4.5.4 知道什么是段页式存储。
需要补充说明的是:教材说过,分段方便编程,主要是指方便汇编语言程序员,和设计高级语言编译器的程序员。
对使用高级语言进行应用编程的程序员来说,段是透明的,一般不能用高级语言代码去操作段。
操作系统-存储管理(4)段页式虚拟存储物理地址:⼜称绝对地址,即程序执⾏所使⽤的地址空间(处理器执⾏指令时按照物理地址进⾏)逻辑地址:⼜称相对地址,即⽤户编程所使⽤的地址空间,从0开始编号,有两种形式:⼀维逻辑地址(地址)⼆维逻辑地址(段号:段内地址)主存储器空间的分配与去配:分配:进程装⼊主存时,存储管理软件进⾏具体的主存分配操作,并设置⼀个表格记录主存空间的分配情况去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占⽤的全部或者部分存储空间,调整主存分配表信息主存储器空间的共享:多个进程共享主存储器资源:多道程序设计技术使若⼲个程序同时进⼊主存储器,各⾃占⽤⼀定数量的存储空间,共同使⽤⼀个主存储器多个进程共享主存储器的某些区域:若⼲个协作进程有共同的主存程序块或者主存数据块多道程序设计需要复⽤主存:按照分区复⽤:主存划分为多个固定/可变尺⼨的分区,⼀个程序/程序段占⽤⼀个分区按照页架复⽤:主存划分成多个固定⼤⼩的页架,⼀个程序/程序段占⽤多个页架装载程序/加载器(loader)把可执⾏程序装⼊内存的⽅式有:绝对装载可重定位装载动态运⾏时装载地址转换:⼜称重定位,即把可执⾏程序逻辑地址转换成绝对地址,可分为:静态地址重定位:由装载程序实现装载代码模块的加载和地址转换(⽆需硬件⽀持),把它装⼊分配给进程的内存指定区域,其中所有指令代码和数据的逻辑地址在执⾏前⼀次全部修改为内存物理地址。
早期单任务单⽤户OS使⽤。
动态地址重地位:由装载程序实现装载代码模块的加载,把它装⼊进程的内存在指定区域,但对链接程序处理过的应⽤程序逻辑地址不做修改,程序内存起始地址被置⼊重定位寄存器(基址寄存器)。
程序执⾏过程中每当CPU访问程序和数据引⽤内存地址时,由硬件地址转换机构截取此逻辑地址并加上重定位寄存器的值。
运⾏时链接地址重定位存储保护:为避免主存中的多个进程相互⼲扰,必须对主存中的程序和数据进⾏保护。
操作系统原理试题题库含答案(7)1、在I/O子系统中,I/O请求的排队时间为10ms,而请求的服务时间为40ms,则I/O请求的总响应时间为()A、 10msB、 50msC、 30msD、 40ms正确答案: B2、下列哪项不是进行存储管理的目的( )。
A、提高存储利用率B、防止用户破坏操作系统C、防止用户相互干扰D、为了使用Spooling正确答案: D3、进程的基本状态转换中,哪一种是不可能发生。
A、就绪态变为阻塞态B、就绪态变为执行态C、阻塞态变为就绪态D、执行态变为阻塞态正确答案: A4、进程的动态、并发等特征是利用____________表现出来的。
A、程序B、数据C、程序和数据D、进程控制块正确答案: D5、要求进程一次性申请所需的全部资源,是破坏了死锁必要条件中的____条件。
A、不可剥夺B、互斥C、请求与保持D、环路等待正确答案: C6、在下面的I/O控制方式中,需要CPU干预最少的方式是()A、程序I/O控制方式B、中断驱动I/O控制方式C、直接存储器访问(DMA)控制方式D、 I/O通道控制方式正确答案: D7、在操作系统中,只能在系统态下运行的指令是()。
A、读时钟指令B、置时钟指令C、取数指令D、寄存器清零指令正确答案: D8、下列选项中,导致创建新进程的操作是()I.用户登录成功 II.设备分配 III.启动程序执行A、仅I和IIB、仅II和IIIC、仅I和IIID、 I、II和III正确答案: B9、某一作业8:00到达系统,估计运行时间为2小时,若11:00开始执行该作业,其响应比是()。
A、 3.5B、 3C、 2.5D、 2正确答案: C10、在外围设备和内存之间开辟直接的数据通道的是()。
A、程序直接控制B、 DMAC、通道控制D、中断正确答案: B11、在请求分页存储管理中,若采用FIFO页面淘汰算法,则当分配的页面数增加时,缺页中断的次数( )。
A、减少B、增加C、无影响D、可能增加也可能减少正确答案: D12、哪个属于抢占式调度___A、时间片轮转法;B、短作业优先调度;C、先来先服务;D、高响应比优先调度;正确答案: A13、在存储管理中,采用地址变换机构的目的是()A、加快进程空间寻址B、提高CPU效率C、进程空间保护和内存共享D、便于有效分配内存正确答案: A14、MS-DOS中的文件物理结构采用_________。
一、单项选择题1.测得某个采用按需调页(Demand-paging)策略的计算机系统部分状态数据为:CPU 利用率20%,用于对换空间的硬盘利用率97.7%,其它设备的利用率5%,由此断定系统出现异常。
此种情况下()能提高利用率。
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.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是()。
a. 无上邻空闲区也无下邻空闲区b. 有上邻空闲区但无下邻空闲区c. 有下邻空闲区但无上邻空闲区d. 有上邻空闲区也有下邻空闲区7.为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是()。
a.该程序不应含有过多的I/O操作b.该程序的大小不应超过实际的内存容量c.该程序应具有较高的局部性(Locality)d.该程序的指令相关不应过多8.某虚拟存储器系统采用页式内存管理,使用LRU页面替换算法,考虑下面的页面访问地址流(每次访问在一个时间单位中完成):18 1 7 8 2 7 2 1 8 3 8 2 1 3 1 7 1 3 7假定内存容量为4个页面,开始时空的,则页面失效次数是()。
a. 4b. 5c. 6d. 79.在分区分配方案中,需要执行靠拢(或紧凑)的操作是()。
存储管理的基本原理内存管理方法内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。
下面主要介绍连续分配存储管理、覆盖与交换技术以及页式与段式存储管理等基本概念和原理。
1.连续分配存储管理方式连续分配是指为一个用户程序分配连续的内存空间。
连续分配有单一连续存储管理和分区式储管理两种方式。
(1)单一连续存储管理在这种管理方式中,内存被分为两个区域:系统区和用户区。
应用程序装入到用户区,可使用用户区全部空间。
其特点是,最简单,适用于单用户、单任务的操作系统。
CP/M和DOS 2.0以下就是采用此种方式。
这种方式的最大优点就是易于管理。
但也存在着一些问题和不足之处,例如对要求内存空间少的程序,造成内存浪费;程序全部装入,使得很少使用的程序部分也占用—定数量的内存。
(2)分区式存储管理为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。
分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。
分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。
分区式存储管理引人了两个新的问题:内碎片和外碎片。
前者是占用分区内未被利用的空间,后者是占用分区之间难以利用的空闲分区(通常是小空闲分区)。
为实现分区式存储管理,操作系统应维护的数据结构为分区表或分区链表。
表中各表项一般包括每个分区的起始地址、大小及状态(是否已分配)。
分区式存储管理常采用的一项技术就是内存紧缩(compaction):将各个占用分区向内存一端移动,然后将各个空闲分区合并成为一个空闲分区。
这种技术在提供了某种程度上的灵活性的同时,也存在着一些弊端,例如:对占用分区进行内存数据搬移占用CPU~t寸间;如果对占用分区中的程序进行“浮动”,则其重定位需要硬件支持。
1)固定分区(nxedpartitioning)。
固定式分区的特点是把内存划分为若干个固定大小的连续分区。
第4章存储器管理4.4自测题4.4.1基本题一.判断题(正确的在括号中记√,错误的记×)1.为了减少内部碎片,页应偏小为好。
( )2.为了减少缺页中断率,页应该小一些。
( )3.为提高对换空间的利用率,一般对其使用离散的分配方式。
( )4.用户程序中出错处理部分不必常驻内存。
( )5.使用预分页的原因是每个进程在最初运行时需要一定数量的页面。
( )6.可变分区法可以比较有效地消除外部碎片,但不能消除内部碎片。
()7.分页存储管理方案易于实现用户使用内存空间的动态扩充。
( )8.LRU页面调度算法总是选择在主存驻留时间最长的页面被淘汰。
( )9.最佳适应算法比首次适应算法具有更好的内存利用率。
( )10.请求分段存储管理中,分段的尺寸要受主存空间的限制。
( )二.单项选择题,在每小题的四个备选答案中选出一个正确答案,并将其代码写在题干后面的括号内。
不选、错选或多选者该题无分。
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.提高CPU效率D.实现主存共享7.在可变式分区分配方案中,只需要进行一次比较就可以判定是否满足作业对主存空间要求的是______。
第五章存储管理一. 选择最合适的答案1.分页存储管理的存储保护是通过( )完成的.A.页表(页表寄存器)B.快表C.存储键D.索引动态重定2.把作业地址空间中使用的逻辑地址变成内存中物理地址称为()。
A、加载B、重定位C、物理化D、逻辑化3.在可变分区存储管理中的紧凑技术可以()。
A.集中空闲区B.增加主存容量C.缩短访问时间D.加速地址转换4.在存储管理中,采用覆盖与交换技术的目的是( )。
A.减少程序占用的主存空间B.物理上扩充主存容量C.提高CPU效率D.代码在主存中共享5.存储管理方法中,( )中用户可采用覆盖技术。
A.单一连续区 B. 可变分区存储管理C.段式存储管理 D. 段页式存储管理6.把逻辑地址转换成物理地址称为()。
A.地址分配B.地址映射C.地址保护D.地址越界7.在内存分配的“最佳适应法”中,空闲块是按()。
A.始地址从小到大排序B.始地址从大到小排序C.块的大小从小到大排序D.块的大小从大到小排序8.下面最有可能使得高地址空间成为大的空闲区的分配算法是()。
A.首次适应法B.最佳适应法C.最坏适应法D.循环首次适应法9.硬盘容量1G,内存容量为1024k,那么虚拟存储器最大实际容量可能是( ) 。
A.1024KB.1024MC.10GD.10G+1M10.用空白链记录内存空白块的主要缺点是()。
A.链指针占用了大量的空间B.分配空间时可能需要一定的拉链时间C.不好实现“首次适应法”D.不好实现“最佳适应法”11.一般而言计算机中()容量(个数)最多.A.ROMB.RAMC.CPUD.虚拟存储器12.分区管理和分页管理的主要区别是()。
A.分区管理中的块比分页管理中的页要小B.分页管理有地址映射而分区管理没有C.分页管理有存储保护而分区管理没有D.分区管理要求一道程序存放在连续的空间内而分页管理没有这种要求。
13.静态重定位的时机是()。
A.程序编译时B.程序链接时C.程序装入时D.程序运行时14.通常所说的“存储保护”的基本含义是()A.防止存储器硬件受损B.防止程序在内存丢失C.防止程序间相互越界访问D.防止程序被人偷看15.能够装入内存任何位置的代码程序必须是( )。
操作系统练习题一、填空题:1、在多道程序设计中,进程之间存在着两种不同的制约关系:__互斥___和___同步_____。
2、只有采用___动态___重定位技术,程序在内存中才可浮动。
3、在分页、分段存储管理中,访问一条指令或数据时需要访问内存___2__次,为加快这个访问过程需引入___快表____。
4、凡是数据到达和离去速度不匹配的地方均可采用__缓冲___技术。
5、活动头磁盘的访问时间包括___寻道___时间、__旋转延迟___时间和___数据传输___时间。
6、一个单CPU系统中有N个进程,则在就绪队列中进程的个数最多可能为N-1 。
7、Spooling系统由输入井和输出井、输入缓冲区和输出缓冲区和输入进程和输出进程3个部分组成。
8、文件按物理结构可分为顺序文件、链接文件和索引文件。
9、若信号量S的初值为1,当前值为-4,则表示有___4__个阻塞进程。
10、虚存的应用需求是_对物理内存实现逻辑扩充__。
11、凡是数据到达和离去速度不匹配的地方均可采用_缓冲___技术。
12、进程是由_____程序段____、___数据段_______和_____PCB_____3部分组成。
13、存储管理的4个功能是:_内存的分配与回收、地址转换、内存共享与保护和内存扩充。
14、在分区分配算法中,首次适应算法倾向于优先利用内存中_低地址_的空闲区,从而保留了高地址_部分的大空闲区。
15、按信息的交换单位,设备可分为___字符___和___块___两类,打印机属于___字符___设备。
16、____文件控制模块(FCB)__是文件存在的标志,它记录了系统管理文件所需要的全部信息。
17、文件系统中最基本的目标是实现文件的_按名存取_,这主要是通过文件系统的_目录_管理功能实现的。
18、一个单处理器系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有__4___,最少有___0___个。
操作系统期末练习题(2024春)单选题和判断题中阻电的描述为正响答案。
一、单选JB1 .在计算机系统中,控制和管理各种资源、有效地组织多道程序运行的系统软件称作()。
A.文件系统B.操作系统C.网络管理系统D.数据库管理系统2 .按照所起的作用和需要的运行环境,操作系统属于()。
A.应用软件B.用户软件C.系统软件D.支撑软件3 .操作系统的基本职能是()。
A.提供功能强大的网络管理工具B.提供用户界面,方便用户使用C.提供方便的可视化编辑程序D.控制和管理系统内各种资源,有效地组织多道程序的运行4.为了使计算机系统中所有的用户都能得到及时的响应,该操作系统应该是A.多道批处理系统B.实时系统C分时系统 D.网络系统5 .在实时系统中,一旦有处理请求和要求处理的数据时,CPU就应该立即处理该数据并将结果及时送回。
下面属于实时系统的是()。
A.办公自动化系统C.航空订票系统6 .实时操作系统追求的目标是(A.快速响应C.高吞吐率B.计算机激光照排系统D∙计算机辅助设计系统)OB.充分利用内存D.减少系统开销7 .操作系统内核与用户程序、应用程序之间的接口是()。
A.系统调用B.图形界面C. shell命令D. C语言函数31 .在以下的文件物理存储组织形式中,()常用于存放大型的系统文件。
A.串连文件B.连续文件C.索引文件D.多重索引文件32 .由一串字符序列组成,文件内的信息不再划分可独立的单位,这是指()。
A.顺序文件B.记录式文件C.流式文件D.烧接文件33 .如果文件系统中有两个文件重名,不应采用()结构。
A.非循环图目录B.树形目录C.二级目录D.单级目录34 .树形目录结构的主文件目录称为()。
A.根目录B.父目录C,子目录 D.用户文件目录35 .在UNlX/1.inux系统中,目录结构采用()。
A.维级目录B.二级目录C.单纯树形目录D.带链接的树形目录36 .当前目录是∕u∙sr∕meng,其下属文件PrOg/file.C的绝对路径.名是(A. ∕usr∕mcng∕filc.cB. ∕usr∕filcxC. ∕usr∙meng∕ρrog∕file.cD. ∕ρrog∕file.c37 .为防止用户共享文件时破坏文件,往往采用()方式.A.设置口令B.加密C.定期备份D.规定存取权限38 .用IS命令以长格式列目录信息时,若某一文件的特征在文件列表中按如下唤序显示在屏幕上:drwxrw-r-2usergk3564Oct2810:30∕user∕asD.h则同组用户的访问权限是()。
操作系统第二次任务一、单选题(每题3分,共计13题)题目1答案已保存满分3.00标记题目题干16.按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指()调度算法。
选择一项:A. 优先级法B. 先来先服务法C. 时间片轮转法D. 短作业优先法题目2答案已保存满分3.00标记题目题干18.在作业调度中,若采用优先级调度算法,为了尽可能使CPU和外部设备并行工作,有如下三个作业:J1以计算为主,J2以输入输出为主,J3计算和输入输出兼顾,则它们的优先级从高到低的排列顺序是()。
选择一项:A. J1,J2,J3B. J3,J2,J1C. J2,J1,J3D. J2,J3,J1题目3答案已保存满分3.00标记题目题干4.作业调度程序从处于()状态的队列中选取适当的作业调入主存运行。
选择一项:A. 后备B. 提交C. 完成D. 执行题目4答案已保存满分3.00标记题目题干6.在操作系统中,JCB是指()。
选择一项:A. 文件控制块B. 程序控制块C. 作业控制块D. 进程控制块题目5答案已保存满分3.00标记题目题干20.下列中断中,可能要人工介入的中断是()。
选择一项:A. 输入输出中断B. 程序性中断C. 时钟中断D. 硬件故障中断题目6答案已保存满分3.00标记题目题干12.在批处理系统中,周转时间是()。
选择一项:A. 作业的相对等待时间B. 作业运行时间C. 作业等待时间和运行时间之和D. 作业被调度进入主存到运行完毕的时间题目7答案已保存满分3.00标记题目题干17. 动态分区分配按照进程的需求量分配内存分区,所以()。
选择一项:A. 分区的长度不是预先固定的,分区的个数是不确定的B. 分区的长度是固定的C. 分区的个数是确定的D. 分区的长度和个数都是确定的题目8答案已保存满分3.00标记题目题干15. 最先适应分配算法把空闲区()选择一项:A. 按地址顺序从大到小登记在空闲区表中e � 97@�V �?# indent:-18.0pt;mso-list: l0 level1 lfo1;tab-stops:list 39.75pt'>A.按地址顺序从小到大登记在空闲区表中按地址顺序从大到小登记在空闲区表中B. 按长度以递减顺序登记在空闲区表中C. 按地址顺序从小到大登记在空闲区表中D. 按长度以递增顺序登记在空闲区表中题目9答案已保存满分3.00标记题目题干31. 在请求分页存储管理中,若采用FIFO页面淘汰算法,则当分配的页面数增加时,缺页中断的次数()。
计科技专业计算机操作系统资料一、选择题(选择最确切的一个答案,将其代码填入括号中,每空2分,共20分)1.某进程在运行过程中需要等待从磁盘上读人数据,此时该进程的状态是()。
A. 从就绪变为运行B. 从运行变为就绪C. 从运行变为阻塞D. 从阻塞变为就绪2.可重定位内存分区分配目的为()。
A.解决碎片问题B.便于多作业共享内存C.回收空白区方便D. 摆脱用户干预3.原语是()。
A.一条机器指令B. 若干条机器指令组成C.一条特定指令D. 中途能打断的指令4. 设备I/O方式有如下三种:()、()和()。
A.假脱机B. 询问C.联机D. 中断E.通道F. 脱机5.文件目录的主要作用是()。
A. 按名存取B. 提高速度C. 节省空间D. 提高外存利用率6.单机操作系统的共享资源是指()。
A. 内存、CPU、打印机B. 内存C. CPUD. 打印机7.操作系统负责为方便用户管理计算机系统的()。
A. 程序B. 文档资料C.资源D. 进程8.没有下列设备计算机无法工作()。
A. 软盘B. 硬盘C. 内存D. 打印机二、是非题(正确的划√,错误的划×,20分)(T)1.进程的互斥和同步的相互制约一般不会同时发生。
(T )2.多用户操作系统在单一硬件终端硬件支持下仍然可以工作。
(T)3,作业同步面向用户而进程同步面向计算机内部资源管理控制。
(F)4.实时操作系统的响应系数最小,设备利用率最低。
(T)5.UNIX或Linux操作系统的最大特点是分时、多用户、多任务和倒树型文件结构。
(T)6.常用的缓冲技术是解决慢速设备与快速CPU处理之间协调工作。
(T )7.死锁是指两个或多个进程都处于互等状态而无法继续工作。
(T )8. 多用户操作系统一定是具有多道功能的操作系统。
(T)9.一般的分时操作系统无法做实时控制用。
(T)10.一个物理硬盘可以分成多个逻辑硬盘分区进行面向用户文件系统的管理。
三、填空题(40分)1.按资源分配,设备类型分为以下三类:独享设备、共享设备和虚拟设备。
期末练习题一、单项选择题注意:蓝色的选项为正确答案。
第一章1.在计算机系统中,控制和管理各种资源、有效地组织多道程序运行的系统软件称为( B )。
A.文件系统B.操作系统C.网络管理系统 D.数据库管理系统2.按照所起的作用和需要的运行环境,操作系统属于( D )。
A.用户软件 B.应用软件C.支撑软件 D.系统软件3.操作系统的基本职能是( D )。
A. 提供功能强大的网络管理工具B. 提供用户界面,方便用户使用C. 提供方便的可视化编辑程序D. 控制和管理系统内各种资源,有效地组织多道程序的运行4.操作系统负责管理计算机系统的( C )。
A.程序 B.作业 C.资源 D.进程5.在计算机系统中,操作系统是( A )。
A.处于裸机之上的第一层软件 B.处于硬件之下的低层软件C.处于应用软件之上的系统软件 D.处于系统软件之上的用户软件6.为用户分配主存空间,保护主存中的程序和数据不被破坏,提高主存空间的利用率。
这属于( B )。
A.处理器管理 B.存储管理C.文件管理 D.作业管理7.操作系统对缓冲区的管理属于( B )的功能。
A.处理器管理 B.设备管理C.文件管理 D.存储器管理8.以下不属于操作系统关心的主要问题的是( D )。
A.管理计算机裸机B.设计、提供用户程序与计算机硬件系统的界面C.管理计算机系统资源D.高级程序设计语言的编译器9.以下不属于操作系统具备的主要功能的是( C )。
A.内存管理 B.中断处理C.文档编辑 D.CPU调度10.在下列操作系统中,强调吞吐能力的是( B )。
A.分时系统 B.多道批处理系统C.实时系统 D.网络系统11.批处理系统的主要缺点是( B )。
A.CPU的利用率不高 B.失去了交互性C.不具备并行性 D.系统吞吐量小12.为了使系统中所有的用户都能得到及时的响应,该操作系统应该是( B )。
A.多道批处理系统 B.分时系统C.实时系统 D.网络系统13.下面不属于分时系统特征的是( D )。
5.3 习题5.3.1选择最合适的答案1.分页存储管理的存储保护是通过( )完成的.A.页表(页表寄存器)B.快表C.存储键D.索引动态重定2.把作业地址空间中使用的逻辑地址变成内存中物理地址称为()。
A、加载B、重定位C、物理化D、逻辑化3.在可变分区存储管理中的紧凑技术可以()。
A.集中空闲区B.增加主存容量C.缩短访问时间D.加速地址转换4.在存储管理中,采用覆盖与交换技术的目的是( )。
A.减少程序占用的主存空间B.物理上扩充主存容量C.提高CPU效率D.代码在主存中共享5.存储管理方法中,( )中用户可采用覆盖技术。
A.单一连续区 B. 可变分区存储管理C.段式存储管理 D. 段页式存储管理6.把逻辑地址转换成物理地址称为()。
A.地址分配B.地址映射C.地址保护D.地址越界7.在内存分配的“最佳适应法”中,空闲块是按()。
A.始地址从小到大排序B.始地址从大到小排序C.块的大小从小到大排序D.块的大小从大到小排序8.下面最有可能使得高地址空间成为大的空闲区的分配算法是()。
A.首次适应法B.最佳适应法C.最坏适应法D.循环首次适应法9.硬盘容量1G,内存容量为1024k,那么虚拟存储器最大实际容量可能是( ) 。
A.1024KB.1024MC.10GD.10G+1M10.用空白链记录内存空白块的主要缺点是()。
A.链指针占用了大量的空间B.分配空间时可能需要一定的拉链时间C.不好实现“首次适应法”D.不好实现“最佳适应法”11.一般而言计算机中()容量(个数)最多.A.ROMB.RAMC.CPUD.虚拟存储器12.分区管理和分页管理的主要区别是()。
A.分区管理中的块比分页管理中的页要小B.分页管理有地址映射而分区管理没有C.分页管理有存储保护而分区管理没有D.分区管理要求一道程序存放在连续的空间内而分页管理没有这种要求。
13.静态重定位的时机是()。
A.程序编译时B.程序链接时C.程序装入时D.程序运行时14.通常所说的“存储保护”的基本含义是()A.防止存储器硬件受损B.防止程序在内存丢失C.防止程序间相互越界访问D.防止程序被人偷看15.能够装入内存任何位置的代码程序必须是( )。
第4章内存管理作业题作业题题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什么是动态重定位? 它有什么特点?(见教材)题7某操作系统采用分区存储管理技术。
操作系统在低地址占用了100KB的空间,用户区主存从100KB处开始占用512KB。
开始时,用户区全部空闲,分配时截取空闲分区的低地址部分作为已分配区。
在执行申请、释放操作序列后,请求300KB、请求100KB、释放300KB、请求150KB、请求50KB、请求90KB,请回答以下问题。
(1)若采用首次适应分配算法此时主存中有哪些空闲分区?请求300k;地址块100~399被占用;地址块400~612空闲。
请求100k;地址块100~399、400~499被占用;地址块500~612空闲。
请求300k;地址块400~499被占用;地址块100~399、500~612空闲。
请求150k;地址块100~249、400~499被占用;地址块250~399、500~612空闲。
请求50k;地址块100~249、250~299、400~499被占用;地址块300~399、500~612空闲。
请求90k;地址块100~249、250~300、300~389、400~499被占用;地址块390~399、500~612.产生空闲块两个,块1,首地址390,块大小为10kb;块2,首地址500,块大小为112kb。
组号 成绩 计算机操作系统 课程设计报告
题目 基于可重定位分区分配算法的内存管理的设计与实现
专业: 计算机科学与技术 班级: 学号+姓名: 指导教师: 2016年12月 23 日 一. 设计目的 掌握内存的连续分配方式的各种分配算法
二. 设计内容 基于可重定位分区分配算法的内存管理的设计与实现。本系统模拟操作系统内存分配算法的实现,实现可重定位分区分配算法,采用PCB定义结构体来表示一个进程,定义了进程的名称和大小,进程内存起始地址和进程状态。内存分区表采用空闲分区表的形式来模拟实现。要求定义与算法相关的数据结构,如PCB、空闲分区;在使用可重定位分区分配算法时必须实现紧凑。
三. 设计原理 可重定位分区分配算法与动态分区分配算法基本上相同,差别仅在于:在这种分配算法中,增加了紧凑功能。通常,该算法不能找到一个足够大的空闲分区以满足用户需求时,如果所有的小的空闲分区的容量总和大于用户的要求,这是便须对内存进行“紧凑”,将经过“紧凑”后所得到的大空闲分区分配给用户。如果所有的小空闲分区的容量总和仍小于用户的要求,则返回分配失败信息
四. 详细设计及编码 1. 模块分析 (1)分配模块 这里采用首次适应(FF)算法。设用户请求的分区大小为,内存中空闲分区大小为,规定的不再切割的剩余空间大小为size。空闲分区按地址递增的顺序排列;在分配内存时,从空闲分区表第一个表目开始顺序查找,如果≥且,说明多余部分太小,不再分割,将整个分区分配给请求者;如果≥且,就从该空闲分区中按请求的大小划分出一块内存空间分配给用户,剩余的部分仍留在空闲分区表中;如果到找到一个足够大的空闲分区;如果没有找到一个足够大的内存空闲分区,但所有的小的空闲分区的容量总和大于用户的要求,就进行紧凑,将紧凑后得到的大的空闲分区按上述的方式分配给用户;但如果所有的小的空闲分区的容量总和仍不能满足用户需要,则分配失败。
(2)内存回收模块 进行内存回收操作时,先随机产生一个要回收的进程的进程号,把该进程从进程表中中删除,它所释放的空闲内存空间插入到空闲分区表;如果回收区与插入点的前一个空闲分区相邻,应将回收区与插入点的前一分区合并,修改前一个分区的大小;如果回收区与插入点的后一个空闲分区相邻,应将回收区与插入点的后一分区合并,回收区的首址作为新空闲分区的首址,大小为二者之和;如果回收区同时与插入点的前、后空闲分区相邻,应将三个分区合并,使用前一个分区的首址,取消后一个分区,大小为三者之和。
(3)紧凑模块 将内存中所有作业进行移动,使他们全都相邻接,把原来分散的多个空闲小分区拼接成一个大分区。
2. 流程图
否 否
是 是
3. 代码实现 #include<>
#include<> #include<> #include<>
#define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define SIZE 15 StartAddr>pList[j+1].pStartAddr){ temp=pList[j]; pList[j]=pList[j+1]; pList[j+1]=temp; } } } } StartAddr=0; StartAddr=pList[i].pStartAddr+pList[i].pOccupy; } StartAddr+pList[pLength-1].pOccupy; s->areaSize=sumEmpty; ListInsert(L,s); printf("\n紧凑后的>>>>\n"); pListPrint(pList); PrintList(L); }
void amalgamate(LinkList &L){No; delPSize=pList[index].pSize; delPOccupy=pList[index].pOccupy; delPStartAddr=pList[index].pStartAddr;
printf("________________________________________________________________________________");
printf("回收内存 进程 P%d: 始址:%d K 占用:%d KB\n",delPNo,delPStartAddr,delPOccupy);
printf("\n回收后>>>>\n"); ListDelete(pList,index); No,pList[i].pStartAddr,pList[i].pOccupy); } }
void distribute(LinkList &L,struct PCB *process){ LinkList p=L->next; while(p!=NULL) { if(p->areaSize>=process->pSize) break; p=p->next; } printf("%d KB < %d KB",process->pSize,p->areaSize); if(p->areaSize-process->pSize<=SIZE){ //不用分割全部分配 (直接删除此空闲分区结点) process->pStartAddr=p->aStartAddr; //进程始址变化 process->pState=1; //进程状态 process->pOccupy=p->areaSize; //进程实际占用内存 为改空闲分区的大小
pList[pLength++]= *process; //把进程加入进程列表 printf(" 且 %d KB - %d KB = %d KB < %d KB 则 整区分配\n",
p->areaSize,process->pSize,p->areaSize-process->pSize,SIZE);
pSort(pList); printf("\n分配后>>>>\n"); pListPrint(pList);//输出内存中空间占用情况 DeleteElem(L,p->aStartAddr); }else{//分割分配
process->pStartAddr=p->aStartAddr; //进程始址变化 process->pState=1; //进程状态 process->pOccupy=process->pSize; //进程实际占用内存 为该进程的大小
pList[pLength++]= *process; //把进程加入进程列表 printf(" 且 %d KB - %d KB = %d KB > %d KB 则 划分分配\n",
p->areaSize,process->pSize,p->areaSize-process->pSize,SIZE);
pSort(pList); //进程排序 printf("\n分配后>>>>\n"); pListPrint(pList);//输出内存中空间占用情况 //compact(L,pList); p->aStartAddr+=process->pSize; //空闲分区始址变化 p->areaSize-=process->pOccupy; //空闲分区大小 变化 } } int main(){ //0、创建一个进程,参数随机数方式产生 struct PCB p; int i,num,dele,k,stAddr,flag; LinkList s,L; printf("********************************可重定位分区分配********************************");
if(!InitList(L)) //初始化空闲分区表 printf("创建表失败\n"); while(1){ srand(time(0)); flag=rand()%100+1; if(flag%2==0){ creatP(&p);//初始化进程
printf("________________________________________________________________________________");
printf("待装入作业:%d Size = %d KB\n",,; //1、请求分配 size //2、检索空闲分区表(首次适应FF) PrintList(L); stAddr=search(L,;//得到足够大的分区的始址 ,没有则返回-1
if(stAddr==-1){//没有足够大的分区 if(add(L)>={//空闲区总和足够大 printf("没有足够大的空闲分区但空闲总和足够大\n");
//紧凑 compact(L,pList); //按动态分区方式分配 distribute(L,&p);