操作系统-主存储器空间的分配和回收
- 格式:docx
- 大小:297.72 KB
- 文档页数:19
全国自考(操作系统)模拟试卷4(题后含答案及解析) 题型有:1. 单项选择题 2. 多项选择题 3. 填空题 4. 简答题 5. 综合题单项选择题1.操作系统是一种系统软件,它的职能是A.只管理软件B.只管理硬件C.既不管理硬件,也不管理软件D.既管理硬件,也管理软件正确答案:D解析:操作系统是一种资源管理程序,而计算机资源包括硬件资源和软件资源。
2.设计批处理操作系统时,首先应考虑的是A.交互性和响应时间B.吞吐量和周转时间C.灵活性和可适应性D.可靠性和完整性正确答案:B解析:由于批处理操作系统一次性可执行一批作业,在执行作业时用户干扰,不能像分时系统那样与用户进行交互执行作业。
因此,在设计这种操作系统时,应该着重考虑如何提高计算机系统的工作效率,即如何去提高计算机在单位时间内的算题量。
3.操作系统的层次结构是一种外层依赖内层的关系,故管理次序从内到外应是A.存储→处理器→设备→文件B.处理器→存储→作业→文件C.处理器→存储→设备→文件D.存储→处理器→文件→设备正确答案:C4.下述UNIX系统调用中,()不属于文件操作类系统调用。
A.creatB.writeC.waitD.open正确答案:C解析:wait属于控制类系统调用。
5.引入多道程序设计技术后,提高了整个系统效率,但()不属其范畴。
A.提高了处理器的利用率B.充分利用外围设备资源C.发挥了处理器与外围设备以及外围设备之间并行工作能力D.提高了程序运行速度正确答案:D解析:多道程序设计能提高资源使用效率,增加单位时间的算题量。
但是对每个计算问题来说,从算题开始到全部完成所需的计算时间可能要延长。
6.()中断是自愿中断。
A.程序B.外部C.I/OD.访管正确答案:D解析:自愿中断是正在运行的进程执行一条“访管指令”请求系统调用为其服务所引起的中断,也称为访管中断。
7.响应比最高者优先算法综合考虑了作业的等待时间和计算时间,把响应比定义为A.作业等待时间与计算时间之比B.作业计算时间与等待时间之比C.作业周转时间与等待时间之比D.作业周转时间与计算时间之比正确答案:A解析:响应比=等待时间/计算时间8.下述()不是存储器管理功能。
2022年哈尔滨工业大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、现代操作系统中,文件系统都有效地解决了重名(即允许不同用户的文件可以具有相同的文件名)问题。
系统是通过()来实现这一功能的。
A.重名翻译结构B.建立索引表C.树形目录结构D.建立指针2、文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B.盘块和块内字节均从0开始编号。
假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是()。
A.81,1B.81,2C.82,1D.82,23、下列选项中,会导致进程从执行态变为就绪态的事件是()。
A.执行P(wait)操作B.中请内存失败C.启动I/O设备D.被高优先级进程抢占4、在下列操作系统的各个功能组成部分中,一定需要专门硬件配合支持的是()。
I.地址映射II.进程调度III.中断系统IV.系统调用A.IB.I、IIIC. I、III、IVD.II、II5、有若干并发进程均将一个共享变量count的值加1 次,那么有关count中的值说法正确的是()。
1)肯定有不止确的结果2)肯定有止确的结果3)若控制这些并发进程互斥执行count加1操作,count中的值正确A.1)和3)B.2)和3)C.3)D.1)、2)、3)的说法均不正确6、作业在执行中发生缺页中断,经操作系统处理后应让其执行()指令。
A.被中断的前一条B.被中断的那一条C.被中断的后·条D.启动时的第一条7、设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入1个数据块到用户工作区的时间为5,对用户上作区中的1个数据块进行分析的时问为90。
进程从外设读入并分析2个数据块的最短时间是()。
A.200B.295C.300D.3908、用户程序在口态下使用特权指令引起的中断属于()。
2022年济南大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、某文件系统中,针对每个文件,用户类别分为4类:安全管理员、文件上、文件主的伙伴、其他用户:访问权限分为5类:完全控制、执行、修改、读取、写入。
若文件控制块中用:进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为()。
A.5B.9C.12D.202、操作系统为了管理文件,设计了文件控制块(FCB),文件控制块的建立是().A.在调用create()时B.在调用open()时C.在调用read()时D.在调用write()3、在下列操作系统的各个功能组成部分中,一定需要专门硬件配合支持的是()。
I.地址映射II.进程调度III.中断系统IV.系统调用A.IB.I、IIIC. I、III、IVD.II、II4、中断扫描机构是()扫描次中断寄存器。
A.每隔一个时间片B.每条指令执行周期内最后时刻C.每当进程释放CPUD.每产生一次中断5、一个进程的读磁盘操作完成后,操作系统针对该进程必做的是(),A.修改进程状态为就绪态B.降低进程优先级C.给进程分配用户内存空间D.增加进程时间片大小6、总体上说,“按需调页”(Demand-Paging)是个很好的虚拟内存管理策略。
但是,有些程序设计技术并不适合于这种环境,例如()A.堆栈B.线性搜索C.矢量运算D.分法搜索7、假设页的大小为4KB,页表的每个表项占用4B。
对于一个64位地址空间系统,采用多级页表机制,至少需要()级页表(本题默认字长为1B)。
A.3B.4C.5D.68、下列观点中,不是描述操作系统的典型观点的是()。
A.操作系统是众多软件的集合B.操作系统是用户和计算机之间的接口C.操作系统是资源的管理者D.操作系统是虚拟机9、操作系统提供了多种界面供用户使用,其中()是专门供应用程序使用的一种界面。
A.终端命令B.图形用户窗C.系统调用D.作业控制语言10、程序员利用系统调用打开I/O设备时,通常使用的设备标识是(),A.逻辑设备名B.物理设备名C.主设备号D.从设备号11、用户程序发出磁盘1/0请求后,系统的正确处理流程是()A.用户程序→系统调用处理程序→中断处理程序→设备驱动程序B.用户程序→系统调用处理程序→设备驱动程序→中断处理程序C.用户程序→设备驱动程序→系统调用处理程序→中断处理程序D.用户程序→设备驱动程序→中断处理程序→系统调用处理程序12、缓存技术的缓冲池在()中。
第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。
但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。
实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:存在于主存中;•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;由操作系统协调这些存储器的使用。
二、存储管理的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。
(注意cpu和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。
这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;地址映射分静态和动态两种方式。
1、静态地址重定位是程序装入时集中一次进行的地址变换计算。
物理地址= 重定位的首地址+ 逻辑地址•优点:简单,不需要硬件支持;•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。
2022年安徽理工大学软件工程专业《操作系统》科目期末试卷A(有答案)一、选择题1、()不是操作系统的功能。
A.CPU管理B.存储管理C.网络管理D.数据管理2、设计实时操作系统时,首先应该考虑系统的()。
A.可靠性和灵活性B.实时性和可靠性C.分配性和可靠性D.灵活性和实时性3、设有n个进程共用一个相同的程序段,若每次最多允许m个进程(mSn)同时进入,临界区,则信号量的初值为()。
A.nB.mC.m-nD.-m4、关于临界问题的一个算法(假设只有进程P0和P1,能会进入临界区)如下(i为0或1代表进程P0或者P1):Repeatretry:if(turn!=-1)turn=i;if(turn!=i)go to retry;turn=-1;临界区:turn=0;其他区域;until false;该算法()。
A.不能保持进程互斥进入临界区,且会出现“饥饿”B.不能保持进程互斥进入临界区,但不会出现“饥饿”C.保证进程互斥进入临界区,但会出现“饥饿”D.保证进程互斥进入临界区,不会出现“饥饿”5、下列选项中,降低进程优先权级的合理时机是()。
A.进程的时间片用完B.进程刚完成I/O,进入就绪队列C.进程长期处于就绪队列D.进程从就绪状态转为执行状态6、为了使多个进程能有效地同时处理输入和输出,最好使用()结构的缓冲技术。
A.缓冲池B.循环缓冲C.单缓冲D.双缓冲7、在SPOOLing系统中,用户进程实际分配到的是()。
A.用户所要求的外设B.内存区,即虚拟设备C.设备的部分存储区D.设备的部分空间8、考虑一个文件存放在100个数据块中。
文件控制块、索引块或索引信息都驻留内存。
那么如果().不需要做任何磁盘I/O操作。
A.采用连续分配策略,将最后一个数据块搬到文件头部,B.采用单级索引分配策略,将最后一个数据块插入文件头部C.采用隐式链接分配策略,将最后一个数据块插入文件头部D.采用隐式链接分配策略,将第一个数据块插入文件尾部,9、文件系统中设立打开(open)系统调用的卡要目的是()。
操作系统实验指导书一、实验说明1、实验目的实验是操作系统原理课程中不可缺少的重要教学环节,实验目的是使学生理论联系实际,使学生在实践探索中去发现问题、去解决问题,提高了学生获取知识和应用技术的能力,培养了学生分析和解决问题的能力。
《操作系统原理》要求理论与实践相结合,本门实验课程是对《操作系统原理》课堂教学的一个重要补充,与理论学习起着相辅相成的作用,是实施《操作系统原理》教学的一个重要组成部分。
通过本实验课的实践学习,可以增强本专业的学生对系统实现的认识。
对加深理解和掌握操作系统相关原理有重要帮助。
2、实验要求进一步了解和掌握操作系统原理,提高系统设计的能力。
对每一实验题目,应独立完成,并要求:·上机前,学生必须做好充分的实验准备工作,掌握与实验相关的背景知识,用任一种高级语言编写程序。
·上机时,认真调试,并观察、记录程序运行过程中出现的现象和问题。
·上机后,分析实验结果并写出实验报告。
3、实验报告要求每个实验(包括选做的)均应编写实验报告,学生实验后要写出严谨的、实事求是的、文字通顺的、字迹公整的实验报告。
实验报告应包括以下内容:(1)实验题目(2)实验目的(3)实验内容●程序中使用的数据结构及符号说明●流程图●源程序清单并附上注释(4)实验结果及分析●运行结果(必须是上面程序清单所对应输出的结果)●对运行情况所作的分析以及本次调试程序所取得的经验。
如果程序未能通过,应分析其原因。
二、实验内容实验一熟悉使用计算机系统一、实验名称:熟悉使用计算机系统二、实验目的与要求通过对Windows操作系统的使用,熟悉Windows操作系统中的基本概念,如单用户、多任务、进程和文件等,熟悉Windows中命令行方式下常用命令的使用方法;进一步熟悉TC语言与开发环境,为以后的实验打好基础。
三、实验内容1.开机后,熟悉Windows的界面(桌面、任务栏、开始按钮<点击后出现“开始”菜单>、我的电脑图标、回收站、我的文档)。
第八章磁盘存储器的管理第一节文件的物理结构和外存的分配方式一、概述磁盘是一种可直接存取的随机存储器(这一点与内存相似),一个逻辑盘可以看作一片连续的存储空间。
确定外存空间的分配方式(组织文件的物理结构)主要考虑:提高文件的访问速度、有效地利用外存空间。
常用的外存分配方法有:连续分配、链接分配、索引分配。
二、磁盘存储空间的结构磁盘说明图1盘块(扇区)是磁盘上的最小存储分配单位,每个盘块有唯一编号;地址是:磁道(柱面)号+扇区号+盘面号;从盘块编号到地址的转换由硬件完成,在OS中一个盘块的地址就是盘块编号。
一般一个盘块的大小与内存分页中页(内存块)的大小一致,一页存放到一个盘块中。
三、连续分配1、思想方法为每个文件分配一组位置相邻接的盘块(磁盘上的地址连续/盘块编号连续的盘块),文件中的逻辑页被顺序地存放到邻接的各物理盘块中。
这保证了文件中的逻辑顺序与文件占用盘块顺序的一致性。
这样物理结构的文件称为顺序文件;每个文件都从分配给它的一个盘块的第一个字节开始存放。
文件地址:在文件的目录中,存放该文件的第一个记录所在的盘块号和文件的长度(共占多少块)。
1230567491011813141512171819162122232025262724list29303128mailcountfile start length coun t 02tr 143mail 196list 284f62????tr f图 8-1 磁盘空间的连续分配2、优缺点◆存取容易,存取速度较快;◆必须事先知道文件的长度,不利于文件的动态增长; ◆存放一个文件要求足够大的连续存储空间; ◆存储空间的管理存在“碎片”问题,须定时整理。
四、链接分配1、思想方法:为每个文件分配一组位置离散的盘块,每个盘块中存放文件的一个逻辑页;通过给每个盘块设置一个指针,将属于同一个文件的盘块链接在一起,链接的顺序和文件的逻辑页的顺序一致。
这样物理结构的文件称为链接文件。
操作系统-存储管理操作系统-存储管理一、引言存储管理是操作系统中重要的组成部分,它负责管理计算机系统中的存储器资源。
存储管理的任务包括内存分配、内存保护、内存回收等,通过有效的存储管理可以充分利用系统的存储资源,提高系统的运行效率和性能。
二、内存层次结构1、主存储器主存储器是计算机系统中最主要的存储器,它用于存放正在运行的程序和数据,是CPU直接访问的存储器。
主存储器一般被划分为若干个固定大小的块,每个块被称为一页,每一页可以存放一个进程的一部分或全部。
2、辅助存储器辅助存储器是主存储器的扩展,主要用于存储大容量的数据和程序。
辅助存储器包括硬盘、磁带等设备,其访问速度比主存储器慢,但容量较大。
三、内存管理1、内存分配方式a:静态分配静态分配是指在程序运行之前,就确定了程序在内存中的位置。
静态分配的优点是简单高效,但是会浪费存储资源。
b:动态分配动态分配是指程序在运行时,根据需要动态分配内存。
动态分配的优点是灵活高效,但是需要额外的内存管理开销。
2、内存管理算法a:首次适应算法首次适应算法是按照内存块的起始地质逐一查找,找到第一个大小大于等于要求的空闲的内存块进行分配。
b:最佳适应算法最佳适应算法是在所有满足要求的内存块中选择大小最小的内存块进行分配。
c:最差适应算法最差适应算法是在所有满足要求的内存块中选择大小最大的内存块进行分配。
3、内存保护内存保护是指通过访问权限控制,确保每个进程只能访问自己分配的内存空间,防止进程之间的干扰。
4、内存回收内存回收是指当进程不再使用某些内存空间时,将其释放给系统以便后续的内存分配。
内存回收可以通过标记清除算法、引用计数算法等方式实现。
四、虚拟内存管理1、虚拟内存机制虚拟内存是一种扩展的内存管理技术,它通过将部分程序或数据装入主存储器,并实现从辅助存储器到主存储器的动态迁移,提高了计算机系统的运行性能。
2、页面置换算法页面置换算法是指当主存储器已满时,需要置换出某些页面到辅助存储器中,以便为新的页面腾出空间。
实习六磁盘存储空间得分配与回收一、实习内容模拟磁盘空闲空间得表示方法,以及模拟实现磁盘空间得分配与回收、二、实习目得磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。
用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上得文件删去,这就涉及到磁盘存储空间得分配与回收、一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间得分配有两种方式,一种就是分配连续得存储空间,另一种就是可以分配不连续得存储空间、怎样有效地管理磁盘存储空间就是操作系统应解决得一个重要问题,通过本实习使学生掌握磁盘存储空间得分配与回收算法。
三、实习题目本实习模拟三种磁盘存储空间得管理方法。
第一题:连续得磁盘存储空间得分配与回收。
[提示]:(1) 要在磁盘上建立顺序文件时,必须把按序排列得逻辑记录依次存放在磁盘得连续存储空间中。
可假定磁盘初始化时,已把磁盘存储空间划分成若干等长得块(扇区),按柱面号与盘面号得顺序给每一块确定一个编号、随着文件得建立、删除、磁盘存储空间被分成许多区(每一区包含若干块),有得区存放着文件,而有得区就是空闲得。
当要建立顺序文件时必须找到一个合适得空闲区来存放文件记录,当一个文件被删除时,则该文件占用得区应成为空闲区。
为此可用一张空闲区表来记录磁盘存储空间中尚未占用得部分,格式如下:(2)要建立文件时,先查找空闲区表,从状态为“未分配”得登记栏目中找出一个块数能满足要求得区,由起始空闲块号能依次推得可使用得其它块号、若不需要占用该区得所有块时,则剩余得块仍应为未分配得空闲块,这时要修改起始空闲块号与空闲块数、若占用了该区得所有块,则相应登记栏中得状态修改成“空表目”。
删除一个文件时,从空闲区表中找一个状态为“空表目”得登记栏目,把归还得起始块号与块数填入对应得位置。
磁盘存储空间得分配与回收算法类似于主存储器得可变分区方式得分配与回收。
实习四 主存储器空间的分配和回收一,实习题目本实习模拟在两种存储管理方式下的主存分配和回收。
第一题:在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。
[提示]:可变分区方式是按作业需要的主存空间大小来分割分区的。
当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。
随着作业的装入、撤离,主存空间被分成许多个分区,有的分为了 说明哪些区是空闲的,可以用来装入新作业,必须要有一张空闲区说明表,格式如下:第一栏 第二栏其中,起址——指出一个空闲区的主存起始地址。
长度——指出从起始地址开始的一个连续空闲的长度。
状态——有两种状态,一种是“未分配”状态,指出对应的由起址指出的某个长度的区域是空闲区;另一种是“空表目”状态,表示表中对应的登记项目是空白(无效),可用来登记新的空闲区(例如,作业撤离后,它所占的区域就成了空闲区,应找一个“空表目”栏登记归还区的起址和长度且修改状态)。
由于分区的个数不定,所以空闲区说明表中应有适量的状态为“空表目”的登记栏目,否则造成表格“溢出”无法登记。
上述的这张说明表的登记情况是按提示(1)中的例所装入的三个作业占用的主存区域后填写的。
(2) 当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够大的空闲区。
有时找到的空闲区可能大于作业需要量,这时应把原来的空闲区变成两部分:一部分分给作业占用;另一部分又成为一个较小的空闲区。
为了尽量减少由于分割造成的空闲区,而尽量保存高地址部分有较大的连续空闲区域,以利于大型作业的装入。
为此,在空闲区说明表中,把每个空闲区按其地址顺序登记,即每个后继的空闲区其起始地址总是比前者大。
为了方便查找还可使表格“紧缩”,总是让“空表目”栏集中在表格的后部。
(3) 采用最先适应算法(顺序分配算法)分配主存空间。
按照作业的需要量,查空闲区说明表,顺序查看登记栏,找到第一个能满足要求的空闲区。
当空闲区大于需要量时,一部分用来装入作业,另一部分仍为空闲区登记在空闲区说明表中。
由于本实习是模拟主存的分配,所以把主存区分配给作业后并不实际启动装入程序装入作业,而用输出“分配情况”来代替。
最先适应分配算法如图4-1。
(4) 当一个作业执行结束撤离时,作业所占的区域应该归还,归还的区域如果与其它空闲区相邻,则应合成一个较大的空闲区,登记在空闲区说明表中。
例如,在提示(1)中列举的情况下,如果作业2撤离,归还所占主存区域时,应与上、下相邻的空闲区一起合成一个大的空闲区登记在空闲区说明表中。
归还主存时的回收算法如图4-2。
(5) 请按最先适应算法设计主存分配和回收的程序。
然后按(1)中假设主存中已装入三个作业,且形成两个空闲区,确定空闲区说明表的初值。
现有一个需要主存量为6K的作业4申请装入主存;然后作业3撤离;再作业2撤离。
请你为它们进行主存分配和回收,把空闲区说明表的初值以及每次分配或回收后的变化显示出来或打印出来。
二,本实验用到的一些数据结构有:typedef struct NODE{char name;//名称float start;//起始位置float end;//大小int flag;//是否分配的标志}NODE;NODE OS[COUNT];//数组三,流程图四,源代码#include <stdio.h>#include<math.h>#define COUNT 512typedef struct NODE{char name;//名称float start;//起始位置float end;//大小int flag;//是否分配的标志}NODE;NODE OS[COUNT];//数组int count;//被分成的块数统计int applyfree;float numb;char c;//先对数组进行初始化,使没有分配的名称为P void init(){count=1;OS[0].name ='P';OS[0].start =0;OS[0].end =COUNT;OS[0].flag =1;}//对数组的插入操作void insert(int m,float st,float en){int i;count++;for(i=count;i>m+1;i--){OS[i]=OS[i-1];}OS[m].start =st;OS[m].end =en;}//移动操作,即对数组的删除操作void move(int m){int i;for(i=m;i<count-1;i++){OS[i]=OS[i+1];}count--;}//如果相邻块都没有分配,则要合并到一起void rremove(int m,float st,float en){if(!OS[m-1].flag &&!OS[m+1].flag ){OS[m].name ='P';OS[m].flag =1;}if(OS[m-1].flag ){OS[m-1].end =OS[m-1].end +en;move(m);}if(OS[m+1].flag ){OS[m].end =OS[m].end +OS[m+1].end ;OS[m].name ='P';OS[m].flag =1;move(m+1);}}//打印输出void show(){printf("名称标识起址长度状态\n");for(i=0;i<count;i++){if(OS[i].flag )printf("P ");elseprintf("%c ",OS[i].name );printf("%d %1.0f %1.0f ",i,OS[i].start ,OS[i].end );if(OS[i].flag )printf("未分配\n");elseprintf("已分配\n");}}//从键盘输入数据void putin(){printf("请输入申请或者释放的进程名称及资源数量:\n");rewind(stdin);scanf("%c",&c);scanf("%d",&applyfree);scanf("%f",&numb);}int apply(){int i=0;int applyflag=0;int freeflag=0;if(applyfree)//提出申请资源{while(!applyflag&&i<count){if(OS[i].end >=numb&&OS[i].flag ){if(OS[i].end ==numb){OS[i].name =c;OS[i].flag =0;}else{insert(i+1,OS[i].start +numb,OS[i].end -numb);OS[i+1].flag =1;OS[i+1].name ='P';OS[i].start =OS[i].start ;OS[i].name =c;OS[i].end =numb;OS[i].flag =0;}applyflag=1;}i++;if(applyflag){printf("申请成功!\n");return 1;}else{printf("申请失败!没有足够大的空闲空间。
\n");return 0;}}else//提出释放资源{while(!freeflag&&i<count){if(OS[i].name ==c){if(OS[i].end ==numb){rremove(i,OS[i].start ,OS[i].end );}else{if(OS[i].end >numb){insert(i+1,OS[i].start +numb,OS[i].end -numb);OS[i+1].name ='P';OS[i+1].flag =0;OS[i].end =numb;OS[i].flag =1;if(OS[i-1].flag ){rremove(i,OS[i].start ,OS[i].end );}}else{printf("释放失败,因为正使用的数量小于要求释放的数量。
\n");return 0;}}freeflag=1;}i++;}if(freeflag){printf("释放成功!\n");return 1;}else{printf("释放失败!未找到匹配的进程名称。
\n");return 0;}}void main(){init();show();while(1){putin();apply();show();}}五,执行结果空闲区说明表的初始状态作业4的申请量以及为作业4分配后的空闲区说明表状态作业3和作业2的归还量以及回收作业3,作业2所占主存后的空闲区说明表第二题:在分页式管理方式下采用位示图来表示主存分配情况,实现主存空间的分配和回收。
[提示]:(1) 分页式存储器把主存分成大小相等的若干块,作业的信息也按块的大小分页,作业装入主存时可把作业的信息按页分散存放在主存的空闲块中,为了说明主存中哪些块已经被占用,哪些块是尚未分配的空闲块,可用一张位示图来指出。
位示图可由若干存储单元来构成,其中每一位与一个物理块对应,用0/1表示对应块为空闲/已占用。
(2) 假设某系统的主存被分成大小相等的64块,则位示图可用8个字节来构成,另用一单元记录当前空闲块数。
如果已有第0,1,4,5,6,9,11,13,24,31,共10个主存块被占用了,那么位示图情况如下:图4-1 最先适应分配模拟算法图4-2 主存回收算法(3) 当要装入一个作业时,根据作业对主存的需要量,先查当前空闲块数是否能满足作业要求,若不能满足则输出分配不成功。
若能满足,则查位示图,找出为“0”的一些位,置上占用标志“1”,从“当前空闲块数”中减去本次占用块数。
按找到的计算出对应的块号,其计算公式为:块号= j 8+i其中,j表示找到的是第n个字节,I表示对应的是第n位。
根据分配给作业的块号,为作业建立一张页表,页表格式:(4) 当一个作业执行结束,归还主存时,根据该作业的页表可以知道应归还的块号,由块号可计算出在位示图中的对应位置,把对应位的占用标志清成“0”,表示对应的块已成为空闲块。