操作系统学习笔记(12) 死锁问题
来源:互联网 发布:同志交友软件blued 编辑:程序博客网 时间:2024/05/16 11:53
1 例子,
2 P进程:get(A), get(B), relese(A), relase(B)
3 Q进程:get(A), get(B), relese(A), relase(B)
4
5 死锁区:
6 P获得了A,还没获得B,下面将申请B
7 Q获得了B,还没获得A,下面将申请A
8
9 修改P、Q代码:
10 P进程:get(A), relase(A), get(B), relase(B)
11 Q进程:get(B), relase(B), get(A), relase(A)
12
13 引起死锁的原因:
14 1。竞争可重用资源
15 2。竞争可消耗资源
16
17 产生死锁的条件:
18 1。互斥
19 2。占有且等待。
20 3。非剥夺:进程占有的资源不能被其他进程强行剥夺。
21 4。循环等待。
22
23 解决死锁的方法:
24 1。预防死锁:破坏产生死锁的必要条件,降低系统资源的利用率。
25 2。避免死锁:预测判断,如果可能有死锁可能就不分配资源。
26 如何避免系统进入不安全状态。
27 安全状态可能向不安全状态转换。
28 银行家算法:
29 数据结构,
30 (1).可利用资源向量available[s]。
31 (2).最大需求矩阵:max(n,m)。max(i, j)表示进程i需要j类资源的最大数。
32 (3).分配矩阵:allocation。allocation(i, j)表示进程i已获得的j类资源的数目。
33 (4).需求矩阵:need。need(i, j)表示进程i还需要j类资源的个数。
34 进程P,request.将进行下面步骤检查:
35 1。if( request <= need ){
36 if( request <= available ){
37 available -= request;
38 allocation += request;
39 need -= request;
40 //安全性检查算法
41 var finish[n];//finish[i]表示进程i获得所有需要的资源,而顺利完成。
42 var work;//表示系统可提供给进程继续运行的资源的集合。
43 100:if(finish(i) = false && need <= work){
44 work = work + allocation;
45 finish(i) = true;
46 goto 100;
47 }else{
48 if(all_finish = true){
49 系统处于安全状态;
50 }else{
51 系统处于不安全状态;
52 }
53 }
54 }else{
55 阻塞;
56 }
57 }else{
58 ERROR;
59 }
60
61
62 避免死锁的限制条件:
63 1。预先申明每个进程需要的资源总量。
64 2。进程之间相互独立,影响进程的并发。
65 3。系统必须提供固定数量的资源。
66 4。若进程占有资源,则不让进程退出系统。
67
68 检测死锁的方法:
69 死锁定理:当且仅当系统某个状态S所对应的资源分配图是不可完全简化的,则S是死锁状态。
70
71 解除死锁:
72 1。撤销死锁进程。
73 2。把死锁进程恢复到前一个检查点,重新执行每个进程。
74 3。按照某种原则一个一个撤销死锁进程。
75 4。按照某种原则一个一个剥夺进程资源,直到解除死锁。
76
77 最小代价原则:
78 1。花费处理机时间最少的进程。
79 2。产生输出最少的进程。
80 3。估计未执行部分最多的进程。
81 4。获得资源最少的进程。
82 5。优先级最低的进程。
- 操作系统学习笔记(12) 死锁问题
- 操作系统学习笔记:死锁
- 操作系统概念学习笔记 13 死锁(一)
- 操作系统概念学习笔记 14 死锁(二)
- 操作系统之死锁——学习笔记
- 求职笔记-操作系统-死锁
- 操作系统 死锁 笔记
- 操作系统--死锁问题
- 操作系统精髓与设计原理学习笔记六:并发(死锁和饥饿)
- 死锁(操作系统)
- 操作系统(死锁)
- 死锁(操作系统)
- 操作系统学习--死锁和饿死
- 操作系统清华向勇陈渝版笔记(九) 同步协同多道程序设计和并发问题,同步互斥,死锁,临界区
- 【操作系统】学习笔记(二)之生产者消费者问题
- 操作系统学习笔记(二)操作系统结构
- 死锁的学习笔记
- 现代操作系统学习笔记-经典IPC问题
- 过去的2010年
- 刻章不要钱 5个在线印章制作工具
- 文本动态随机加密
- abap describe的用法(程序示例)
- sql中两个日期相减
- 操作系统学习笔记(12) 死锁问题
- G++ 用法详解(转载)
- uda1341声卡的linux 2.6.29版本内核驱动在arm s3c2440上的移植
- ChinaMode评选:2010最受瞩目的45个初创公司/产品
- Debug中heapchk.c文件HeapValidate问题
- 让程序只能运行一次
- 安装vmWare Tools
- 在nand flash上实现JFFS2根文件文件系统
- Web打印控件设计