正在加载图片...
B.根据s在段变换表中查找相应的段起始地址p和该段长1 C.检查w运1是否成立,若成立则执行E:否则进入D执行 D.产生地址越界错,程序终止 E.计算:物理地址=p+w,这就是所要的指令物理地址 (2)(0,432)物理地址=2219+432=26 (1,10)物理地址=300+10=3310 (2,500)因为段内偏移500)段长100,故报地址越界错 3,400)物理地址=1237+400=1637 2.(1)执行完序号为6的申请时,各进程的状态和已占的资源数如下 P等待 已古用资源4个 Q就绪或运行已占用资源4个 R等待 己占用资源2个 根据单项银行家算法,过程为 ①R申请2个资源时,剩余资源可使各进程运行结束,所以这个分配是安全的,故将2个资 源分给R。 ②同理,p,Q分别申请4、2个资源时,剩余资源可使各进程运行结束,所以这个分配也是 安全的,故将4、2个资源分给P、Q ③P申请2个资源时,系统此刻剩余资源数为2,如果将这两个资源分给P,系统就没有资 源了。这时的p、Q、R都还需要资源才可运行完,这样,p、Q、R将都进入阻塞状态。所以P 申请的这两个资源不能分配 ④同理,接下来R欲申请1个资源也是不安全的分配,故不能分给。 ⑤Q申请2个资源时,假定操作系统分给它。Q进程将运行结束,Q释放的资源又可使P运 行结束:P运行结束,释放的资源又可使R运行结束。所以这个分配是安全的,故将2个资源 分给Q。 (2)不会死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资源, 这样,得到资源的进程能及时归还资源供其他进程使用。 3.本题是生产者-消费者问题的一个变形,一组生产者A1,A2,…An1和一组消费者B1 B2,…,Bn2共用m个缓冲区,每个缓冲区只要写一次,但需要读n2次。因此,我们可以 把这一组缓冲区看成n2组缓冲区,每个发送者需要同时写n2组缓冲区中相应的n2个缓冲 区,而每一个接收者只需读它自己对应的那组缓冲区中的对应单元。 在本题中,应设置一个信号量 mutex实现诸进程对缓冲区的互斥访问:两个信号量数组 empty[n2]和full[n2]描述n2组缓冲区的使用情况。 mutex的初值为1,数组 empty中元素 初值为m,数组full中的元素初值为0。其同步关系描述如下 int mutex, empty [n2], full [n2] int mutex=l for(i=0;i<=n2-1;i++) empty [i]=m full[i=0:B.根据 s 在段变换表中查找相应的段起始地址 p 和该段长 1。 C.检查 w 运 l 是否成立,若成立则执行 E:否则进入 D 执行。 D.产生地址越界错,程序终止。 E.计算:物理地址=p+w,这就是所要的指令物理地址。 (2) (0,432) 物理地址=2219+432=2651 (1,10) 物理地址=3300+10=3310 (2,500) 因为段内偏移 500〉段长 100,故报地址越界错 (3,400) 物理地址=1237+400=1637 2. (1)执行完序号为 6 的申请时,各进程的状态和已占的资源数如下: P 等待 已占用资源 4 个 Q 就绪或运行 已占用资源 4 个 R 等待 己占用资源 2 个 根据单项银行家算法,过程为: ①R 申请 2 个资源时,剩余资源可使各进程运行结束,所以这个分配是安全的,故将 2 个资 源分给 R。 ②同理,p,Q 分别申请 4、2 个资源时,剩余资源可使各进程运行结束,所以这个分配也是 安全的,故将 4、2 个资源分给 P、Q。 ③P 申请 2 个资源时,系统此刻剩余资源数为 2,如果将这两个资源分给 P,系统就没有资 源了。这时的 p、Q、R 都还需要资源才可运行完,这样,p、Q、R 将都进入阻塞状态。所以 P 申请的这两个资源不能分配。 ④同理,接下来 R 欲申请 1 个资源也是不安全的分配,故不能分给。 ⑤Q 申请 2 个资源时,假定操作系统分给它。Q 进程将运行结束,Q 释放的资源又可使 P 运 行结束:P 运行结束,释放的资源又可使 R 运行结束。所以这个分配是安全的,故将 2 个资源 分给 Q。 (2)不会死锁,因为银行家算法在任何时候均保证至少有一个进程能得到所需的全部资源, 这样,得到资源的进程能及时归还资源供其他进程使用。 3.本题是生产者-消费者问题的一个变形,一组生产者 A1,A2,…An1 和一组消费者 B1, B2,…,Bn2 共用 m 个缓冲区,每个缓冲区只要写一次,但需要读 n2 次。因此,我们可以 把这一组缓冲区看成 n2 组缓冲区,每个发送者需要同时写 n2 组缓冲区中相应的 n2 个缓冲 区,而每一个接收者只需读它自己对应的那组缓冲区中的对应单元。 在本题中,应设置一个信号量 mutex 实现诸进程对缓冲区的互斥访问;两个信号量数组 empty[n2]和 full[n2]描述 n2 组缓冲区的使用情况。mutex 的初值为 1,数组 empty 中元素 初值为 m,数组 full 中的元素初值为 0。其同步关系描述如下: int mutex,empty[n2],full[n2]; int 1; mutex=1; for(i=O;i<=n2-1;i++) { empty[i]=m; full[i]=0; } main( )
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有