表1某作业页表
页号 | 块号 |
0 | 2 |
1 | 3 |
2 | 1 |
3 | 6 |
P=A/L
W=A%L
P=1011/1024=0
W=1011% 1024=1011
P=5012/1024=4
W=5012%1024=916
5. 当前磁盘读写位于柱面号20,此时有多个磁盘请求以下列柱面号顺序送至磁盘驱动器:10、 22、20、2、40、6、38。在寻道时,移动一个柱面需要6ms,按先来先服务和电梯算法(方向从0~40)计算所需总的寻道时间。
【答案】1)先来先服务:寻道的次序为20、10、22、20、2、40、6、38。总的寻道时间为:【20-10、22-10、22-20、20-2、40-2、40-6、38-6】(10+12+2+18+38+34+32)*6=876ms。
(2)电梯算法(方向从0~40):寻道的次序为20、22、38、40、10、6、2。总的寻道时间为:(2+16+2+30+4+4)*6=348ms。
1. 有两个合作进程P1、P2它们从一台输入/输出设备读入数据,P1进程读入数据a,P2进程读入数据b,输入设备是一占设备,如下图所示。两个进程做如下计算:
P1:x=a+b;
P2:y=a*b;
两个进程的工作流程
计算完成后结果x、y由进程P1输出。用信号量实现进程P1 、P2的同步算法。
【答案】,由于输入设备是一占设备,所以input(a)和input(b)只能互斥执行。设置4个信号量,s1表示数据a是否读入,s2表示数据b是否读入,s3表示是否完成y=a*b计算,mutex表示对输入设备的互斥访问。对应的同步算法如下:
Semaphore s1=0 ,s2=0,s3=0,mutex=1;
main( )
{ Cobegin
{ P1( ) //P1进程
{ P(mutex);
input(a);
V(mutex);
V(s1);
P(s2);
x=a+b;
P(s3);
输出x、y;
}
P2( ) // P2进程
{ P(mutex);
input(b);
V(mutex);
V(s2);
P(s1);
y=a*b;
V(s3);
}
}
Coend
}
进程P1 进程P2
两个进程的同步情况
6. 某银行提供一个服务窗口和10个供顾客等待的座位。顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号。取号机每次仅允许一位顾客使用。当营业员空闲时,通过叫号机选取一位顾客,并为其服务。顾客和营业员的活动过程描述如下:
cobegin
{ 顾客进程i
{ 从取号机获得一个号码;
等待叫号;
获取服务;
}
营业员进程
{ while(TRUE)
{ 叫号;
为顾客服务;
}
}
} coend
请添加必要的信号量和P、V(或wait( )、signal( ))操作,实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
【答案】:
Semaphore mutex=1; //互斥使用取号机信号量
Semaphore empty=10; //空座位的数量信号量
Semaphore full=0; //己占座位的数量信号量
Semaphore service=0; //等待叫号信号量
cobegin
{ 顾客进程i
{ P(empty);
P(mutex);
从取号机获得一个号;
V(mutex);
V(full);
P(service); //等待叫号
}
营业员进程
{ while(TRUE)
{ P(full);
V(empty);
V(service); //叫号
为顾客服务;
}
}
} coend
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务