Skip to content

Commit 7ec0442

Browse files
committed
auto commit
1 parent 66bc75d commit 7ec0442

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

notes/计算机操作系统.md

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
* [三、死锁](#三死锁)
1616
* [死锁的必要条件](#死锁的必要条件)
1717
* [死锁的处理方法](#死锁的处理方法)
18+
* [鸵鸟策略](#鸵鸟策略)
19+
* [死锁检测与死锁恢复](#死锁检测与死锁恢复)
20+
* [死锁预防](#死锁预防)
21+
* [死锁避免](#死锁避免)
1822
* [四、内存管理](#四内存管理)
1923
* [虚拟内存](#虚拟内存)
2024
* [分页系统地址映射](#分页系统地址映射)
@@ -603,19 +607,28 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
603607

604608
## 死锁的处理方法
605609

606-
### 1. 鸵鸟策略
610+
主要有以下四种方法:
611+
612+
- 鸵鸟策略;
613+
- 死锁检测与死锁恢复
614+
- 死锁预防
615+
- 死锁避免
616+
617+
## 鸵鸟策略
607618

608619
把头埋在沙子里,假装根本没发生问题。
609620

610-
因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。
621+
因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。
622+
623+
当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。
611624

612625
大多数操作系统,包括 Unix,Linux 和 Windows,处理死锁问题的办法仅仅是忽略它。
613626

614-
### 2. 死锁检测与死锁恢复
627+
## 死锁检测与死锁恢复
615628

616629
不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。
617630

618-
(一)每种类型一个资源的死锁检测
631+
### 1. 每种类型一个资源的死锁检测
619632

620633
<div align="center"> <img src="../pics//b1fa0453-a4b0-4eae-a352-48acca8fff74.png"/> </div><br>
621634

@@ -625,7 +638,7 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
625638

626639
每种类型一个资源的死锁检测算法是通过检测有向图是否存在环来实现,从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有向图存在环,也就是检测到死锁的发生。
627640

628-
(二)每种类型多个资源的死锁检测
641+
### 2. 每种类型多个资源的死锁检测
629642

630643
<div align="center"> <img src="../pics//e1eda3d5-5ec8-4708-8e25-1a04c5e11f48.png"/> </div><br>
631644

@@ -646,35 +659,35 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
646659
2. 如果找到了这样一个进程,那么将 C 矩阵的第 i 行向量加到 A 中,标记该进程,并转回 1。
647660
3. 如果没有这样一个进程,算法终止。
648661

649-
(三)死锁恢复
662+
### 3. 死锁恢复
650663

651664
- 利用抢占恢复
652665
- 利用回滚恢复
653666
- 通过杀死进程恢复
654667

655-
### 3. 死锁预防
668+
## 死锁预防
656669

657670
在程序运行之前预防发生死锁。
658671

659-
(一)破坏互斥条件
672+
### 1. 破坏互斥条件
660673

661674
例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。
662675

663-
(二)破坏占有和等待条件
676+
### 2. 破坏占有和等待条件
664677

665678
一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。
666679

667-
(三)破坏不可抢占条件
680+
### 3. 破坏不可抢占条件
668681

669-
(四)破坏环路等待
682+
### 4. 破坏环路等待
670683

671684
给资源统一编号,进程只能按编号顺序来请求资源。
672685

673-
### 4. 死锁避免
686+
## 死锁避免
674687

675688
在程序运行时避免发生死锁。
676689

677-
(一)安全状态
690+
### 1. 安全状态
678691

679692
<div align="center"> <img src="../pics//ed523051-608f-4c3f-b343-383e2d194470.png"/> </div><br>
680693

@@ -684,15 +697,15 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
684697

685698
安全状态的检测与死锁的检测类似,因为安全状态必须要求不能发生死锁。下面的银行家算法与死锁检测算法非常类似,可以结合着做参考对比。
686699

687-
(二)单个资源的银行家算法
700+
### 2. 单个资源的银行家算法
688701

689702
一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。
690703

691704
<div align="center"> <img src="../pics//d160ec2e-cfe2-4640-bda7-62f53e58b8c0.png"/> </div><br>
692705

693706
上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。
694707

695-
(三)多个资源的银行家算法
708+
### 3. 多个资源的银行家算法
696709

697710
<div align="center"> <img src="../pics//62e0dd4f-44c3-43ee-bb6e-fedb9e068519.png"/> </div><br>
698711

notes/面向对象思想.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,9 @@ School "1" - "n" Student
235235

236236
和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式:
237237

238-
- A 类是 B 类中的(某中方法的)局部变量
238+
- A 类是 B 类方法的局部变量
239239
- A 类是 B 类方法当中的一个参数;
240-
- A 类向 B 类发送消息,从而影响 B 类发生变化
240+
- A 类向 B 类发送消息,从而影响 B 类发生变化
241241

242242
<div align="center"> <img src="../pics//LOun2W9134NxVugmbJPp15d4LalxC4O.png"/> </div><br>
243243

0 commit comments

Comments
 (0)