//P3
//R0初值为1 //S3初值为0
While (true) { P(S3)
从M3取走一个消息 V(R3) 加工 P(R0)
向M0放入一个消息 V(S0) }
解释:借鉴生产者/消费者典型的问题的解决方法,
每一个进程既是生产者,也是消费者
15.第31题
//P2
//S2初值为0 //R3初值为2
While (true) { P(S2)
从M2取走一个消息 V(R2) 加工 P(R3)
向M3放入一个消息 V(S3) }
1) 应编写一个程序;读者的数量为多少,就应该设置多少进程?进程和程序之间关系为:
程序是静态的,永久的,往往保存在磁盘上
进程是动态的,是程序的一次执行,具有生命周期;是操作系统资源分配和执行的基本单位 2) 公用信号量R,初值为1,代表登记表资源互斥
公用信号量S,初值为1000,代表座位资源 // 读者 Begin P(R) 在图书馆,,, P(R) 在登记表上进行登记 V(R) P(S) End 解释:
在登记表上撤消登记 V(R) V(S) 离开图书馆 只需实现一个程序来模拟读者即可,通过程序的参数来体现读者的特征,比如,姓名等 仔细可以识别出,登记表为共享资源,在读者进入图书馆和离开图书馆时需要互斥访问
1000个座位为有限的系统资源,1000个座位全被占用时,后续读者只有等待
死锁
1. 产生死锁的4个必要条件是什么?为什么说是必要条件而不是充分条件? 资源互斥使用(资源独占) 非剥夺控制(不可强占) 零散请求 循环等待
如果死锁发生,则这四个条件必然同时满足;但反过来讲,如果这四个条件同时满足却不一定发生死锁。
2. 列举出预防死锁的各种方法 核心思想是破坏死锁的必要条件。 破坏互斥条件
3. 死锁定理是什么?
如果一个系统状态为死锁状态,当且仅当资源分配图是不可完全化简的。也即,如果资源分配图中所有的进程都成为孤立节点,则系统不会发生死锁。
4. 解除死锁的方法
Spooling技术
允许进程剥夺也包括剥夺自己的“资源”
进程创建时就由系统分配了所有所需的资源,等待执行完后,释放所有资源 系统根据一定策略对资源进行编号,进程必须按序申请资源 破坏不可剥夺条件 破坏零散请求 破坏循环等待条件
重新启动 撤销进程 剥夺资源 进程回退
5. 资源分配图 见课程PPT 6.11题
S1的资源首先分配给T3,T3得到所需资源,执行完毕之后归还所占的R2资源,R2资源可以满足T1的需求,T1作为生产者可以远远不断地生产S1
T4对S1的需求可以得到满足,但由于T4所需的R1不能得到满足,而T4是S2的生产者,所以S2不能增加资源,T2对S2的申请不能得到满足,故发生死锁 7.12题 (1) Claim表 P1 P2 P3 P4 P5 Available
A 3 1 0 2 1 B 4 3 0 2 1 C 7 4 6 1 0 (2,3,3)
为P4分配所需资源,执行完释放资源,available为(4,3,7)
为P2分配所需资源,执行完释放资源,available为(8,3,9)
为P3分配所需资源,执行完释放资源,available为(12,3,14)
为P5分配所需资源,执行完释放资源,available为(15,4,18)
为P1分配所需资源,执行完释放资源,available为(17,5,20) (2)不能,显然available不能满足
(3)可以,假设为P4分配(2,0,1),此时available为(0,3,2),P4的claim为(0,2,0),只能满足P4的要求,分配的顺序同(1)
(4)不可以,假设为P1分配(0,2,0),此时available为(0,1,2),此时不能满足任何一个进程的claim,会发生死锁 8.13题
找不到非独立又非阻塞的进程
存储管理
1. 什么是地址重定位?分为哪几种?各有什么特点
当程序被装入内存时,程序的逻辑地址被转换成内存的物理地址,称为地址重定位 绝对装入
可重定位装入
", 即指程序装入内存时,由于程序的逻辑地址和物理地址不一致,由逻辑地址到物理地址的映射过程。 静态再定位:指地址定位时修改程序的逻辑地址值,完成定位后,在程序的执行期间地址将不再发生变化。特点:在程序执行之前进行地址再定位。
动态再定位:程序在装入内存时,不修改程序的逻辑地址值,程序在访问物理内存之前,再实时地将逻辑地址转换成物理地址。
2. 什么是内碎片和外碎片?各种存储管理方法中可能产生哪些碎片? 内碎片是指占用分区之内未被利用的地址空间;
外碎片是指占用分区之间难以利用的空闲分区(通常是小空闲分区);
分区存储管理方案