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

JAVA学习网 2021-02-08 14:01:47

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

 

一、基础知识:

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操作时对资源的释放。

 

 

 

阅读(765) 评论(0)