操作系统-进程和线程-同步、互斥、死锁

目录

一、同步互斥

 二、互斥的实现方法

2.1软件实现

2.1.1单标志法

2.1.2双标志先检查

2.1.3双标志后检查

2.1.4Petersons算法

2.2硬件实现

2.2.1 TestAndSet指令

2.2.2 Swap指令 

 三、信号量机制

3.1整形变量

 3.2 记录型变量

 3.3用信号量实现进程互斥、同步、前驱关系

3.3.1互斥

 3.3.2同步

3.3.3前驱关系

四、同步和互斥经典问题

4.1 生产者-消费者问题

 4.2多生产多消费问题

 4.3 吸烟者问题

 4.4 读写者问题

 4.5 哲学家进餐问题

 五、管程

 六、死锁

6.1死锁产生得必要条件

6.2发生死锁的时候

七、死锁的处理策略

 7.1预防死锁 静态策略

7.2 避免死锁(银行家算法)动态策略

7.3 死锁得检测和解除

死锁得检测

死锁得解除


一、同步互斥

操作系统-进程和线程-同步、互斥、死锁_第1张图片

 二、互斥的实现方法

2.1软件实现

2.1.1单标志法

两个进程在访问完临界区后会使用临界区的权限转交给另一个进程,也就是说每个进程进入临界区的权限只能被另一个进程赋予

操作系统-进程和线程-同步、互斥、死锁_第2张图片

只能轮流使用 

2.1.2双标志先检查

操作系统-进程和线程-同步、互斥、死锁_第3张图片

2.1.3双标志后检查

操作系统-进程和线程-同步、互斥、死锁_第4张图片

2.1.4Petersons算法

操作系统-进程和线程-同步、互斥、死锁_第5张图片

2.2硬件实现

中断屏蔽方法:利用“开/关中断指令”实现

关中断-》临界区-》开中断

2.2.1 TestAndSet指令

简称TS或TSL

操作系统-进程和线程-同步、互斥、死锁_第6张图片

2.2.2 Swap指令 

操作系统-进程和线程-同步、互斥、死锁_第7张图片

 三、信号量机制

信号量其实就是一个变量(可以是一个整数,也可以是复制的记录型变量),可以用一个信号量表示系统中某种资源数量

一对原语:wait(s)和signal(s),简称P(s),V(s)

3.1整形变量

表示系统中某种资源的数量

操作系统-进程和线程-同步、互斥、死锁_第8张图片

 3.2 记录型变量

操作系统-进程和线程-同步、互斥、死锁_第9张图片

 3.3用信号量实现进程互斥、同步、前驱关系

3.3.1互斥

操作系统-进程和线程-同步、互斥、死锁_第10张图片

 3.3.2同步

 并发进程要求有序的推进

操作系统-进程和线程-同步、互斥、死锁_第11张图片

3.3.3前驱关系

操作系统-进程和线程-同步、互斥、死锁_第12张图片

四、同步和互斥经典问题

实现互斥P操作一定要早实现同步P操作后

4.1 生产者-消费者问题

操作系统-进程和线程-同步、互斥、死锁_第13张图片

 4.2多生产多消费问题

 4.3 吸烟者问题

操作系统-进程和线程-同步、互斥、死锁_第14张图片

 4.4 读写者问题

操作系统-进程和线程-同步、互斥、死锁_第15张图片

 4.5 哲学家进餐问题

操作系统-进程和线程-同步、互斥、死锁_第16张图片

 五、管程

管程是一种特殊的软件模块,有这些部分组成:

1.局部于管程的共享数据结构说明

2.对该数据结构进行操作的一组过程

3.对局部于管程的共享数据结构设置初始值语句

4.管程有一个名字

基本特征:
1.局部于管程的数据只能被局部于管程的过程访问

2.一个进程只有通过调用管程内的过程才能进入管程访问共享数据

3.每次仅允许一个进程在管程内执行某个内部过程

 用管程解决生产者消费者问题操作系统-进程和线程-同步、互斥、死锁_第17张图片

 六、死锁

死锁:多个进程竞争资源造成的一种僵局(相互等待),若无外力作用,这些进程是无法向前推进的

饥饿:由于长期得不到想要资源,某进程无法向前推进现象。

死循环:某进程执行过程中一直跳不出某个循环得现象。

6.1死锁产生得必要条件

1.互斥条件:只有对必须互斥使用得资源的争抢才会导致死锁

2.不剥夺条件:进程所获得的资源在未完成之前,不能由其他进程强行夺走,只能主动释放

3.请求和保存条件:进程已经保持了至少一个资源,但又提出新资源请求,而该资源又被其他进程占有,此时进程阻塞又对已有资源保持不放

4.循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个资源请求

6.2发生死锁的时候

操作系统-进程和线程-同步、互斥、死锁_第18张图片

七、死锁的处理策略

操作系统-进程和线程-同步、互斥、死锁_第19张图片

 7.1预防死锁 静态策略

破坏互斥条件:SPOOLing技术、

破坏不剥夺条件:1.得不到资源,就释放全部资源,以后要就重新请求                                                                         2.系统协助,直接剥夺其他资源自己使用

破坏请求和保持条件:静态分配法:进程运行前一次申请完所需得全部资源,资源未满足前不让它投入使用,一旦投入使用就一直归它所有     资源利用率低,可能饥饿

破坏循环等待条件:顺序资源分配法:

7.2 避免死锁(银行家算法)动态策略

操作系统-进程和线程-同步、互斥、死锁_第20张图片

7.3 死锁得检测和解除

死锁得检测

操作系统-进程和线程-同步、互斥、死锁_第21张图片

死锁得解除

1.资源剥夺法:挂起某些死锁进程,并抢占它得资源,将这些资源分配给其他死锁进程,但防止给i去得长期得不到资源而饥饿

2.撤销进程法:强制撤销部分、甚至全部死锁进程,并剥夺这些进程得资源,简单但代价大,有些进程运行很长时间接近结束,被终止就功亏一篑,还得从头再来

3.进程回退法:让一个或多个死锁进程回退到足以避免死锁的地步,操作系统就要记录信息设置还原点 

你可能感兴趣的:(操作系统#精简知识点笔记,操作系统,笔记)