操作系统复习笔记1:实现临界区同步机制有哪些方法?

实现临界区同步机制的方法如下:

软件方法:尝试算法1(忙等&不能保证进程互斥进入临界区-->2个都用);尝试算法2(忙等&死锁--->2个都不能用qwq);Peterson算法(比较理想,忙等--->孔融让梨嘤嘤嘤);

硬件方法:禁止中断法(不适用);特殊指令法(TS指令(Test And Test),exchange(SWAP))---->忙等,空循环qwq

开放的并发的环境,执行的相对速度无法相互控制,就会出现所谓与时间有关的错误。(与时间片的轮转RR有关哦)

多终端系统:学校的教务系统(手动滑稽)

实现临界区( critical section )管理软件硬件两种方式。

软件方法:尝试算法1(忙等&不能保证进程互斥进入临界区-->2个都用);尝试算法2(忙等&死锁--->2个都不能用qwq)Peterson算法(比较理想,忙等--->孔融让梨嘤嘤嘤)

CPU与内存的访问是一对一的,只能是一个一个的,当然速度非常快,一般在10ns周期内。

 

单独的内部逻辑比较完美,如何找与时间有关错呢,考虑时间片轮转,寻找那一寸的错误(天道好轮回,苍天饶过谁2333)。

临界区的管理尝试(1)就是有这种其情况:

进程P1的while(inside2);执行完后时间片恰好用完,----->P2的while(inside1)执行完后其分配的时间片恰好用完--->

P1去进入临界区----->P2去进入临界区。出现与时间有关的错误qwq。

先修改自己的逻辑变量,再判断对方是不是在临界区。看样子似乎不错了2333

但是:这个算法是有缺点的:

可能都进不去的死锁

P1的inside1=true执行完时间片用完-->P2的inside2=true执行完时间片用完-->P1死循环——————>P2死循环

Peterson算法:bool flag[n]--->意愿;turn----->轮次

让全等待,"我想进来之前,我先礼让三分2333!"仁者无敌的哲学了2333

硬件方法:禁止中断法(不适用);特殊指令法(TS指令(Test And Test),exchange(SWAP))

x就跟empty似的,2333!

others;

Be countinued!!!!!!

原文地址:https://www.cnblogs.com/dragondragon/p/12578620.html