处理机管理——进程互斥的软件实现
作者:互联网
单标记法:
算法思想:两个进程在访问临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予
只有当前允许进入临界区的进程在访问了临界区之后,才会修改当前允许进入临界区的进程号的值。也就是说,对于临界区的访问是轮流访问。这种必须“轮流访问”带来的问题是,如果此时允许进入临界区的进程一直不访问临界区,那么虽然此时临界区空闲,但是并不允许其他进程访问。因此,单标志法存在的主要问题是:违背“空闲让进”原则。
双标志先检查法:
算法思想:设置一个能表示各进程想进入临界区的意愿的标记,意味着某进程现在想要进入临界区。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志设为进入,之后开始访问临界区。
双标志先检查法的主要问题是:违反“忙则等待”原则。原因在于,进入区的“检查”和“上锁”两个处理不是一气呵成的。“检查”后“上锁”前可能发生进程切换。
双标志后检查法:
算法思想:先“上锁”后“检查”的方法(双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题)
双标志后检查法虽然解决了“忙则等待”的问题,但是又违背了“空闲让进”和“有限等待”原则,会因各进程都长期无法访问临界资而产生“饥饿”现象。
两个进程都争着想进入临界区,但是谁也不让谁,最后谁都无法进入临界区。
Peterson算法
算法思想:在进入区“主动争取一主动谦让一检查对方是否想进、己方是否谦让“
解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是
依然未遵循让权等待的原则。会发生“忙等“
忙等状态:当一个进程正处在某临界区内,任何试图进入其临界区的进程都必须进入代码连续循环,陷入忙等状态。连续测试一个变量直到某个值出现为止,称为忙等。(没有进入临界区的正在等待的某进程不断的在测试循环代码段中的变量的值,占着处理机而不释放,这是一种忙等状态) 这个时候应该释放处理机让给其他进程
标签:处理机,访问,算法,互斥,临界,进入,检查法,进程,软件 来源: https://www.cnblogs.com/LXZYZDCZL/p/16197313.html