
有关操作系统的经典难题解答
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本书深入浅出地解析了操作系统领域内一系列经典难题,旨在帮助读者理解并掌握操作系统的核心原理与实现技术。
设计内容: 进程死锁的检测可以通过资源分配图化简来判断是否有死锁发生。
设计要求:
- 建立所需的数据结构。
- 从文件中读取资源分配的情况(自定义文件格式)。
- 编写资源分配图的化简算法。
- 每次化简一步后,在屏幕上显示当前结果。
- 最终给出结论,判断是否发生死锁。如果存在死锁,则指出哪些进程和相关资源。
设计思路:
程序涉及两个主要方面:进程与资源。两者通过占有和申请关联起来。对于每一个进程Pi,建立“占有”和“申请”的数据结构来保存与其相关的资源(因为事先不知道具体数量,故使用Vector作为数据结构)。同时记录总的处理的进程数目和资源数目。
从文件读入资源及进程的情况时需进行判断:
- 处理的资源与进程数不得超过500。
- 资源及进程编号不得超出相应范围且不小于零。
- 初始情况下,所有进程拥有的第i类资源总数不应超过该类别总的可用数量。
理论上化简顺序不影响最终结果。因此,化简过程是不断寻找满足条件(即此进程中申请的所有资源均可获得)的进程进行简化处理(将其占用资源加入work数组),直到找不到符合条件的为止。
然后检查所有进程是否都被简化过;若有未被简化,则表明发生了死锁,并记录下发生死锁的进程编号。为明确哪些具体资源导致了这些进程间的死锁,给定一个入口点采用DFS搜索与该进程相关的其他所有相关联的进程。
为了在每次化简后显示当前状况,定义两个绘图函数:一是根据当前“占有”和“申请”情况绘制整体分配图;二是每简化掉一个进程时删除与其关联的所有边。
程序已在VC++6.0中调试并通过验收。
全部评论 (0)
还没有任何评论哟~


