上锁原语
算法 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;
}
⭐⭐⭐持续更新.....
⭐⭐⭐每天提醒自己,自己就是个菜鸡!
⭐⭐⭐如果对您有帮助留下的每一个点赞、收藏、关注是对菜鸡创作的最大鼓励❀
⭐⭐⭐有相关问题可以写在评论区,一起学习,一起进步。