(OS)实现互斥的方法
一、软件方法(3种):
①单标记法:该算法设置一个公用整型变量turn,用于指示被允许进入临界区的进程编号,即若turn=0,则允许P0进程进入临界区。该算法可确保每次只允许一个进程进入临界区。
②双标志法先检查法:该算法的基本思想是在每一个进程访问临界区资源之前,先查看一下临界资源是否正被访问,若正被访问,该进程需等待;否则,进程才进入自己的临界区。为此,设置了一个数据flag[i],如第i个元素值为FALSE,表示Pi进程未进入临界区,值为TRUE,表示Pi进程进入临界区。
③双标志法后检查法:算法二是先检测对方进程状态标志后,再置自己标志,由于在检测和放置中可插入另一个进程到达时的检测操作,会造成两个进程在分别检测后,同时进入临界区。为此,算法三釆用先设置自己标志为TRUE后,再检测对方状态标志,若对方标志为TURE,则进程等待;否则进入临界区。
④Peterson算法:为了防止两个进程为进入临界区而无限期等待,又设置变量turn,指示不允许进入临界区的进程编号,每个进程在先设置自己标志后再设置turn 标志,不允许另一个进程进入。这时,再同时检测另一个进程状态标志和不允许进入标志,这样可以保证当两个进程同时要求进入临界区,只允许一个进程进入临界区。
二、硬件方法(3种):
①中断屏蔽方法(关中断):当一个进程正在使用处理机执行它的临界区代码时,要防止其他进程再进入其临界区访问的最简单的方法是:禁止一切中断发生,或称之为屏蔽中断、
②TestAndSet指令:这条指令是原子操作,即执行该代码时不允许被中断。其功能是:读出指定标志后把该标志设置为真。
③ Swap 指令:该指令的功能是交换两个字(字节)的内容,逻辑同TSL。
三、信号量:利用PV 操作实现互斥
四、管程:利用管程可以更方便地实现进程互斥,且互斥由编译器负责实现。
以上内容引自-王道考研
王道考研-操作系统
to be continued
how
2020/3/23