操作系统典型例题分析 下载本文

P1 P2 P3 P4 P5 2 4 4 4 3 1 0 0 0 1 2 2 5 5 4 5 5 4 4 4 5 3 0 2 2 9 6 11 5 4 3 1 0 0 1 4 3 0 2 1 7 4 6 0 0 系统中剩余可用资源的数量为(0,3,2);用安全算法进行检查可以得到安全序列{P4,P5,P3,P2,P1},所以系统是安全的,可以满足进程P4的资源请求。

(5)在第(4)题的基础上,若进程P1又有新的资源请求(0,2,0),按银行家算法进行检查,进程P1请求资源数(0,2,0)+已分配资源数量(2,1,2)小于进程P4的最大需求数量(5,5,9);另外进程P1请求资源数(0,2,0)小于剩余可用资源的数量(0,3,2);如果满足进程P1新的资源请求,进程P1新仍然需求资源数变为(3,2,7),如表所示。 进程 P1 P2 P3 P4 P5 已分配资源数量 A 2 4 4 2 3 B 1 0 0 0 1 C 2 2 5 4 4 最大资源需求量 A 5 5 4 4 4 B 5 3 0 2 2 C 9 6 11 5 4 仍然需求资源数 A 3 1 0 0 1 B 2 3 0 2 1 C 7 4 6 0 0 系统中剩余可用资源的数量为(0,1,2),已不能满足任何进程的资源需要,故系统进入不安全状态,此时不能将资源分配给进程P1。

5 存储管理

1、存储管理的基本任务是为多道程序的并发执行提供良好的存储器环境,这包括哪些方面? 存储管理的基本任务是为多道程序的并发执行提供良好的存储器环境,它包括以下几个方面:(1)能让每道程序“各得其所”,并在不受干扰的环境中运行时,还可以使用户从存储空间的分配、保护等事物中解脱出来;(2)向用户提供更大的存储空间,使更多的程序同时投入运行或使更大的程序能在小的内存中运行。(3)为用户对信息的访问、保护、共享以及程序的动态链接、动态增长提供方便;(4)能使存储器有较高的利用率。

2、页式存储管理系统是否产生碎片?如何应对此现象?

页式存储管理系统产生的碎片称为内碎片,它是指一个进程的最后一页没有占满一个存储块而被浪费的存储空间。减少内碎片的办法是减小页的大小。

3、在页式存储管理系统中页表的功能是什么?当系统的地址空间很大时会给页表的设计带来哪些新问题?

页式存储管理系统中,允许将进程的每一页离散地存储在内存的任何一个物理页面上,为保证进程的正常运行,系统建立了页表,记录了进程每一页被分配在内存的物理块号。页表的功能是实现从页号到物理块号的地址映射。

当系统的地址空间很大时,页表也会变得非常大,它将占有相当大的内存空间。例如,对于一个32位地址空间的页式系统,假设页的大小为4KB,则一个进程的页表项最大可达到1MB。如果每个页表项占4B,则页表要占用4MB的连续内存空间。为了解决这个问题可以从以下两个方面入手。(1)将页表离散存放。(2)只将页表的一部分调入内存,其余部分放在外存。

具体的实现方案是采用两级页表。对页表分页,使每个页面的大小与内存的物理块的大小一致。并为它们进行编号,将各个页面放在不同的物理块中。然后为这些离散分配的页表再建立一张页表,称为外层页表(或页目录),此时的逻辑地址可描述为:

外层页号+页号+页内位移

对于要运行的进程,将其外层页表调入内存,对所有的页表而言只需调入少量的页表,使用时如果找不到相应的页表,则产生中断,请求操作系统将需要的页表调入内存。

两级页表适应了大地址空间的需要,需要虚拟存储技术的支持,增加了地址变换的开销和管理的复杂度。此外根据需要还可以设计三级页表、四级页表等。

4、什么是动态链接?用哪种存储管理方案可以实现动态链接?

动态链接是指进程在运行时,只将进程对应的主程序段装入内存,在主程序运行过程中,当需要用到哪个子程序段和数据段时,再将这些段装入内存,并与主程序段链接上。

通常一个大的程序是由一个主程序和若干个以及一些数据段组成的。而段式存储管理方案中的段就是按用户的逻辑段自然形成的,因此可实现动态链接。

5、某进程的大小为25F3H字节,被分配到内在的3A6BH字节开始的地址。(1)若使用上、下界寄存器,寄存器的值是多少?如何进程存储保护?(2)若使用地址、限长寄存器,寄存器的值是多少?如何进程存储保护?

(1)若使用下、下界寄存器,上界寄存器的值是3A6BH,下界寄存器的值是3A6BH+25F3H=605EH,当访问内在的地址大于605EH、小于3A6BH时产生越界中断。

(2)若使用地址、限长寄存器,地址寄存器值是3A6BH,限长寄存器的值是25F3H,当访问内存的地址小于3A6BH,超过3A6BH+25F3H=605EH时主生越界中断。

6、在系统中采用可变分区存储管理,操作系统占用低地址部分的126KB,用户区的大小是386KB,若采用空闲分区表管理空闲分区。若分配时从高地址开始,对于下述的作业申请序列:作业1申请80KB;作业2申请56KB;作业3申请120KB;作业1完成;作业3完成;作业4申请156KB;作业5申请80KB。试用首次适应法处理上述作业,并回答下面问题。(1)画出作业1、2、3进入内存后。内存分布情况。(2)画出作业1、3完成后。内存的分布情况。(3)画出作业4、5进入内存后。内存分布的情况。

(1)作业1、2、3进入内存后,内存分布如下图

0KB 操作系统126KB 126KB 256KB 作业3:120KB 376KB 作业2:56KB 432KB 作业1:80KB 512-1KB (2)作业1、3完成后,内存的分布情况如下图

0KB 操作系统126KB 126KB 256KB 376KB 作业2:56KB 432KB 512-1KB

(3)作业4、5进入内存后,内存的分布情况如下图

0KB 操作系统126KB 126KB 256KB 作业4:156KB 376KB 作业2:56KB 432KB 作业5:80KB

7、某系统采用页式存储管理策略,某进程的逻辑地址空间为32页,页的大小为2KB,物理地址空间的大小是4MB。(1)写出逻辑地址的格式。(2)该进程的页表有多少项?每项至少占多少位?(3)如果物理地址空间减少一半,页表的结构有何变化?

(1)进程的逻辑地址空间为32页,故逻辑地址中的页号需要5位(二进制),由于每页的大小为2KB,因此页内位移须用11位(二进制)表示,这样逻辑地址格式如下图。

15

11 10

页号 页内位移

(2)因为进程的逻辑地址空间为32页,因此该进程的页表项有32项。页表中应存储每页的块号。因为物理地址空间的大小是4MB,4MB的物理地址空间内分成4MB/2KB=2K个块,因此块号部分需要11位(二进制),所以页表中每项占11位。

(3)如果物理地址空间减少一半,页表的页表项数不变,但每一项的长度从11位(二进制)减少到10

0

512-1KB 位(二进制)。

8、某页式存储管理系统,内存的大小为64KB,被分成16块,块号为0、1、2、…、15。设某进程有4页,其页号为0、1、2、3,被分别装入内存的2、4、7、5块,问:(1)该进程的大小是多少字节?(2)写出该进程每一页在内存的起始地址。(3)逻辑地址4146对应的物理地址是多少?

(1)内存的大小为64KB,被分成16块,所以块的大小是64KB/16=4KB。因为块的大小与页面的大小相等,所以页的大小是4KB。该进程的大小是4*¥KB。

(2)因为进程页号为0、1、2、3,被分别装入内存的2、4、7、5。 第0页在内存的起始地址是:2*4KB=8KB; 第1页在内存的起始地址是:4*4KB=16KB; 第2页在内存的起始地址是:7*4KB=28KB; 第3页在内存的起始地址是:5*4KB=20KB。

(3)逻辑地址4146对应的物理地址:4146/4096=1,…,50。逻辑地址4146对应的页号为1,页内位移为50。查找页表,得知页号为1的存储块号为4,所以逻辑地址4146对应的物理地址是:4*4096+50=16434。

9、某段式存储管理系统的段表如下图,请将逻辑地址[0,137]、[1,9000]、[2,3600]、[3,230]转换成物理地址。

段号 0 1 2 段大小 15 KB 8 KB 10 KB 段起址 40KB 80 KB 100 KB (1)对于逻辑地址[0,137],段号为0,段内位移为137。查段表的项得到该段的段地址为40KB,段长为15KB。由于段号0小于进程的总段数,故段号合法;段内位移137小于段长15KB,故段内地址合法。因此可得到物理地址为:40KB+137B=40960B+137B=41097B。

(2)对于逻辑地址[1,9000],段号为1,段内位移为9000。查段表的项得到该段的段地址为80KB,段长为8KB。由于段号1小于进程的总段数,故段号合法;段内位移9000大于段长8KB=8192B,因此产生越界中断。

(3)对于逻辑地址[2,3600],段号为2,段内位移为3600。查段表的项得到该段的段地址为100KB,段长为10KB。由于段号2小于进程的总段数,故段号合法;段内位移3600小于段长10KB,故段内地址合法。因此可得到物理地址为:100KB+3600B=10240B+3600B=10600B。

(4)对于逻辑地址[3,230],段号为3,段内位移为230。由于段号3大于进程的总段数,故段号不合法,因此产生越界中断。

6 虚拟存储管理

1、试说明缺页中断与一般中断的主要区别?

答:缺页中断与一般中断一样,需要经历保护CPU现场、分析中断原因、转中断处理程序进行处理及恢复中断现场等步骤。但缺页中断是一种特殊的中断,它与一般中断的区别如下:

(1)在指令执行期间产生和处理中断。通常CPU是在一条指令执行之后去检查是否有中断产生,若有便去处理中断;否则继续执行下一条指令。页缺页中断是在指令执行期间发现所要访问的指令或数据不在内存时产生和处理中断。

(2)一条指令执行期间可以产生多次中断。对于一条要求读取多个字节数据的指令,指令中的数据可能跨越两个页面。该指令执行时可以要发生3次中断,一次是访问指令,另外两次访问数据。

2、局部置换和全局置换有何区别,在多道程序系统中建议使用哪一种?

答:局部置换是指当进程在执行过程中发生缺页时,只在分配给该进程的物理块中选择一页换出。全局置换是指在所有用户使用的整个存储空间中选择一个页面换出。