当前位置: 首页 > 编程笔记 >

操作系统中的信号量

舒仲渊
2023-03-14
本文向大家介绍操作系统中的信号量,包括了操作系统中的信号量的使用技巧和注意事项,需要的朋友参考一下

信号量是整数变量,用于通过使用两个原子操作(用于等待进程和信号)来解决临界区问题,它们用于进程同步。

等待和信号的定义如下-

  • 等待

    如果为正数,则等待操作会减小其参数S的值。如果S为负或零,则不执行任何操作。

wait(S)
{
   while (S<=0);

   S--;
}
  • 信号

    信号运算会增加其参数S的值。

signal(S)
{
   S++;
}

信号量的类型

信号量有两种主要类型,即计数信号量和二进制信号量。有关这些的详细信息如下-

  • 计数信号量

    这些是整数值信号量,并且具有不受限制的值域。这些信号量用于协调资源访问,其中信号量计数是可用资源的数量。如果添加了资源,则信号灯计数会自动增加;如果删除了资源,则计数将减少。

  • 二进制信号量

    二进制信号量类似于计数信号量,但是它们的值限制为0和1。仅当信号量为1时,等待操作才有效;当信号量为0时,信号操作成功。与对信号量进行计数相比,实现二进制信号量有时更容易。

信号量的优点

信号量的一些优点如下-

  • 信号量仅允许进入关键部分的一个过程。它们严格遵循互斥原理,比其他同步方法要有效得多。

  • 由于在信号量中忙于等待,因此不会浪费资源,因为不会不必要地浪费处理器时间来检查是否满足条件以允许进程访问关键部分。

  • 信号量是通过微内核的与机器无关的代码实现的。因此它们是与机器无关的。

信号量的缺点

信号量的一些缺点如下-

  • 信号量很复杂,因此必须以正确的顺序执行等待和信号操作以防止死锁。

  • 信号量对于最终规模的使用不切实际,因为它们的使用会导致模块化的丧失。发生这种情况是因为等待和信号操作阻止了系统的结构化布局的创建。

  • 信号量可能导致优先级倒置,其中低优先级进程可以先访问关键部分,然后再访问高优先级进程。

 类似资料:
  • 前言:异常控制流 每个进程对应的程序文件由一条一条的指令组成。进程在执行的时候,会将程序文件加载到进程的内存空间中,这些指令在内存空间中是相邻的。进程会通过调整程序计数器 PC 的值,一条一条地执行指令。我们将进程执行的指令序列叫做处理器的「控制流」。 正常情况下,进程可能会顺序执行相邻的指令(“平滑的”序列),也可能通过跳转、调用和返回等程序指令转移到另一个位置开始执行(平滑流的突变)。无论是前

  • 本文向大家介绍操作系统中的信号量和监视器之间的区别,包括了操作系统中的信号量和监视器之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解操作系统中的信号量和监视器之间的区别- 信号 它是一个整数变量。 此整数变量的值表明系统中可用的共享资源的数量。 当任何进程有权访问共享资源时,它将对信号量执行“等待”操作(使用wait方法)。 当进程释放共享资源时,它将对信号量执行“信号”操

  • 问题内容: 我还无法找出如何使用PHP进行操作,并想尝试找出答案。 我注意到他们列出了,其中提供了有关浏览器的大量信息。他们是从中获取操作系统信息还是从别的东西获取操作系统信息?有没有我可以用来获取用户操作系统的API? 我知道他们是如何获得浏览器和IP的,但无法弄清操作系统部分! 问题答案: 下面的代码可以单独说明如何显示某人正在使用哪个操作系统。 它的作用是嗅探您的核心操作系统模型,例如作为我

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 问题内容: 我目前正在构建一个Java应用程序,该应用程序最终可能在许多不同的平台上运行,但主要是Solaris,Linux和Windows的变体。 是否有人能够成功提取信息,例如当前使用的磁盘空间,CPU利用率和底层操作系统中使用的内存?Java应用程序本身正在消耗什么呢? 最好我不使用JNI来获取此信息。 问题答案: 你可以从Runtime类中获取一些有限的内存信息。确实不是你要找的东西,但我

  • sed sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的