操作系统大作业2011

合集下载

操作系统2011_第一章应用题参考答案

操作系统2011_第一章应用题参考答案

第一章 应用题参考答案3 设有三道程序,按 A、B、C 优先次序运行,其内部计算和 I/O 操作时间由图给出。

A C11=30ms∣BC21=60ms ∣CC31=20ms ∣I12=40ms ∣I22=30ms ∣I32=40ms ∣C13=10msC23=10msC33=20ms试画出按多道运行的时间关系图(忽略调度执行时间)。

完成三道程序共花多少时间?比单道运行节省了多少时间?若处理器调度程序每次进行程序转换化时 1ms, 试画出各程序状态转换的时间关系图。

答://注: 由于本题没有明确抢占式调度与非抢占式调度,且就教学进度来讲还没 有明确讲述抢占式调度,因此本题按照非抢占式调度算法做。

另外最后一小问(蓝 色字体部分),没有明确 I/O 调度是否花费时间,因此,最后一小问,无论同学们 给出什么答案都给 10 分。

也就是,第二小问的非抢占式答案正确就给 20 分,如果 不正确给 10 分。

1) 忽略调度执行时间,单道方式运行,时间 0 3 7 814 17 18 20 24 26单位 10 msI/OI12I22I32CPU C11C13 C21C23 C31C33三道程序总的运行时间=30+40+10+60+30+10+20+40+20=260ms2) 忽略调度执行时间,多道运行方式(非抢占式):时间 0 37 9 10 12 13 14 16 18单位 10 msI/OI12I22I32CPU C11 C21C13 C31 C23C33非抢占式共用去 180ms,单道完成需要 260ms,节省 80ms。

3) 调度执行时间 1ms,多道运行方式(非抢占式): 时间 0 303132 7172 939495 105106 124125127129 139 168169 189 单位 1msI/OI12I22I32CPUC11 C21 C21 C13 C31 C31 C23C33OS第1页共5页调度执行时间 1ms,多道运行方式(非抢占式)://另一种答案,更准确的答案 时间 0 1 313233 737475 95 97 107 127 130 131 170 172 192 (ms)I/OI12CPUC11 C21OS①②I22 C21 C13 C31③ ④⑤I32 C23⑥C33 ⑦计算操作系统调度开销原则如下: (1) 调度程序执行花 1ms。

操作系统2011_第二章应用题参考答案

操作系统2011_第二章应用题参考答案

8 在道数不受限制的多道程序系统中,有作业进入系统后备队列时立即进行作业调度。 现有 4 个作业进入系统,有关信息列于下表,当作业调度和进程调度均采用高优先级算 法时(规定数大则优先级高)。(10 分)
作业名 JOB1 JOB2 JOB3 JOB4
试填充下表。
进入后备队列时间 8:00 8:30 8:40 8:50
进度
0.1 0.08 0.08 0.08 0.08 0.1
还需 时间 0.08
0 0.08 0 0.1 0
27 某多道程序系统供用户使用的主存为 100K,磁带机 2 台,打印机 1 台。采用可变 分区主存管理,采用静态方式分配外围设备,忽略用户作业 I/O 时间。现有作业序列如 下:
作业号 1 2 3 4 5
2)Q>T CPU 利用率=T/(T+S) 3)T>Q>S CPU 利用率=Q/(Q+S) 4) Q=S CPU 利用率=50% 5) Q→0 CPU 利用率→0
19 单处理机多道分时系统中,有 3 道作业依次提交:(10 分)
作业
Job1 Job2 Job3
作业提交时间
8.0 8.2 8.4
运行时间 (单位:小时)
(7)9:45 作业 E 运行结束,作业 D 投入运行。作业 C 调入主存进就绪队列等 CPU。 (8)10:05 作业 D 运行结束,作业 C 投入运行。 (9)10:40 作业 C 运行结束。
0
作业 A
30
200 8:30
0
作业 B
120
200 9:10
0
作业 A
30
作业 B
150 200
8:50
作业 A
8:30

2011年4月操作系统试题和答案

2011年4月操作系统试题和答案

2011年4月高等教育自学考试《操作系统》(课程代码:02326)一、单项选择题(本大题共20小题,每小题1分,共20分)1、用户“实现按名存取”属于操作系统中的( )A、处理器管理B、存储管理C、文件管理D、设备管理2、开发UNIX第一个版本的单位是( )A.IBM公司B、AT&T公司C.Microsoft公司D.DEC公司3、能使计算机网络中的若干台计算机系统相互协作完成一个共同任务的操作系统是( )A、分布式操作系统B、网络操作系统C、多处理器操作系统D、嵌入式操作系统4、当硬件的中断装置发现有中断事件发生时,就会中断原来程序的执行,然后在CPU上执行的是操作系统的( )A、系统调用程序B、中断处理服务程序C、系统核心程序D、系统引导程序5、常用的控制寄存器不包括( )A、程序状态字寄存器B、中断字寄存器C、基址寄存器D、指令寄存器6、UNIX规定,如要在后台执行一shell命令,须在该命令末尾加上一特殊字符,它是( )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、在页式虚拟存储管理中,LFU页面调度算法是指先调出( )A、最先进入主存的页面B、近期最长时间没有被访问的页面C、近期被访问次数最少的页面D、以后不再访问的页面或距当前最长时间后再访问的页面13、目录文件的目录项包含的内容有( )A、文件管理信息、文件结构信息、文件存取位置信息B、文件管理信息、文件结构信息、文件存取控制信息C、文件结构信息、文件存取控制信息、文件存取位置信息D、文件管理信息、文件存取控制信息、文件存取位置信息14、UNⅨ对可分配的磁盘块的管理策略是( )A、不区分索引节点区与文件存储区,但管理方法不相同B、区分索引节点区与文件存储区,但管理方法相同C、不区分索引节点区与文件存储区,管理方法也相同D、区分索引节点区与文件存储区,管理方法也不相同15、IBM系统的通道命令的组成是( )A、命令码、数据主存地址、标志码、传送字节数B、数据主存地址、标志码、传送字节数、通道状态C、命令码、标志码、传送字节数、通道状态D、命令码、数据主存地址、传送字节数、通道状态16、斯普林系统输入井中的作业状态有( )A、收容状态、执行状态、完成状态、输出状态B、输入状态、执行状态、输出状态、完成状态C、输入状态、收容状态、输出状态、完成状态D、输入状态、收容状态、执行状态、完成状态17、进程的并发性是指( )A、一组进程可同时执行B、每个进程的执行结果不受其它进程的影响C、每个进程的执行都是可再现的D、通过一个进程创建出多个进程18、进程的临界区是指( )A、记录进程执行状况的临时区域B、进程执行时存放临时数据的区域C、进程中与共享变量有关的程序段D、可供各进程共享的子程序段19、采用按序分配资源策略可以防止死锁,这是因为它能破坏产生死锁的四个必要条件之一。

操作系统2011

操作系统2011

操作系统一、分析设计题1.桌子上有一个盘子,可以放一个水果,爸爸总是放苹果到盘子中,而妈妈总是放香蕉到盘子中,一个儿子专等吃盘子中的香蕉,而一个女儿专等吃盘子中的苹果,请用wait.、single原语来实现爸爸、妈妈、儿子和女儿之间的同步互斥关系。

Empty:记录允许向盘子中放水果的个数,初值为1Apple:是否允许从盘子中取苹果初值是0Banana :是否允许从盘子中取香蕉初值是0Mutex::向盘中取、放操作是一个互斥操作,也就说盘子对于取、放水果而言是一个临界资源,为此设置一个信号量,其初值为12.有一个阅览室,读者进去时必须先在一张登记表上进行登记,该表为每一座位列出一个表目,包括座位号、姓名,读者离开时撤销登记信息。

阅览室共有100个座位,试用wait 、single操作描述这些进程间的同步关系。

Seats:表示阅览室中空座位数,其值为100Readers:记录阅览室中的读者数,其初值为0Mutex:互斥信号(对读者而言,阅览室是一个临界资源,任何时刻最多只有一位读者填写登记表或撤销登记)其初值为1。

(1、2中任选1题)3.某操作系统采用从他分区存储管理技术。

操作系统在低地址站用了100KB的空间,用户区主存从100KB处开始占用512KB。

初始时,用户区全部为空闲,分配时截取空闲分区的低地址部分座位已分配区。

在执行以下申请,释放操作序列后,请求300KB,请求100KB,释放300KB,请求150KB,请求50KB,请求90KB,进行如下回答(1)采用首次适应算法时,主存中有哪些空闲分区?画出主存分布图,并指出空闲分区的首地址和大小(2)采用最佳适应算法时,主存中有哪些空闲分区?画出主存分布图,并指出空闲分区的首地址和大小(3)若随后又请求80KB,针对上述两种情况产生什么后果?说明为什么?二、进程管理部分1.进程与线程的典型应用分析2.进程通信中有阻塞和无阻塞现象3.静态优先级与动态优先级4.进程中的调度与切换5.实时系统中的一种互斥方法三、应用型题目1.现代操作系统调度策略研究2.关于操作系统发展的现状的研究3.操作系统的研究意义4.当前操作系统的创新之处和存在问题5.嵌入式操作系统应用研究6.嵌入式操作系统面向领域的扩展技术研究7.基于.NET平台的分布式应用系统的研究及应用8.面向对象技术在实时系统中研究与应用9.文件管理分析研究(在操作系统中如果你做文件管理,你认为文件该如何管理?)。

2011计算机操作系统试卷B参考答案

2011计算机操作系统试卷B参考答案

《操作系统》11级试卷B参考答案及评分标准二、填空题1.资源程序2.互斥同步3.功能号恢复现场4.一代码5.设备驱动设备无关6.空闲让进让权等待7. 非抢占短进程优先8.物理逻辑(可对换)9.160 300 10. 0BD 28BD三、看图分析题1.└4800000/512┘=9375;4800000mod512=0 (1分)因为9375>521,所以应按二次间接寻址9375-521=8854 (1分)└8854/512┘=17;8854mod512=150 (1分)在二次间接块的17表目、一次间接块的150表目处寻找到数据块9375,在块内位移量为0。

(2分)2.①运行—就绪: 时间片到时,或有更高优先级的进程出现(2分)②就绪—运行: 被调度程序选中(1分)③运行—等待: 等待某事件发生(1分)④等待—就绪: 等待的事件发生了(1分)四、计算分析题带权平均周转时间:T2s=(60/60+60/20+70/30+70/10)/4=3.3(1分)抢占式短作业优先(3分)带权平均周转时间:T2s=(120/60+20/20+40/30+10/10)/4=1.33(1分)2.P表示引用串;M表示主存页面号:F表示是否缺页,×缺页,√在内存(1分)FIFO先进先去(2分)LRU最长最久未使用(2分))OPT最优置换(2分3.(10分)基于银行家算法的资源分配(i)在T0时刻存在安全序列< P1, P3, P0, P2, P4>,所以系统是安全的。

(3分)(ii)P3在T1时刻发出请求向量Request3(0, 1, 0)①系统按银行家算法进行检查:(1分)(A) Request3 (0,1,0)<=Need3 (0,1,1),资源申请合理;(B) Request3(0,1,0)<=A vailable(2,2,0),可利用资源总量可以满足资源申请;②系统试探性地满足P0请求,并对系统状态进行修改:(1分)A vailable(2,1,0),Allocation3 (2,2,1),Need3 (0,0,1);③系统调用安全性算法进行资源分配检查:(3分)由此可知,存在安全序列< P1, P3, P0, P2, P4>,所以系统安全,可以执行分配。

2011操作系统

2011操作系统

1.(1)两个并发进程并发执行,其中A、B、C、D、E是原语,试给出可能的并发执行路径。

Process P( ) Process Q( )
{
A; D;
B; E;
C; }
(2)设有n个进程共享一个互斥段,如果:(a)每次只允许一个进程进入互斥段;(b)每次最多允许m个进程(m≤n)同时进入互斥段。

试问:所采用的信号量的初值是否相同?信号量值的变化范围如何?
3、进程A向缓冲区buffer发送消息,当发出一个消息后要等待B 和C进程收到该消息后才能发送新消息,试用信号量和P、V操作实现。

2.(15分)设系统中有三类资源A、B和C,又设系统中有5个进程P1,P2,P3,P4和P5.在T0时刻系统状态如下:
最大需求量已分配资源量剩余资源量
A B C A B C A B C
P1 8 6 4 1 2 1 2 1 1
P2 4 3 3 3 1 1
P3 10 1 3 4 1 3
P4 3 3 3 3 2 2
P5 5 4 6 1 1 3
(1) 系统是否处于安全状态?如是,则给出进程安全序列.
(2) 如果进程P5申请1个资源类A、1个资源类B和1个资源类C,能否实施分配?为什么?
4、有5个作业依次进入系统,其提交时间、运行时间、作业长度分别如下表。

设主存容量为100kB,采用可变分区存储管理,且作业在主存储器中不能移动。

作业调度采用短作业优先,进程调度采用基于优先级的抢占式调度,不计作业对换及其他开销,试求各作业的开始执行时间、完成时间和周转时间。

2011联考操作系统试卷A参考答案

2011联考操作系统试卷A参考答案

2011六校联考操作系统试卷A参考答案第一部分基础部分三、应用题(共15分)1. (7分)12综上可知,短作业优先调度算法性能比先来先服务调度算法好。

(1’)2. (8分)(1)T0时刻系统处于是安全状态,因为存在安全序列:P4,P5,P1,P2,P3。

(2’)(备注:安全序列不唯一,只要找到其中一个即可)(2)因为系统可用资源向量A(2, 3, 3) < (0, 3, 4),所以不能实施分配。

(3’)(3)因为(2, 0, 1) <= P4的需求资源向量N4(2, 0, 1) 且(2, 0, 1) < A(2, 3, 3),所以请求合法;假设可以满足,则N4=(0, 0, 0), A= (0, 3, 2),在此基础上存在安全序列:P4,P5,P1,P2,P3,所以假设分配后系统处于安排状态,故可以实施分配。

(3’)第二部分拔高部分五、应用题(共15分)1.(7分)(1)需要500/32=16⎡⎤⎢⎥字的位示图(3’);(2)第i字的第j位对应的块号为:32×i + j(其中,i = 0,1,…;j = 0,1,2,…)(4’)2. (8分)(1)缴费进程需要等到注册进程开来缴费单后,才能开始执行;而注册进程需要收到缴费进程开的发票后,才能给企业法人发执照。

(2’)(2)定义两个私有信号灯pay和invoice。

pay用来表示是否开据了缴费单,初值为0,表示没有开据缴费单;invoice用来表示是否出据了发票,初值为0,表示没有出据发票。

(2’)(3)程序段如下:(4’)main( ){int pay,invoice;pay=0;invoice=0;cobeginenroll( );payfor( );coend}enroll(){注册员给企业法人开据缴费单;v(pay);p(invoice);注册员处给企业法人执照;}payfor(){p(pay);企业法人到财务室缴费;v(invoice);}。

11级操作系统试卷(A)

11级操作系统试卷(A)

2013~2014 学年度第 二 学期《操作系统》试卷(A 卷)适用年级专业:2011级计算机科学与技术、2012级网络工程 考 试 形 式:()开卷、(√ )闭卷二级学院: 行政班级: 学 号: 教 学 班: 任课教师: 姓 名: 注:学生在答题前,请将以上内容完整、准确填写,填写不清者,成绩不计。

一、单项选择题(15 小题,每小题2分,共30分 请在备选答案中选出一个最佳答案,并将其字母填入下表,填在其它地方不计分!!!)1、关于操作系统的叙述( )是不正确的。

A. "管理资源的程序"B. "管理用户程序执行的程序"C. "能使系统资源提高效率的程序"D. "能方便用户编程的程序" 2、现代操作系统的两个基本特征是( )和资源共享。

A. 多道程序设计 B. 中断处理C. 程序的并发执行D. 实现分时与实时处理 3、在多道程序设计的计算机系统中,CPU ( )。

A. 只能被一个程序占用B. 可以被多个程序同时占用C. 可以被多个程序交替占用D. 以上都不对 4、进程和程序的一个本质区别是( )。

A. 前者为动态的,后者为静态的B. 前者存储在内存,后者存储在外存C. 前者在一个文件中,后者在多个文件中D. 前者分时使用CPU,后者独占CPU 5、进程所请求的一次打印输出结束后,将使进程状态从( ) 。

A. 运行态变为就绪态 B. 运行态变为等待态……………………………………………线………………………………………订………………………………………装…………………………………………………C. 就绪态变为运行态D. 等待态变为就绪态6、我们把在一段时间内,只允许一个进程访问的资源,称为临界资源,因此,我们可以得出下列论述,正确的论述为( )。

A. 对临界资源是不能实现资源共享的B. 只要能使程序并发执行,这些并发执行的程序便可对临界资源实现共享C. 为临界资源配上相应的设备控制块后,便能被共享D. 对临界资源,应采取互斥访问方式,来实现共享7、一种既有利于短小作业又兼顾到长作业的作业调度算法是( )。

2011联考操作系统试卷B参考答案

2011联考操作系统试卷B参考答案

1 / 32011六校联考操作系统试卷B 参考答案第一部分 基础部分三、应用题(共15分)1. (6分)(1)20000 / 4096 = 4 ......3616,十进制逻辑地址20000对应的逻辑页号和偏移量分别为4和3616(2’);(2)32768 / 4096 = 8 ......0,十进制逻辑地址32768对应的逻辑页号和偏移量分别为8和0(2’);(3)60000 / 4096 = 14 ......2656,十进制逻辑地址60000对应的逻辑页号和偏移量分别为14和2656(2’)。

2. (9分)(1)(3’)(2)(3’物理块号 逻辑块号 012370 71 72 73 … …文件目录 逻辑块号0 1232 / 3(3)(3’第二部分 拔高部分五、应用题(共15分)1.(9分)(1)先来先服务(FCFS)磁盘调度算法:磁头移动的顺序为:86,147,91,177,94,150,102,175,130(2’)移动总量为:(143-86) + (147-86) + (157-91) + (177-91) + (177-94) + (150-94) + (150-102) + (175-102) + (175-130) = 57 + 61 + 66 + 86 + 83 + 56 + 48 + 73 + 45 = 576(1’) (2)最短寻道时间优先(SSTF)磁盘调度算法:磁头移动的顺序为:147,150,130,102,94,91,86,175,177(2’)移动总量为:(147-143) + (150-147) + (150-130) + (130-102) + (102-94) + (94-91) + (91-86) + (175-86) + (177-175) = 4 + 3 + 20 + 28 + 8 + 3 + 5 + 89 + 2 = 162(1’) (3)扫描法(SCAN)磁盘调度算法:磁头移动的顺序为:147,150,175,177,130,102,94,91,86(2’) 移动总量为:(147-143) + (150-147) + (175-150) + (177-175) + (177-130) + (130-102) + (102-94) + (94-91) + (91-86) = 4 + 3 + 25 + 2 + 47 + 28 + 8 + 3 + 5 = 125(1’)2. (6分)(1)因为P1和P2共享公共变量x ,y ,z ,故需要设置两个公共信号灯mutexx ,mutexy ,mutexz 用来实现P1和P2对公共变量x ,y ,z 互斥访问。

2010-2011-1A操作系统试卷及答案

2010-2011-1A操作系统试卷及答案

2010-2011学年第1学期操作系统考试试题(A)卷一、单项选择题(每小题2分,共20分)1.当CPU处于管态时,它可以执行的指令应该是A.仅限于特权指令B.仅限于非特权指令C.仅限于访管指令D.计算机系统的全部指令2.在下列性质中,不是分时系统的特征。

A.多路性B.交互性C.独占性D.成批性3.操作系统提供给程序员的接口是________。

A.进程B.系统调用C.库函数D.B和C4.进程从运行状态到阻塞状态可能是由于________。

A.进程调度程序的调度B.现运行进程的时间片用完C.现运行进程执行了P操作D.现运行进程执行了V操作5.若信号S的初值为2,当前值为-1,则表示有_________等待进程。

A.0个B.1个C.2个D.3个6.在进程一资源图中,资源Rj分配给进程Pi应表示为________。

A.(Pi,Rj)B.(Rj,Pi)C.|(Rj,Pi)|D.|(Pi,Rj)|7.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是_______。

A.无上邻空闲区,也无下邻空闲区B.有上邻空闲区,但无下邻空闲区C.有下邻空闲区,但无上邻空闲区D.有上邻空闲区,也有下邻空闲区8、在UNIX系统中使用的文件目录结构是( )。

A.单级 B.二级 C.树型 D.三级9.在下列文件中,不便于文件增、删操作的是________。

A.索引文件B.连续文件C.Hash文件D.串联文件10.下列算法中用于磁盘移臂调度的是。

A时间片轮转法 B.LRU算法C.最短寻找时间优先算法D.优先级高者优先算法二、判断题(每小题2分,共10分)1.多道程序设计可以缩短系统中每个作业的执行时间。

2.作业调度是处理机的高级调度,进程调度是处理机的低级调度。

3.时间片轮转法一般用于分时系统中。

4.在单处理机系统中任何时候只可能有一个进程处于执行状态。

5.按最差适应算法(WF)分配的分区,一定与作业要求的容量大小最接近。

操作系统2011_第二章应用题参考答案

操作系统2011_第二章应用题参考答案

执行时间 60 分 50 分 30 分 10 分
优先级 1 2 4 3
作业名
进入后备 执行 队列时间 时间
开始执 行时间
结束执 行时间
周转 时间
带权周 转时间
平均周转时间 T= 带权平均周转时间 W=
解:
作业名
JOB1 JOB3 JOB4 JOB2
进入后备 队列时间
8:00 8:40 8:50 8:30
8.6-8.8 作业完 成时间
提交 并调用 Job1
道数 1
Job2 2
CPU 等待
50%
20%
占用 CPU 50%
40%
运行 时间 0.2
0.2
Job3 2
20% 40% 0.2
1
50% 50% 0.2
Job1 为 8.4 ,job2 为 8.6 ,job3 为 8.8
作业
Job1 Job1 Job2 Job2 Job3 Job3
答:分时系统中,作业进程轮流占用 CPU,按时间片轮转。已知单道运行时,I/O 等待时间 各占总运行时间的 50%;若两个作业进程分时运行,则 CPU 有 20%的时间空闲、两道运行 CPU 空闲缩短了、即 CPU 为各进程平均运行 40%。结果见下表。
作业 提交时间
8.0-8.2 8.2-8.4
8.4-8.6
2)Q>T CPU 利用率=T/(T+S) 3)T>Q>S CPU 利用率=Q/(Q+S) 4) Q=S CPU 利用率=50% 5) Q→0 CPU 利用率→0
19 单处理机多道分时系统中,有 3 道作业依次提交:(10 分)
作业
Job1 Job2 Job3

大工《操作系统》大作业参考题目及要求【内容仅供参考】784

大工《操作系统》大作业参考题目及要求【内容仅供参考】784

题目:1.谈谈你对本课程学习过程中的心得体会与建议?在本科的课程的学习中我对计算器的操作系统有了很深层次的认识.对于一个系统的组成与他的组件都有了全方面的新认识.一个系统的组成以及系统的完美运行.需要各个组件的通力协作才能保证一个系统的完整运行2.《操作系统》课程设计,从以下5个题目中任选其一作答。

《操作系统》课程设计注意:从以下5个题目中任选其一作答。

总则:不限制编程语言,可以选用C/C++等(具体工具平台及语言可以自己根据自己的习惯选用,不必完全按照上述技术要求)作业提交:大作业上交时文件名写法为:[以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。

如下图所示。

注意事项:独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,(2)算法思路:简单介绍算法的基本思想,100字左右即可。

(3)算法数据结构:列出主要用的数据结构,比如最大需求矩阵Max[][] ,已分配矩阵Allocation[][]等,只需要列出数据结构名称即可。

(4)主要函数代码:由于银行家算法比较难,列出部分核心代码即可。

每一个函数需要简单说明此函数的功能。

比如“coutprint()函数,该函数功能是打印输出”。

题目五银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为系统设计的一种避免死锁产生的算法。

它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。

银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。

在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。

银行家算法是一种最有代表性的避免死锁的算法。

大工《操作系统》大作业参考题目及要求【内容仅供参考】438

大工《操作系统》大作业参考题目及要求【内容仅供参考】438

题目:题目三:进程同步与互斥生产者-消费者问题1.谈谈你对本课程学习过程中的心得体会与建议?转眼间,学习了一个学期的计算机操作系统课程即将结束。

在这个学期中,通过老师的悉心教导,让我深切地体会到了计算机操作系统的一些原理和具体操作过程。

在学习操作系统之前,我只是很肤浅地认为操作系统只是单纯地讲一些关于计算机方面的操作应用,并不了解其中的具体操作过程和实用性。

通过这一学期的学习,我才知道操作系统(Operating System,简称OS)是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。

经过一个学期的学习,我也知道了计算机操作系统是铺设在计算机硬件上的多层系统软件,不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它实现了对计算机硬件操作的多层次的抽象。

总而言之,操作系统的一些原理在生活中都可以找到相应的例子。

结合生活中的例子,可以化抽象为具体,我们会更加清楚地了解到其原理与操作过程。

我觉得通过我们的不断学习,结合生活中的实际问题,我们就会把操作系统学得更好。

2.《操作系统》课程设计,从以下5个题目中任选其一作答。

《操作系统》课程设计注意:从以下5个题目中任选其一作答。

总则:不限制编程语言,可以选用C/C++等(具体工具平台及语言可以自己根据自己的习惯选用,不必完全按照上述技术要求)作业提交:大作业上交时文件名写法为:[以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。

如下图所示。

注意事项:独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,要求:(1)撰写一份word文档,里面包括(设计思路、流程(原理)图、基本内容、源代码)章节。

(2)设计思路:简单介绍生产者进程的功能以及消费者进程的功能。

全国2011年7月高等教育自学考试操作系统试题及答案

全国2011年7月高等教育自学考试操作系统试题及答案

全国2011年7月高等教育自学考试操作系统试题课程代码02326 一、单项选择题本大题共20小题每小题1分共20分在每小题列出的四个备选项中只有一个选项是符合题目要求的请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1、实现“分配主存空间和重定位”属于操作系统中的A. 处理器管理B. 存储管理 C. 文件管理 D. 设备管理2、开发UNIX第一个版本的计算机是A. PDP-5 B. PDP-6 C. PDP-7 D. PDP-8 3、仅使计算机网络中的各计算机系统间实现传输数据、通信和资源共享的操作系统是 A. 分布式操作系统B. 网络操作系统 C. 多处理器操作系统 D. 嵌入式操作系统4、操作系统的功能不包括 A. 将源程序翻译成目标程序B. 控制程序的执行 C. 对硬件资源进行管理 D. 对软件资源进行管理5、常用的控制寄存器有 A. 通用寄存器、指令寄存器、基址寄存器、限长寄存器 B. 通用寄存器、中断字寄存器、基址寄存器、限长寄存器 C. 程序状态字寄存器、中断字寄存器、基址寄存器、限长寄存器 D. 程序状态字寄存器、指令寄存器、基址寄存器、限长寄存器6、UNIX 的访管指令是 A. fork B. exec C. link D. trap 7、下面不属于进程的特性是 A. 并发性 B. 动态性C. 同步性 D. 异步性8、“进程状态”属于进程控制块的A. 标识信息B. 说明信息C. 现场信息D. 管理信息9、一般情况下中断优先级的高低顺序正确的是 A. 自愿中断、程序性中断、外部中断、硬件故障中断、输入/输出中断 B. 程序性中断、外部中断、硬件故障中断、自愿中断、输入输出中断 C. 硬件故障中断、自愿中断、程序性中断、外部中断、输入输出中断 D. 外部中断、硬件故障中断、自愿中断、程序性中断、输入输出中断10、在批处理操作系统控制下实现多道程序并行工作从系统的角度主要希望进入“输入井”的作业能够 A. 响应时间短B. 平均周转时间短C. 服务费用低D. 长作业优先得到服务11、在可变分区存储管理中当回收主存空间时应检查是否有与归还区相邻的空闲区进行合并。

2011操作系统部分答案

2011操作系统部分答案

1.操作系统的主要功能有:存储器管理,文件管理,处理及管理,设备管理。

2.进程的三种基本状态:就绪,执行,阻塞。

3.程序有程序段,缺页段,数据段,pcb构成4.进程与程序的区别:程序是一组存放在某种介质中的有序指令的集合;进程是对某一程序的执行。

区别是:动静态区别;结构特征;并发性;独立性;进程在不同周期里形成不铜的程序,不一一对应5.临界资源:临界区是:每个进程访问临界资源的那段代码6.调度的算法:7.优先权=等待时间+要求服务的时间/要求服务的时间8.时间片轮转法用于分时等待中9.产生死锁的原因:a)死锁的必要条件:10.重定位:逻辑地址映射到物理地址11.输入输出设备按设备的共享性可以分为:独占,共享,虚拟12.Spooling是在主机直接控制下实现脱机输入,输出功能是的外围操作与cpu对数据的处理同时进行的操作,可以缓和cpu的高速性与io设备的低速性间的矛盾,提高IO速度13.磁盘访问时间可分为;寻道时间,旋转延迟时间,传输时间14.目录管理要求:实现按名存取;提高对目录的检索速度;文件共享;允许文件重命名15.外村分配方式为:顺序式文件结构;链接式文件结构;索引是文件结构16.操作系统文件接口:用户接口,程序接口17.中断CPU对系统发生某一事件时,暂停正在运行的程序,在保留现场后自动转成执行该事件的中断处理程序,执行完毕后,再返回原程序的断点处执行。

陷入:由于执行现行指令而引起的大题答案:1.什么是多道程序?优点?在主存同时放多个程序,使他们同时处于运行状态的一种程序设计技术叫做多道程序设计。

多道程序设计将用户程序在cpu上执行和在io设备上的信息传输重叠起来,一方面提高了cpu的使用率,另一方面,增加了系统的吞吐量,还可以提高内存和io设备的利用率。

2.进程和程序的区别,概念?进程:程序对某一数据集合在cpu上的过程程序:完成某一特定功能的指令序列。

区别:进程是程序的一次执行,而程序是指令的集合,进程是动态的而程序是动态的,进程与程序之间的对应关系可以是一对多或多对一,进程=程序+数据+进程控制块(pcb),进程具有并发性,他能与其他进程并发执行,而一般程序,不具有这种特性。

全国2011年7月自学考试操作系统试题和答案

全国2011年7月自学考试操作系统试题和答案

全国2011年7月自学考试操作系统试题和答案课程代码:02326一、单项选择题(本大题共20小题,每小题1分,共20分)1、实现“分配主存空间和重定位”属于操作系统中的( )A.处理器管理B.存储管理C.文件管理D.设备管理2、开发UNIX第一个版本的计算机是( )A.PDP-5B.PDP-6C.PDP-7D.PDP-83、仅使计算机网络中的各计算机系统间实现传输数据、通信和资源共享的操作系统是( )A.分布式操作系统B.网络操作系统C.多处理器操作系统D.嵌入式操作系统4、操作系统的功能不包括...( )A.将源程序翻译成目标程序B.控制程序的执行C.对硬件资源进行管理D.对软件资源进行管理5、常用的控制寄存器有( )A.通用寄存器、指令寄存器、基址寄存器、限长寄存器B.通用寄存器、中断字寄存器、基址寄存器、限长寄存器C.程序状态字寄存器、中断字寄存器、基址寄存器、限长寄存器D.程序状态字寄存器、指令寄存器、基址寄存器、限长寄存器6、UNIX的访管指令是( )A.forkB.execC.linkD.trap7、下面不属于...进程的特性是( )A.并发性B.动态性C.同步性D.异步性8、“进程状态”属于进程控制块的( )A.标识信息B.说明信息C.现场信息D.管理信息9、一般情况下,中断优先级的高低顺序正确的是( )A.自愿中断、程序性中断、外部中断、硬件故障中断、输入/输出中断B.程序性中断、外部中断、硬件故障中断、自愿中断、输入/输出中断C.硬件故障中断、自愿中断、程序性中断、外部中断、输入/输出中断10、在批处理操作系统控制下实现多道程序并行工作,从系统的角度,主要希望进入“输入井”的作业能够( )A.响应时间短B.平均周转时间短C.服务费用低D.长作业优先得到服务11、在可变分区存储管理中,当回收主存空间时,应检查是否有与归还区相邻的空闲区进行合并。

假定作业归还的分区起始地址为S,长度为L。

2011年计算机系操作系统试卷B答案

2011年计算机系操作系统试卷B答案

2011级计算机系操作系统试卷B答案第一大题第二大题1.就绪态2. 程序段数据段PCB(进程控制块)3. 占有等待循环等待不可剥夺互斥4. 1 976 页表5. 原子6. 首次适配法邻近适配法7. 4第三大题简答题1.同步:并发进程之间存在的相互制约和相互依赖的关系。

互斥:若干进程共享一资源时,任何时刻只允许一个进程使用。

2.3.(1)分页是一维的,分段是二维的。

(2)分段每次交换的是一段有意义的信息,而不是像分页那样每次只交换固定大小的页。

(3)分段管理中,段长可以根据需要动态增长。

(4)段式管理便于对具有完整逻辑功能的信息段进行共享。

(5)段式管理便于进行动态链接,而页式管理进行动态链接的过程非常复杂4.索引文件是在变长记录文件中建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应表项,用于记录该记录的长度L及指向该记录的指针。

由于索引表是按记录健排序的,因此索引表本身是一个定长记录的顺序文件,从而也就可以方便的实现直接存取。

当文件太大,其索引块太多时,一级索引的方法是低效的。

此时,应为这些索引块再建立一级索引,称为第一级索引,即系统再分配一个索引块,作为第一级索引的索引块,将第一块、第二块等索引块的盘块号,填入到此索引表中,这样便形成了两级索引分配方式。

如果文件非常大时,还可以用三级,四级索引分配方式。

5、FCFS 非抢占时间片轮转抢占最短进程优先(SPN) 非抢占最短剩余时间优先(SRT) 抢占最高响应比优先(HRRN) 非抢占反馈抢占第四大题综合题1.(1)可能会发生死锁(1分)例如:进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等待(2分),这是循环等待。

(或进程在等待新源时均不释放已占资源)(2)可有几种答案:A.采用静态分配(2分)由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。

(2分)或B.采用按序分配(2分)不会出现循环等待资源现象。

2011—12操作系统复习题答案(基本全部答案)

2011—12操作系统复习题答案(基本全部答案)

2011—12操作系统复习题答案(基本全部答案)(⼀)进程同步●进程同步1进程P1和进程P2并发执⾏时满⾜⼀定的时序关系,P1的代码段S1执⾏完后,才能执⾏P2的代码段S2.为描述这种同步关系,:试设计相应的信号量,:给出信号量的初始值,●:给出进程P1和P2的结构解答: 信号量变量申明为Typedef struct {int value; //信号量中的值,表⽰资源的数量struct PCB *L; //等待该信号量的队列}semaphore;设信号量semaphore synch;初始值为:synch.value=0●进程P1和P2的结构为P1: { P2: {S1 wait(synch);signal(synch); S2} }●进程同步2问题描述:(理发店问题)⼀个理发店有⼀间配有n个椅⼦的等待室和⼀个有理发椅的理发室。

如果没有顾客,理发师就睡觉;如果顾客来了⼆所有的椅⼦都有⼈,顾客就离去;如果理发师在忙⽽有空的椅⼦,顾客就会坐在其中⼀个椅⼦;如果理发师在睡觉,顾客会摇醒他。

①给出同步关系②设计描述同步关系的信号量;③给出满⾜同步关系的进程结构(请完成满⾜同步关系的进程结构)。

解答:顾客customer应满⾜的同步关系为:a:顾客来时要等空的椅⼦,否则不进理发室b:座椅上的顾客要等理发椅空才有可能与别的顾客竞争理发椅,如果顾客坐上理发椅,就要腾空其座椅给新来顾客,同时叫理发师给其理发。

c:⼀旦顾客理发完,就要让别的等待顾客有机会理发。

理发师应满⾜的同步关系为:⼀旦顾客唤醒,就给顾客理发,之后进⼊睡觉。

信号量定义如下:Typedef struct {int value; //信号量中的值,表⽰资源的数量互斥信号量定义如下:Typedef struct {bool flag;struct PCB *L;}binary_semaphore;理发店问题的解决需要信号量和互斥信号量为:semaphore chair; binary_semaphore barber_chair, hair_cut;它们的初始值为:chair.value=n; barber_chair.flag=1; hair_cut.flag=0;●顾客和理发师进程分别为:customer { barber {wait(chair); do {waiting in the chair;wait(hair_cut);wait(barber_chair); cutting hair;signal(hair_cut); signal(barber_chair);sitting in barber chair for haircut; }while(1)signal(chair); }}●进程同步2设公共汽车上,司机和售票员的活动分别为:司机的活动为启动车辆,正常⾏车,到站停车;售票员的活动为关车门,售票,开车门。

2011操作系统经典习题及解答100题

2011操作系统经典习题及解答100题

一、操作系统概述习题及解答:1.硬件将处理机划分为两种状态,即管态和目态,这样做给操作系统设计带来什么好处?答:便于设计安全可靠的操作系统。

管态和目态是计算机硬件为保护操作系统免受用户程序的干扰和破坏而引入的两种状态。

通常操作系统在管态下运行,可以执行所有机器指令;而用户程序在目态下运行,只能执行非特权指令。

如果用户程序企图在目态下执行特权指令,将会引起保护性中断,由操作系统终止该程序的执行,从而保护了操作系统。

2.何谓特权指令? 举例说明之。

如果允许用户进程执行特权指令会带来什么后果?答:在现代计算机中,一般都提供一些专门供操作系统使用的特殊指令,这些指令只能在管态执行,称为特权指令。

这些指令包括:停机指令、置PSW指令、中断操作指令(开中断、关中断、屏蔽中断)、输入输出指令等。

用户程序不能执行这些特权指令。

如果允许用户程序执行特权指令,有可能干扰操作系统的正常运行,甚至有可能使整个系统崩溃。

3.中断向量在机器中的存储位置是由硬件确定的,还是由软件确定的?答:中断向量在机器中的存放位置是由硬件确定的。

例如,在INTEL 80x86 CPU 中,内存空间0x00000—0x003ff为中断向量空间。

4.中断向量的内容是由操作系统程序确定的,还是由用户程序确定的?答:由操作系统程序确定的。

向量的内容包括中断处理程序的入口地址和程序状态字(中断处理程序运行环境),中断处理程序是由操作系统装入内存的,操作系统将根据装入的实际地址和该中断处理程序的运行环境来填写中断向量。

5.中断向量内的处理机状态位应当标明是管态还是目态? 为什么?答:应当标明是管态。

这样才能保证中断发生后进入操作系统规定的中断处理程序。

6.中断与程序并发之间的关系是什么?答:中断是程序并发的前提条件。

如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处机进行重新分配,一个程序将一直运行到结束而不会被打断。

7.说明“栈”和“堆”的差别.答:栈是一块按后进先出规则访问的存储区域,用来实现中断嵌套和子程序调用的参数和返回断点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

序号2010-2011学年度第一学期大作业课程名称:《操作系统》作业题目:动态内存分区分配方式模拟姓名:学号:专业:计算机科学与技术教学中心:联系电话:评审日期__________成绩_________评审教师(签名)__________华南理工大学网络教育学院目录1.实验的目的 (3)2.开发环境 (3)3.设计思想及流程图 (3)4.数据定义 (4)5.源程序 (5)6.运行结果(以及截屏) (11)7.设计心得体会 (17)8.参考文献 (17)1.实验的目的假设初始态下,可用内存空间为640K,并有下列请求序列,分别用首次适应算法和最佳适应算法为作业分配和回收内存块,并显示出每次分配和回收后的空闲分区链的情况来以及内存占用情况。

2.开发环境操作系统:windows xp 开发工具:VC++ 6.03.设计思想及流程图首次适应算法:将空闲区按其在存储空间中的起始地址递增的顺序排列。

为作业分配存储空间时,从空闲区链的始端开始查找,选择第一个满足要求的空闲区,而不管它究竟有多大。

最佳适应法:为一作业选择分区时总是寻找其大小最接近于作业所要求的存储空间。

(1)在本程序处理进程状态过程中,我选用了c++语言来实现该程序,为了解决如何存储空间的问题,首先定义一个空闲区结构(struct FreeArea)和一个双链表结构(struct DuLNode),然后初始化最大的内存空间大小(MAX_LENGTH),定义了前趋指针(struct DuLNode *prior)和后继指针(struct DuLNode *next;)。

(2)处理首次适应法,采用链表进行查找,为作业分配存储空间时,从空闲区链的始端开始查找,选择第一个满足要求的空闲区,只要大于或等于要申请的内存空间大小就分配成功,修改链表,修改空闲区大小。

(3)处理最佳适应法,采用链表进行查找对比,满足要求的空闲区,并且与需要申请的内存空间大小相差最小的那个空闲区进行分配。

利用一个变量记录最小剩余空间并且实现分配。

(4)当根据作业号找到相应的分区,此时释放空间,我在释放空间的时候,采用按照进程名进行释放MethodType FreeMemory(int ID);函数中的参数int ID作为作业号(分区号),在使用空间中找到该进程所占用的空间,然后进行释放,释放后在空闲区中添加该空间,并合并与之相联的空闲区。

分配内存流程图大体如下:释放内存流程图大体如下:4.数据定义定义了方法的一个标识符:typedef int MethodType;初始态最大内存空间为640KB :#define MAX_LENGTH 640 空闲状态:#define FREESTA TUS 0已用状态:#define USEDSTA TUS 1完成表示:#define ENDFLAG 1出错标识:#define ERROR 0定义一个空闲区说明表结构typedef struct FreeArea{int ID; //分区号long size; //分区大小long address; //分区地址int state; //状态}ElemType;定义一个双链表结构typedef struct DuLNode {ElemType data;struct DuLNode *prior; //前趋指针struct DuLNode *next; //后继指针}DuLNode,*DuLinkList;5.源程序#include<iostream>#include<stdlib.h>using namespace std;typedef int MethodType;#define MAX_LENGTH 640 //初始态最大内存空间为640KB #define FREESTATUS 0 //空闲状态#define USEDSTATUS 1 //已用状态#define ENDFLAG 1 //完成#define ERROR 0 //出错int n=0;typedef struct FreeArea//定义一个空闲区说明表结构{int ID; //分区号long size; //分区大小long address; //分区地址int state; //状态}ElemType;//---------- 线性表的双向链表存储结构 ------------ typedef struct DuLNode //double linked list{ElemType data;struct DuLNode *prior; //前趋指针struct DuLNode *next; //后继指针}DuLNode,*DuLinkList;DuLinkList block_first; //头结点DuLinkList block_last; //尾结点MethodType AllocMemory(int);//内存分配MethodType FreeMemory(int); //内存回收MethodType First_Fit(int,int);//首次适应算法MethodType Best_Fit(int,int); //最佳适应算法void ShowDistribution();//查看分配情况MethodType InitBlock();//创建空间表MethodType InitBlock()//创建带头结点的内存空间链表{block_first=(DuLinkList)malloc(sizeof(DuLNode));block_last=(DuLinkList)malloc(sizeof(DuLNode));block_first->prior=NULL;block_first->next=block_last;block_last->prior=block_first;block_last->next=NULL;block_last->data.address=0;block_last->data.size=MAX_LENGTH;block_last->data.ID=0;block_last->data.state=FREESTATUS;return ENDFLAG;}//----------------------- 分配内存 ------------------------- MethodType AllocMemory(int ch){int ID,request;cout<<"请输入作业号:";cin>>ID;cout<<"请输入需要申请分配的内存大小(单位:KB):";cin>>request;if(request<0 ||request==0){cout<<"申请分配大小不合适,请重试!"<<endl;return ERROR;}if(ch==2) //选择最佳适应算法{if(Best_Fit(ID,request)==ENDFLAG) cout<<"申请分配成功!"<<endl; else cout<<"内存不足,申请分配失败!"<<endl;return ENDFLAG;}else //默认首次适应算法{if(First_Fit(ID,request)==ENDFLAG) cout<<"申请分配成功!"<<endl; else cout<<"内存不足,申请分配失败!"<<endl;return ENDFLAG;}}//------------------ 首次适应算法 ----------------------- MethodType First_Fit(int ID,int request)//参数为作业号及申请大小{//向系统申请分配新的内存空间且初始化DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode));temp->data.ID=ID;temp->data.size=request;temp->data.state=USEDSTATUS;DuLNode *p=block_first->next;while(p){if(p->data.state==FREESTATUS && p->data.size==request){//有大小恰好合适的空闲块p->data.state=USEDSTATUS;p->data.ID=ID;return ENDFLAG;break;}if(p->data.state==FREESTATUS && p->data.size>request){//有空闲块能满足需求且有剩余"temp->prior=p->prior;temp->next=p;temp->data.address=p->data.address;p->prior->next=temp;p->prior=temp;p->data.address=temp->data.address+temp->data.size;p->data.size-=request;return ENDFLAG;break;}p=p->next;}return ERROR;}//-------------------- 最佳适应算法 ------------------------ MethodType Best_Fit(int ID,int request){int ch; //记录最小剩余空间DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode));temp->data.ID=ID;temp->data.size=request;temp->data.state=USEDSTATUS;DuLNode *p=block_first->next;DuLNode *q=NULL; //记录最佳插入位置while(p) //初始化最小空间和最佳位置{if(p->data.state==FREESTATUS &&(p->data.size>request || p->data.size==request) ){q=p;ch=p->data.size-request;break;}p=p->next;}while(p){if(p->data.state==FREESTATUS && p->data.size==request){//空闲块大小恰好合适p->data.ID=ID;p->data.state=USEDSTATUS;return ENDFLAG;break;}if(p->data.state==FREESTATUS && p->data.size>request){//空闲块大于分配需求if(p->data.size-request<ch)//剩余空间比初值还小{ch=p->data.size-request;//更新剩余最小值q=p;//更新最佳位置指向}}p=p->next;}if(q==NULL) return ERROR;//没有找到空闲块else{//找到了最佳位置并实现分配temp->prior=q->prior;temp->next=q;temp->data.address=q->data.address;q->prior->next=temp;q->prior=temp;q->data.address+=request;q->data.size=ch;return ENDFLAG;}}//----------------------- 内存回收 -------------------- MethodType FreeMemory(int ID){DuLNode *p=block_first;while(p){if(p->data.ID==ID){p->data.state=FREESTATUS;p->data.ID=FREESTATUS;if(p->prior->data.state==FREESTATUS)//与前面的空闲块相连{p->prior->data.size+=p->data.size;p->prior->next=p->next;p->next->prior=p->prior;}if(p->next->data.state==FREESTATUS)//与后面的空闲块相连{p->data.size+=p->next->data.size;p->next->next->prior=p;p->next=p->next->next;}break;}p=p->next;}return ENDFLAG;}//--------------- 显示内存分配情况 ------------------void ShowDistribution(){cout<<"**************------------**************\n";cout<<"**** 内存分配情况 ****\n";cout<<"***********-----------------************\n";DuLNode *p=block_first->next;while(p){cout<<"作业号:";if(p->data.ID==FREESTATUS) cout<<"Free"<<endl;else cout<<p->data.ID<<endl;cout<<"起始地址:"<<p->data.address<<endl;cout<<"分区大小:"<<p->data.size<<" KB"<<endl;cout<<"状态:";if(p->data.state==FREESTATUS) cout<<"空闲"<<endl;else cout<<"已分配!"<<endl;cout<<"-----------------------"<<endl;p=p->next;}}//----------------------- 主函数--------------------------- void main(){int ch,d=0;//算法选择标记cout<<"<<操作系统>>动态内存分区分配算法如下:\n";cout<<"***********-----------------************\n";cout<<"**1.首次适应算法 2.最佳适应算法 0.退出**\n";cout<<"***********-----------------************\n";cout<<"请选择分配算法(然后按Enter键):";cin>>ch;if(ch==0||ch==1||ch==2) d++;while(d==0){cout<<"请选择正确的数字0 ,1 或2"<<endl;cin>>ch;if(ch==0||ch==1||ch==2) d++;}if(ch==0) exit(0);if(n==0) InitBlock(); //申请整块空闲区int choice; //操作选择标记while(1){cout<<"****************------------****************\n"; cout<<"** 1: 申请内存分配 2: 释放内存 **\n"; cout<<"** 3: 查看分配情况 0: 返回 **\n";cout<<"********************************************\n"; cout<<"请输入您的操作项编号:";cin>>choice;if(choice==1){AllocMemory(ch); // 分配内存n++;}else if(choice==2) // 内存回收/释放{int ID;cout<<"请输入您要释放的作业号:";cin>>ID;FreeMemory(ID);n++;}else if(choice==3){ShowDistribution();//显示主存分配情况n++;}else if(choice==0){main(); //退出n++;}else //输入操作有误{cout<<"输入有误,请重试!"<<endl;continue;}}}6.运行结果(以及截屏)6.1首次适应法(1)首先是选择首次适应分配算法的选择如下图所示:(2)采用首次适应法申请作业1,作业2,作业3后,选择查看分配情况,结果如下图所示:(3)接着操作:作业2释放60K;运行结果如下图所示:(4)继续作业4申请200K,作业3释放100K,会发现相连的空闲区会连接在一起了,运行结果如下图所示:(5)然后按照作业的要求继续操作:作业1释放130K;(6)从上图可以看出目前有两个空闲区,一个空闲区290K,另一个空闲区150K, 接着采用首次适应法进行作业5申请140K;运行结果如下图所示:从上图可以看出,采用首次适应法,是从开始进行查找,只要找到比申请的大小大的空闲区就进行了分配,而最佳是适应法是找到比申请内存空间大小大的,而且与申请大小最接近的空闲才分配。

相关文档
最新文档