专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

操作系统——信号量

前言

简单介绍一下信号量。

信号量有两种一种整型型号量,另一种记录型信号量。

这个可以用来解决进程互斥,前面提及到的进程互斥没有实现原则——让权等待。

让权等待是这样子的,比如说我这个进程要执行,然后发现资源不足,那么就应该主动进入到阻塞态,而不是说等待时间片的执行完毕。

正文

用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而实现进程的互斥、进程同步。

信号量其实是一个变量,可以是一个整型也可是是更复杂的记录值变量,可以用信号量表示系统中某种资源的数量。

76_1.png

我们在调用操作系统的pv操作的时候和调用普通函数操作的区别,在于对信号量只有3种操作,即初始化、p操作、v操作。

整型信号量

76_2.png

记录型信号量

76_3.png

76_4.png

过程:

比如说资源为打印机2,然后有下面这几个进程。

假设一开始是这样的:
76_5.png

然后1、2进程占用了:

76_6.png

然后p3,p4进来了,资源数量为-2,阻塞队列为p3和p4,这个时候是p3没有获取到资源然后value-1,阻塞加入到阻塞队列中:

76_7.png

这个时候如果进程1用完了资源然后释放,然后value变成-1,如果value小于等于0,之后会检查该资源的阻塞进程中是否有等待,如果有那么会唤醒p3进程,

然后p3进程开始使用资源。p3用完,然后value变成0,如果value小于等于0,之后会检查该资源的阻塞进程中是否有等待,然后调用p4。这是单核处理机的结果,如果多核结果顺序多种,但是机制相同。

76_8.png

文章永久链接:https://tech.souyunku.com/46637

未经允许不得转载:搜云库技术团队 » 操作系统——信号量

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们