2021-02-09

[操作系统]——进程同步_ 死锁

此篇博客主要记录进程同步与死锁的相关知识

 

一、基础知识:

1. 临界资源: 一次仅允许一个进程使用的资源。 访问临界资源的那段代码称为临界区

2. 同步 : 又称直接制约关系,两进程需要合作但是依然需要协调先后次序。举例,A通过单缓冲向B提供数据

3. 互斥: 又称间接制约关系。举例, A 和B同时进行打印  

 

二、进程互斥的软件实现方法:

  有四个基本算法:单标志法,双标志先检查, 双标志后检查, Peterson算法

          

 

 

      

 

 

                 

 

 

         最优秀的实现临界区互斥的软件实现方法,Peterson算法

              

 

 

 

三、进程互斥的硬件实现方法

  一般来说有三种基本实现方法: 中断屏蔽方法, TestAndSet (TS 指令 / TSL 指令),Swap指令(XCHG指令)

      

 

 

 

 

四、信号量机制

  用户进程可以使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步

  信号量其实是一个变量(可以是整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1 的信号量。

  原语是一种特殊的程序段,其执行只能一气呵成,不可被中断。原语是由关中断 / 开中断指令实现的。软件解决方案的主要问题是由 "进入区的各种操作无法一气呵成" , 因此如如果能把进入区、推出区的操作都用" 原语 "实现, 使这些操作能一气呵成就能避免问题。

  一对原语wait( S ) 原语 和 signal( S ) 原语,可以把原语理解为我们自己写的函数,函数名分别为wait 和signal,括号里的信号量 S 其实就是函数调用时传入的一个参数。

  wait、signal 原语通常简写为 P 、V 操作。

              -ol

 

 

四、信号量机制实现进程互斥和进程同步

 

  P操作是对资源的申请,V操作时对资源的释放。

 

 

 

 

五、管程的定义和基本特征

引入管程的目的就是要更方便的实现进程互斥和同步

1.需要在管程中定义共享数据

2. 需要在管程中定义访问这些共享数据的入口,即封装好的函数

3. 只有通过特定的入口才能共享数据

4. 管程有很多入口,但是每次只开放一个入口,并且只能让一个进程或线程进入

5. 我们可以在管程中设置条件变量及等待/ 唤醒操作以解决同步问题。

 

 

 

 

六、死锁

死锁:各进程互相等待对方手里的资源,导致各个进程都堵塞,无法向前推进

饥饿:长期得不到想要的资源,导致某个进程无法向前推进

死循环:程序员写的bug

1. 预防死锁

① 破坏互斥条件

 

 

 

② 破坏不剥夺条件

③ 破坏请求和保持条件

 

 

 

④ 破坏循环等待条件

 

 

 

2. 避免死锁

 

 

 

 

 

 

3. 检测和解除

系统检测算法:用于检测系统状态,以确定系统中是否发生了死锁

死锁解除算法:当认定系统中已经发生了死锁,利用该算法可将系统从死锁状态中解脱出来

 









原文转载:http://www.shaoqun.com/a/540597.html

跨境电商:https://www.ikjzd.com/

c88:https://www.ikjzd.com/w/1017

auditor:https://www.ikjzd.com/w/2437


此篇博客主要记录进程同步与死锁的相关知识一、基础知识:1.临界资源:一次仅允许一个进程使用的资源。访问临界资源的那段代码称为临界区2.同步:又称直接制约关系,两进程需要合作但是依然需要协调先后次序。举例,A通过单缓冲向B提供数据3.互斥:又称间接制约关系。举例,A和B同时进行打印二、进程互斥的软件实现方法:  有四个基本算法:单标志法,双标志先检查,双标志后检查,Peterson算法      最
kk馆:kk馆
心怡:心怡
收藏:关于亚马逊禁售和限制性销售商品的相关信息汇总!:收藏:关于亚马逊禁售和限制性销售商品的相关信息汇总!
黑五前3天推广怎么做?亚马逊IPI指标要放松?黑五冲刺加紧做起来:黑五前3天推广怎么做?亚马逊IPI指标要放松?黑五冲刺加紧做起来
分享一个通过二审的成功案例(内附模板)!:分享一个通过二审的成功案例(内附模板)!

No comments:

Post a Comment