上锁原语

算法 lock

输入:锁变量w

输出:无

{

test:

if(w==1)

goto test;

else w=1;

}

改进后的上锁原语

算法 lock

输入:锁变量w

输出:无

{

while(w==1){

保护现行进程的CPU现场;

将现行进程的PCB插入w的等待队列;

置该进程为"等待"状态

转进程调度

}

w=1;

}

为什么要改进?

改进前的锁原语中goto语句使进程一直占用处理机来循环测试锁状态,goto语句使lock(w)原语的进程占用处理机而等待进入互斥段(称为忙等待)测试法,浪费CPU时间.

改进后提高了CPU利用率,节省时间,不会存在忙等待。

开锁原语

算法:unlock

输入:锁变量w

{

w=0;

}

改进后的开锁原语

算法 lock

输入:锁变量w

输出:无

{

if(w等待队列不空){

移出等待队列首元素;

将该进程的PCB插入就绪队列;

置该进程为"就绪"状态;

}

w=0;

}

⭐⭐⭐持续更新.....

⭐⭐⭐每天提醒自己,自己就是个菜鸡!

⭐⭐⭐如果对您有帮助留下的每一个点赞、收藏、关注是对菜鸡创作的最大鼓励❀

⭐⭐⭐有相关问题可以写在评论区,一起学习,一起进步。