zoukankan      html  css  js  c++  java
  • 重新整理操作系统概念系类——信号量

    前言

    简单介绍一下信号量。

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

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

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

    正文

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

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

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

    整型信号量

    记录型信号量

    过程:

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

    假设一开始是这样的:

    然后1.2进程占用了:

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

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

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

  • 相关阅读:
    JS和Flash相互调用
    xml的应用
    随机验证码
    模块 time
    第一天 注册成功
    我的第一篇博客
    git
    2018-02-27
    25
    建站之星
  • 原文地址:https://www.cnblogs.com/aoximin/p/13533043.html
Copyright © 2011-2022 走看看