1、第二章,6、答:设信号量empty用于表示空盘子的数量,信号量apple用于计数,表示盘子中的苹果数目,信号量orange用于计数,表示盘子中的桔子数目。Semaphore empty=1,apple=0,orange=0dad()while(1) prepare an apple; P(empty); put an apple on the plate; V(apple );,mom() while(1) prepare an orange; P(empty); put an orange on the plate; V (orange); ,第二章,son()while(1) P(oran
2、ge);take an orange from the plate;V(empty);eat the orange;,daughter() while(1) p(apple);take an apple from the plate;v(empty);eat the apple; ,第二章,9、答:信号量sofa:表示等候椅数,初值为n信号量empty:表示理发椅空,初值为1信号量full:表示理发椅上有顾客,初值为0count:记录等候椅上的人数,初值为0信号量mutux:用来实现对变量count的互斥访问Var mutex,sofa,empty,full: semaphore=1,n,1,
3、0; count: integer: =0;,第二章,Guest:begin repeat P(mutex);if (count=n) then begin V(mutex); 离开;end else,Barber: begin repeat P(full); 剪发;V(empty); until false end,第二章,begin count:=count+1; if (count1) then /多个顾客时,坐等候椅上 V(mutex); P(sofa); 坐沙发等; P(empty); 坐理发椅子上; V(sofa); V(full); else /只有一个顾客时,坐到理发椅上 be
4、gin V(mutex); P(empty); 坐理发椅子上; V(full); end,第二章,剪发 离开; P(mutex); count:=count-1; V(mutex); end until falseend,第二章,11、答:本题中中共有三类进程,机房管理员进程guard,学生进程student和教师进程teacher。相应的信号量和各个进程描述如下:semaphore computer=2m; /*对应于计算机的资源信号量*/semaphore student=0; /*对应于欲进入机房的学生*/semaphore enter=0; /*用来控制学生是否可进入机房*/semap
5、hore finish=test=0; /*用来同步学生和教师教师须检查实习完毕的学生*/,第二章,guard() int i; for(i=0; in;i+;) P(computer); /*等待有两个空闲计算机*/ P(computer); P(student); /*等待有两个学生达到*/ P(student); V(enter); /*激活两个等待进入机房的学生*/ V(enter); ,computer=2m student=0 enter=0; finish=0;test=0;,第二章,teacher() int i; for(i=0;in;i+) P(finish); /*等待两
6、个学生完成实验*/ P(finish); 检查两个学生的实习结果; V(test); /*检查完后,激活两个学生检查完 毕,可以离开机房*/ V(test); ,computer=2m student=0 enter=0; finish=0;test=0;,第二章,student_i() /*i=1,2,2n*/ V(student); /*激活管理员,有学生到达,要进入机房实验*/ P(enter); /*等待管理员激活进入机房*/ 进入机房上机实习; V(finish); /*激活教师已经做完实验*/ P(test); /*等待教师检查作业*/ 离开机房; V(computer); /*所
7、占用的计算机变为空闲*/ ,computer=2m student=0 enter=0; finish=0;test=0;,第二章,7、答:为了使写者优先,在原来的读优先算法基础上增加一个初值为1的信号量S,使得当至少有一个写者准备访问共享对象时,它可使后续的读者进程等待写完成;初值为0的整型变量writecount,用来对写者进行计数;初值为1的互斥信号量wmutex,用来实现多个写者对writecount的互斥访问。,第二章,writer() while(1) P(wmutex); if(writecount=0) P(S); writecount+; V(wmutex); P(mutex
8、); 写文件; V(mutex); P(wmutex); writecount- -; If(writecount=0) V(S); V(wmutex);,第二章,reader () while ( 1) P(S); P(rmutex); if(readcount=0) P(mutex); readcount+; V(rmutex); V(S); 读文件; P(rmutex); readcount-; if(readcount=0) V(mutex); V(rmutex); ,图书馆阅览室问题,问题描述: 假定阅览室最多可同时容纳100个人阅读,读者进入时,必须在阅览室门口的一个登记表上登记,
9、内容包括姓名、座号等,离开时要撤掉登记内容。用P、V操作描述读者进程的同步算法。,图书馆阅览室问题,mutex,emptyseat semaphore;mutex=1,Emptyseat=100;Reader(i) P(Emptyseat); P(mutex); 查登记表,登记姓名,座位号等; V(mutex);,阅读; P(mutex); 查登记表,置空; V(mutex); 离开; V(Emptyseat);,哲学家就餐问题,给所有哲学家编号,奇数号的哲学家必须先拿左边的筷子,偶数号的哲学家必须先拿右边的筷子。这样,任何一个哲学家拿到一支筷子后,就已经阻止了他邻座的一个哲学家吃饭的企图,除
10、非某个哲学家一直吃下去,否则不会有人会饿死。,2018/7/3,17,第二章,Repeatbegin if (i mod 2)!=0 then begin P(chopsticki); P(chopstick(i+1) mod 5); eat; V(chopsticki); V(chopstick(i+1) mod 5); think; end,2018/7/3,18,第二章,else begin P(chopstick(i+1) mod 5); P(chopsticki); eat; V(chopstick(i+1) mod 5); V(chopsticki); think; endendu
11、ntil false;,第三章,6 、答:(1)采用先来先服务调度算法,则其调度顺序是1、2、3、4 平均周转时间: (2.0+2.8+3.1+3.3)/4=2.8平均带权周转时间:(2.0+2.8+3.1+3.3)/4=2.8,第三章,(2)采用短作业优先调度算法,则其调度顺序是1、4、3、2 平均周转时间: (2.0+1.8+2.4+3.6)/4=2.45平均带权周转时间:(1.0+6.0+4.8+3.6)/4=3.85,第三章,(3)采用高响应比优先调度算法,则其调度顺序是1、4、3、2 平均周转时间: (2.0+1.8+2.4+3.6)/4=2.45平均带权周转时间:(1.0+6.0+
12、4.8+3.6)/4=3.85,第四章,2、答:(1)Need=(2) Work值的变化情况如下:存在一个安全序列,所以系统处于安全状态。,(1,5,2,0),(1,5,3,2),(2,8,8,6),(2,8,9,10),(3,8,9,10),第四章,(3) Request1(0,4,2,0)Need1(0,7,5,0),P1请求在最大需求范围内。Request1(0,4,2,0)Available(1,5,2,0) ,可用资源可满足P1请求需要。试探把要求的资源分配给进程P4并修改有关数据结构的数值:Available(1,1,0,0) = Available(1,5,2,0)- Reque
13、st1(0,4,2,0);Need1(0,3,3,0) = Need1(0,7,5,0)- Request1(0,4,2,0);Allocation1(1,4,2,0) =Allocation1(1,0,0,0)+ Request1(0,4,2,0);利用安全性算法检查试探将资源分配后状态的安全性如下:,第四章,(3) 存在一个安全序列,所以系统仍处于安全状态,所以P1的这个请求应该马上满足。,(1,1,0,0),(1,1,1,2),(2,4,6,6),(3,8,8,6),(3,8,9,10),第五章,5、答:(1)采用首次适应算法,在完成了题目所给的系列申请及释放内存操作后,空闲分区如下所示
14、。,第五章,(2)采用最佳适应算法,在完成了题目所给的系列申请及释放内存操作后,空闲分区如下所示。,第五章,(3)采用最差适应算法,在完成了题目所给的系列申请及释放内存操作后,空闲分区如下所示。 (4)如再申请100K,有上述结果可知,采用首次适应算法后剩下的空闲分区能满足这一申请要求,采用最佳适应算法和最差适应算法均不能满足申请要求。,第五章,6、答:(1)程序空间的大小为32KB,因此逻辑地址的有效位数是15位。(2)内存储空间的大小是16KB,因此物理地址至少需要14位。(3)当页面为1KB时,虚地址0A5C表示页号为00010,页内地址是1001011100。该页在内存的第4块,即块号
15、为0100,因此0A5C的物理地址是01001001011100,即125CH。用同样的方法可以求得,053C的物理地址是293CH,103C的逻辑地位在第4页,产生越界异常。,第五章,7、答:(1)1.5*2=3 微秒 (2)1.5*2*15%+1.5*85%=1.725 微秒,第六章,4、一个程序P的用户空间为16K,存储管理采用请求式分页系统,每个页面大小为2K,存在以下的页表:其中,有效位=1表示页面在内存;0表示页面不在内存。请将虚地址0X060C,0X1502,0X1D71,0X2C27,0X4000转换为物理地址。,第六章,注:请求分页存储管理系统的地址变换与分页存储管理系统的地
16、址变换类似,只是增加了缺页中断处理部分。当由逻辑地址计算出页号后,查找页表确定此页在不在内存,如果在内存就计算物理地址,如果不在内存中,就产生一个缺页中断将所缺的页按照一定的策略调入内存。程序P共有8页,页面大小为2K,即211,页号占剩余高位。,第六章,答:逻辑地址0X060C的二进制表示如下: 0000 0 110 0000 1100 页号 页内地址其页号为0,从表中可知该页对应的物理块号为12,所以,将二进制表示中的页号换为块号,则物理地址用二进制表示为:0110 0 110 0000 1100 块号 块内地址用十六进制表示即为0X660C。,第六章,逻辑地址0X1502的二进制表示如下
17、: 0001 0 101 0000 0010,页号为2,从表中可知该页对应的物理块号为0,所以,物理地址用二进制表示为0000 0 101 0000 0010,用十六进制表示为0X0502。逻辑地址0X1D71的二进制表示如下: 0001 1 101 0111 0001,页号为3,从表中可知该页不在内存,产生缺页中断,无物理地址。,第六章,逻辑地址0X2C27的二进制表示如下: 0010 1 100 0010 0111,页号为5,从表中可知该页对应的物理块号为15,所以,物理地址用二进制表示为0111 1 100 0010 0111,用十六进制表示为0X7C27。逻辑地址0X4000的二进制表
18、示如下: 0100 0 000 0000 0000,页号为8,从表中可知没有第8页,所以产生越界中断,无物理地址。,第六章,9、答:在指令中如果包含地址部分,则必须进行地址变换,同时进行越界检查和权限检查,只在两者均合法时,才完成指令规定操作。(1)由于第0段的存在位为0,表示该段未装入内存,因此产生缺段中断。(2)从段表第1项可看到,指令中逻辑地址合法,段也已经在内存,但存取控制字段不符,故产生保护性中断信号。,第六章,9、答:(3)逻辑地址合法,存取方式合法,形成物理地址8020后,执行指定操作。(4)逻辑地址中段内地址超长,产生越界中断信号。(5)逻辑地址及访问方式合法,形成物理地址31
19、00,指令执行后,将条转到内存单元3100处继续执行。,第六章,10、答:(1)一个作业最多可以有28=256个段。(2)每段的最大长度为216=64KB=65 536字节。(3)逻辑地址0,430主存地址为:2100+430=2530; 逻辑地址1,50无法进行地址变换,因为产生了越界中断; 逻辑地址2,30无法进行地址变换,因为产生了缺段中断; 逻辑地址3,70的主存地址为:4000+70=4070。,第六章,12、答:(1)页面大小为4KB,故页内偏移为12位。系统采用48位虚拟地址,故虚页号为48-12=36位。采用多级页表时,最高级页表项不能超出一页大小,故应采用36/9=4级页表,
20、最高级页表项正好占据一页空间。(2)系统进行页面访问操作时,首先读取页面对应的页表项,有98%的概率可以在TLB中直接取到,然后进行地址转换,如果TLB为命中,则要通过一次内存访问来读取页表项。页面的平均访问时间为:98%*(10+100)+(1-98%)*(10+100+100)=112ns,第六章,(3)二级页表的平均访问时间计算同理:98%*(10+100)+(1-98%)*(10+100+100+100+100)=114ns(4)设快表命中率为P,则应满足:P*(10+100)+(1-P)*(10+100+100+100+100)=95%(5)系统采用48位虚地址,每段最大为4G,故段
21、内地址为32位,段号:48-32=16位。每个用户最多可以有216个段,段内采用页式地址,与(1)中计算同理,(32-12)/9,取上整为3,故段内应采用3级页表。,2018/7/3,40,第六章,有一请求分页存储管理系统,页面大小为每页100字节。有一个50*50的整型数组按行连续排放,每个整数占两个字节,将数组初始化为0的程序描述如下:int a5050;int i,j;for(i=0;i50;i+)for(j=0;j50;j+) aij=0;若在程序执行时内存中只有一个存储块用来存放数组信息,试问该程序执行时产生多少次缺页中断?,2018/7/3,41,第六章,答:由题目所给条件可知:数组有2500个整数,每个占两个字节,共需要5000字节,即50个页面。按行存放,意味着一页存放一行数据。又因为只分配一个物理块,发生50次缺页中断。,第七章,10、本题的题干有误,应为:假定磁盘的旋转速度为每圈20ms,格式化时每个磁道被分成10个扇区。现有10个逻辑记录存放在同一磁道上,其排列顺序如下表所示。,