王道《操作系统》学习(二)——进程管理(三)

本文详细讨论了进程同步和互斥的原理,包括软件实现方法(如单标志法、双标志法和Peterson算法)、硬件实现(中断屏蔽、TestAndSet和Swap指令)以及互斥锁和信号量机制,特别是信号量如何解决忙等待问题并实现进程同步和前驱关系。
摘要由CSDN通过智能技术生成

2.3.1 进程同步、进程互斥

(1)进程同步

在这里插入图片描述
在这里插入图片描述

(2)进程互斥

在这里插入图片描述

  • “同时”指的是宏观上的同时,微观上可能这些进程是交替地在访问这些共享资源的
    在这里插入图片描述
  • 当“上锁”后,其他的进程想要访问临界资源时,在进入区进行检查就会发现此时已经有一个进程正在访问临界资源,那么其他的进程就会被阻止进入临界区访问临界资源
  • 要通过打印机打印输出的话,对打印机执行写操作这段代码就需要写在临界区里

在这里插入图片描述

  • 忙等待:这个进程暂时没办法往下推进了,但是这个进程还一直占用着处理机,使处理机一直处于忙碌的状态,没有办法给别的进程进行服务
    在这里插入图片描述

2.3.2 实现进程互斥的软件实现方法

在这里插入图片描述
在这里插入图片描述

(1)单标志法

在这里插入图片描述
在这里插入图片描述

(2)双标志先检查法

在这里插入图片描述
在这里插入图片描述

(3)双标志后检查法

在这里插入图片描述
在这里插入图片描述

(4)Peterson 算法

在这里插入图片描述

  • 尽管各个进程是并发运行的,但是它们对turn值的设置肯定有先后顺序,最后是谁设置了turn值,就说明最后是谁作出了“谦让”的动作,这个进程就会失去行动的优先权,它就会让对方优先进入临界区

在这里插入图片描述
在这里插入图片描述

  • 如果此时进程进不了临界区,那么就应该立即释放处理机资源而不是继续在CPU上跑,但是该算法的处理方式是让进程一直被卡在while循环,其实自己还一直在CPU上执行,不断地检查while循环的条件是否满足,所以虽然这个进程此时进不了临界区,但它依然会占用CPU资源,故没有满足让权等待的原则
    在这里插入图片描述

2.3.3 实现进程互斥的硬件实现方法

在这里插入图片描述

(1)中断屏蔽方法

在这里插入图片描述

  • 关中断指令只对执行关中断指令的处理机有用

(2)TestAndSet(TS指令/TSL指令)

在这里插入图片描述

(3)Swap指令(XCHG指令)

在这里插入图片描述
在这里插入图片描述

2.3.4 互斥锁

在这里插入图片描述
在这里插入图片描述

2.3.5 信号量机制

在这里插入图片描述

(1)什么是信号量机制

在这里插入图片描述

(2)信号量机制—整型信号量

在这里插入图片描述

  • 用原语来实现“检查”和“上锁”,避免了双标志先检查法那种两个进程同时进入临界区的问题
  • 如果一个进程暂时进不了临界区,它会一直占用处理机循环检查从而导致忙等

(3)信号量机制—记录型信号量

在这里插入图片描述

  • 在这种信号量当中它还会保持一个指向等待这种系统资源的等待队列,指向等待它的那些进程
  • 如果减1之后导致 S.value<0,就说明它在减1之前其实已经没有这种系统资源来分配给当前申请这种资源的进程了,进程主动地执行block原语把自己阻塞,放弃处理机并且把它挂到这个信号量对应的等待队列当中
  • 如果加1之后 S.value<=0,就说明在这个进程释放资源之前依然还有一些进程是处于等待队列的,所以就需要再调用wakeup原语从信号量对应的等待队列当中唤醒其中的某一个进程(一般是队头的进程),让它从阻塞态回到就绪态,并且把它所申请所等待的资源分配给它
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.3.6 用信号量实现进程互斥、同步和前驱关系

在这里插入图片描述

(1)实现进程互斥

在这里插入图片描述

(2)实现进程同步

在这里插入图片描述
在这里插入图片描述

(3)实现前驱关系

在这里插入图片描述
在这里插入图片描述

参考

操作系统笔记(王道考研)第二章 进程管理(2)CSDN:CS_Lee_
王道考研-操作系统-B站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值