文章目录
- 1、操作系统
- 一、死锁的定义、原因和必要条件
- a.死锁的定义
- b.死锁的原因
- c.死锁产生的必要条件
- 二、如何预防死锁?
- 2、计算机网络
- 一、TCP和UDP的相同点
- 二、TCP和UDP的区别
标记文字记忆,加粗文字注意,普通文字理解。
1、操作系统
一、死锁的定义、原因和必要条件
a.死锁的定义
死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
例子:
b.死锁的原因
- 系统资源的竞争
- 必须是不可剥夺资源的竞争,对可剥夺资源的竞争是不会引起死锁的。
- 如上面提到的例子,进程p1请求p2的打印机,p2请求p1占用的输入设备,都进入阻塞态,这两个设备都是不可剥夺资源,它们互相等待对方释放,但对方都进入阻塞态都不会释放,引起死锁。
- 进程推进顺序非法
- 进程推进顺序非法指的是多个进程在执行和资源请求时的顺序可能导致系统进入无法继续执行任何进程的状态。这种情况通常涉及到进程间的资源分配和释放的顺序问题。
- 如上面提到的例子,进程p1和p2循环等待,如果系统允许这种资源请求顺序发生,就可能导致循环等待,从而形成死锁。
c.死锁产生的必要条件
产生死锁必须同时满足以下4个条件,只要其中任意一个条件不成立,死锁就不会发生。
- 互斥:资源独占,一段时间内资源仅为一个进程所占有。
- 不可剥夺:资源不可剥夺,一个进程获得的资源还没使用完之前,不能被其他进程抢走。
- 请求并保持:进程手里至少有一个资源,但是又请求其他资源,而这个资源已经被其他进程占有。 进程进入阻塞态,并保持资源不放。
- 循环等待:例如上面提到的例子,我等你的资源,你等我的资源,或者是一条循环等待链。
记忆:互 请 不 询 (互相邀请,但不询问彼此来不来)。
互斥(资源)、请求并保持、不可剥夺(资源)、xun环等待
二、如何预防死锁?
预防:防止出现死锁
死锁预防:设置某些限制条件,破坏产生死锁的4个必要条件中的一个或几个。
方法:
- 进程一次分配到所有资源:破坏请求并保持,要么不拿,要么一开始就拿到所有资源,执行时不可能出现请求,因此破坏了请求并保持。
- 资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待条件)
- 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资
源(破坏不可剥夺条件)
学有余力的家伙可以看看:
死锁面试题(什么是死锁,产生死锁的原因及必要条件)
2、计算机网络
湖科大计网:传输层
TCP
:
UDP
:
TCP和UDP的异同点
一、TCP和UDP的相同点
- TCP 和 UDP 都是在网络层,都是传输层协议,双方的通信都需要开放端口。
- TCP和UDP的检验和都检验数据部分和首部。
二、TCP和UDP的区别
- TCP是面向连接的可靠传输;UDP是无连接的不可靠传输。
- TCP 提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一
端;UDP 不提供可靠性,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能
到达目的地 - TCP首部都是不固定长度的;UDP的首部长度是固定的8B;