例1、设有一台计算机,有两条I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上打印结果。问:①系统要设几个进程来完成这个任务?各自的工作是什么?②这些进程间有什么样的相互制约关系?③用P、V操作写出这些进程的同步算法。分析我们画一个草图来帮助我们理解这道题:从图中可以看出,从“卡片机”到“打印机”共需要3个操作,即输入、处理、输出。这3个动作就是完成任务的3个进程。下面我们看看这些进程之间有什么样的制约关系。可以看出,这3个进程之间是同步关系,合作完成从输入到输出的工作任务。对其中任何一个进程,要处理好与其关联的两端设备的协调工作。以“输入进程”为例,它与卡片机和缓冲区B1关联,将卡片机的卡片输入到缓冲区B1,在不考虑卡片机的情况下,就要考虑缓冲区的情况,即是满还是空,是空缓冲区,输入进程就可以输入信息,如果缓冲区满,则要等待“处理进程”将B1中的信息取走,使之为空,输入进程才能继续工作。依此类推,可以找出另外2个进程的制约关系。一般来说,处理进程同步需要2个信号量,“输入进程”和“处理进程”同步,需要2个信号量,解决缓冲区B1的协调操作问题;而“处理进程”和“输出进程”同步,还需要2个信号量,解决缓冲区B2的协调操作问题。因此,共需要4个信号量。本题中“处理进程”的算法有一些难度,因为它需要协调两个缓冲区的工作,考虑的因素比较多,算法复杂些。答案①系统可设三个进程来完成这个任务:R进程负责从卡片输入机上读入卡片信息,输入到缓冲区B1中;C进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;P进程负责从缓冲区B2中取出信息,并在打印机上印出。②R进程受C进程影响,B1放满信息后R进程要等待——等C进程将其中信息全部取走,才能继续读入信息;C进程受R进程和P进程的约束:B1中信息放满后C进程才可从中取出它们,且B2被取空后,C进程才可将加工结果送入其中;P进程受C进程的约束:B2中信息放满后P进程才可从中取出它们,进行打印。③信号量含义及初值:B1full——缓冲区B1满,初值为0;B1empty——缓冲区B1空,初值为0;B2full——缓冲区B2满,初值为0;B2empty——缓冲区B2空,初值为0;卡片机缓冲区B1打印机缓冲区B2输入处理输出例二:应用题(每小题10分,共20分)1.设A:B两个进程共用一个缓冲区Q,A向Q写入信息,B从Q读出信息,算法框图如图所示。判断该同步问题的算法是否正确?若有错,请指出错误原因并予以改正。这个算法不对。(1分)因为A、B两进程共用一个缓冲区Q,如果A先运行,且信息数量足够多,那么缓冲区Q中的信息就会发生后面的冲掉前面的,造成信息丢失,B就不能从、Q中读出完整的信息。(1分)’进行改正:A、B两进程要同步使用缓冲区Q。为此,设立两个信号量:empty表示缓冲区Q为空,初值为l;(2分)full表示缓冲区Q为满,初值为0。(2分)算法框图如图所示。(每个图正确各2分,共4分)例3、下表给出作业l,2,3的提交时间和运行时间。采用先来先服务调度算法和短作业优先调度算法,试问作业调度次序和平均周转时间各为多少?(时间单位:小时,以十进制进行计算。)作业号提交时间运行时间1230.00.41.08.04.01.0分析解此题关键是要清楚系统中各道作业随时间的推进情况。我们用一个作业执行时间图来表示作业的执行情况,帮助我们理解此题。采用先来先服务调度策略,其作业执行时间图如下:采用短作业优先调度策略,其作业执行时间图如下:另外,作业i的周转时间Ti=作业完成时间-作业提交时间系统中n个作业的平均周转时间nTTnii1)(1,其中Ti为作业i的周转时间。解:采用先来先服务调度策略,则调度次序为l、2、3。作业号提交时间运行时间开始时间完成时间周转时间10.08.00.08.08.020.44.08.012.011.631.01.012.013.012.0平均周转时间T=(8+11.6+12)/3=10.53采用短作业优先调度策略,则调度次序为l、3、2。作业号提交时间运行时间开始时间完成时间周转时间10.08.00.08.08.031.01.08.09.08.020.44.09.013.012.6平均周转时间T=(8+8+12.6)/3=9.53例3、今有三个批处理作业。第一个作业10:00到达,需要执行2小时;第二个作业在10:10到达,需要执行1小时;第三个作业在10:25到达,需要执行25分钟。分别采取如下两种作业调作业作业3作业2作业100.41.08.012.013.0时间作业提交时间各作业陆续完成时间作业作业3作业2作业100.41.08.09.013.0时间作业提交时间各作业陆续完成时间度算法:调度算法1:作业号到达时间开始执行时间执行结束时间12310:0010:1010:2510:0012:0013:0012:0013:0013:25调度算法2:作业号到达时间开始执行时间执行结束时间12310:0010:1010:2511:5010:5010:2513:5011:5010;50(1)计算各调度算法下的作业平均周转时间。(2)调度算法1是什么作业调度算法?分析作业的周转时间=作业完成时间-作业提交时间。以调度算法1的作业2为例,其周转时间=作业完成时间13:00-作业提交时间10:10,得到结果为2小时50分钟,转换为小时为2.83小时。转换的目的是为了方便计算平均周转时间。解:(1)采用调度算法1时:作业1的周转时间为2小时;作业2的周转时间为2.83小时;作业3的周转时间为3小时;平均周转时间为:(2+2.83+3)/3=2.61小时。采用调度算法2时:作业1的周转时间为3.83小时;作业2的周转时间为1.67小时;作业3的周转时间为0.42小时;平均周转时间为:(3.83+l.67+0.42)/3=l.97小时。(2)调度算法1是按照作业到达的先后次序执行的,所以它是先来先服务调度算法。例4、考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:(1)逻辑地址需要多少二进制位表示?(2)物理地址需要多少二进制位表示?解因为页面数为8=23,故需要3位二进制数表示。每页有1024个字节,1024=210,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=25)。(1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。(2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。分析在分页存储管理中,逻辑地址结构如下图所示。它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1MB个页面。页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为212,即2KB。同理,物理地址中块号的地址位数决定了块的多少,由于页式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。例5、若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。页号块号页号p页内地址d01232316解本题中,为了描述方便,设页号为p,页内位移为d,则:(1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011mod1024=1011。查页表第0页在第2块,所以物理地址为10242+1011=3059。(2)对于逻辑地址2148,p=int(2148/1024)=2,d=2148mod1024=100。查页表第2页在第1块,所以物理地址为1024+100=1124。(3)对于逻辑地址4000,p=int(4000/1024)=3,d=4000mod1024=928。查页表第3页在第6块,所以物理地址为10246+928=7072。(4)对于逻辑地址5012,p=int(5012/1024)=4,d=5012mod1024=916。因页号超过页表长度,该逻辑地址非法。例6、考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少?解使用FIFO算法,缺页次数是16;使用LRU算法,缺页次数是15;使用OPT算法,缺页次数是11。分析所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。当内存块数量为3时:FIFO1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6块11114446663332226块2222111222777111块333355511166633缺页因此,FIFO算法发生缺页中断的次数为16。在FIFO算法中,先进入内存的页面被先换出。例如,当页6要调入时,内存的状态为4、1、5,考查页6之前调入的页面,分别为5、1、2、4、…,可见4为最先进入内存的,本次应换出,然后把页6调入内存。LRU1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6块1111445551177222块222222666333333块33311122226616缺页因此,LRU算法发生缺页中断的次数为15。在LRU算法中,最近最少使用的页面被先换出。例如,当页6要调入时,内存的状态为5、2、1,考查页6之前调入的页面,分别为5、1、2、…,可见2为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。OPT1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6块111111133336块22222227222块3345666611缺页因此,OPT算法发生缺页中断的次数为11。在OPT算法中,在最远的将来才被访问的页面被先换出。例如,当页6要调入时,内存的状态为1、2、5,考查页6后面要调入的页面,分别为2、1、2、…,可见5为最近一段时间内使用最少的,本次应换出,然后把页6调入内存。例7假设一个磁盘有200个磁道,编号从0~199。当前磁头正在143道上服务,并且刚刚完成了125道的请求。如果寻道请求队列的顺序是:86,147,91,177,94,150,102,175,130问:为完成上述请求,下列算法各自磁头移动的总量是多少?①FCFS②SSTF③电梯法答案FCFS为565;SSTF为162;电梯法为125。分析①磁头在143道上,下一个请求为86,采用先来先服务磁盘调度算法FCFS,按照请求到来的次序依次响应,于是磁头从143道移动到86道上,移动磁道数为143-86=57。再从86道移动到147道,依此类推,进行调度的情况为:下一磁道移动磁道数861479117794150102175130576156868356487345磁头移动总量为565。②采用最短寻道时间优先磁盘调度算法SSTF,当前磁头在143道上,选择的下一个请求距当前磁头所在位置应具有最小的寻道时间。比较离143道最近的两个请求:130和147,可知,从143道移动到147道花费的时间最短,仅为4,于是磁头移动到147道上。依此类推,进行调度的情况为:下一磁道移动磁道数147150130102949186175177432028835892磁头移动总量为162。③采用电梯磁盘调度算法,要按照磁头移动的方向对请求进行扫描法,一侧的所有请求完成后,才掉头回扫。题中的条件“当前磁头正在143道上服务,并且刚刚完成了125道的请求”说明磁头移动的方向是从125道到143道。根据电梯法,磁头要继续向数大的方向扫描下去,于是先遇到147道的请求,然后是150