(1)互斥条件
为了破坏互斥条件,就要允许多个进程同时访问资源。但是这会受到资源本身固有特性的限制,有些资源根本不能同时访问,只能互斥访问,如打印机就不允许多个进程在其运行期间交替打印数据,打印机只能互斥使用。由此看来,企图通过破坏互斥条件防止死锁的发生是不大可能的。
(2)不剥夺条件
为了破坏不剥夺条件,可以制定这样的策略:一个已获得了某些资源的进程,若新的资源请求不能立即得到满足,则它必须释放所有已获得的资源,以后需要资源时再重新申请。这意味着,一个进程已获得的资源在运行过程中可以被剥夺,从而破坏了不剥夺条件。
该策略实现起来比较复杂,释放己获得的资源可能造成前一段工作的失效,重复申请和释放资源会增加系统开销,降低系统吞吐量。这种方法常用于状态易于保存和恢复的资源,如CPu的寄存器及内存资源,一般不能用于打印机之类的资源。
(3)请求和保持条件
为了破坏请求和保持条件,可以采用静态资源分配法。静态资源分配法要求进程在其运行之前一次申请它所需要的全部资源,在它的资源未满足前,不把它投入运行。一旦投入运行后,这些资源就一直归它所有,也不再提出其他资源要求,这样就可以保证系统不会发生死锁。
这种方法既简单又安全,但降低了资源利用率。采用这种方法必须事先知道作业(或进程)需要的全部资源,即使有的资源只在运行后期使用,甚至有的资源在正常运行中根本不用,也不得不预先统一申请,结果使得系统资源不能充分利用。以打印机为例,一个作业可能只在最后完成时才需要打印计算结果,但在作业运行前就把打印机分配给了它,那么在作业整个执行过程中打印机基本处于闲置状态。
(4)循环等待条件
为了破坏循环等待条件,可以采用有序资源分配法。有序资源分配法的实现思想是将系统中的所有资源都按类型赋予一个编号(如打印机为1,磁带机为2等),要求每一个进程均严格按照编号递增的次序来申请资源,同类资源一次申请完。也就是说,只要进程提出申请分配资源Ri,则该进程在以后的资源申请中,只能申请资源编号排在R后面的那些资源(i为资源编号),不能再申请资源编号低于R的资源。对资源申请作了这样的限制后,系统中不会再出现几个进程对资源的请求形成环路的情况。
……
第1部分 数据结构
第1章 绪论
1.1 大纲要求
1.2 知识点归整
1.2.1 数据结构的基本概念
1.2.2 算法及其分析
1.2.3 递归算法设计
1.3 例题解析
第2章 线性表
2.1 大纲要求
2.2 知识点归整
2.2.1 线性表的定义
2.2.2 顺序表
2.2.3 单链表
2.2.4 双链表
2.2.5 循环链表
2.2.6 有序表
2.3 例题解析
第3章 栈、队列和数组
3.1 大纲要求
3.2 知识点归整
3.2.1 栈
3.2.2 队列
3.2.3数组和稀疏矩阵
3.3 例题解析
第4章 树与二叉树
4.1 大纲要求
4.2 知识点归整
4.2.1 树的概念
4.2.2 二叉树的概念
4.2.3 二叉树的遍历
4.2.4 二叉树的构造
4.2.5 树和二叉树的相互转换
4.2.6 线索二叉树
4.2.7 二叉排序树
4.2.8 平衡二叉树
4.2.9 哈夫曼树
4.3 例题解析
第5章 图
5.1 大纲要求
5.2 知识点归整
5.2.1 图的基本概念
5.2.2 图的存储结构
5.2.3 图的遍历
5.2.4 最小生成树
5.2.5 最短路径
5.2.6 拓扑排序
5.2.7 关键路径
5.3 例题解析
第6章 查找
6.1 大纲要求
6.2 知识点归整
6.2.1 查找的基本概念
6.2.2 线性表
6.2.3 B一树
6.2.4 B+树
6.2.5 哈希表
6.3 例题解析
第2部分 计算机组成原理
第7章 内部排序
7.1 大纲要求
7.2 知识点归整
7.2.1 排序的基本概念
7.2.2 插入排序
7.2.3 交换排序
7.2.4 选择排序
7.2.5 归并排序
7.2.6 基数排序
7.3例题解析
第8章 计算机系统概述
8.1 大纲要求
8.2 知识点归整
8.2.1 计算机发展历程
8.2.2 计算机系统层次结构
8.2.3 计算机的性能指标
8.3 例题解析
第9章 数据的表示和运算
9.1 大纲要求
9.2 知识点归整
…
第3部分 计算机操作系统
第4部分 计算机网络