计数信号量和二进制信号量之间的区别

2024-02-10

计数和二进制信号量有什么区别。

我在某处看到的是,两者都可以控制 N 个请求资源的进程。 两者都拥有自由邦。

二进制信号量和计数信号量可以保护的资源数量是否有限制?

两者都只允许一个进程一次使用一种资源......

还有其他区别吗?上述属性是否正确?


实际上,这两种类型都用于同步对共享资源的访问,无论尝试访问的实体是进程还是线程。

区别如下:

二进制信号量是二进制的,它们只能有两个值;一个表示进程/线程位于临界区(访问共享资源的代码),其他进程/线程应该等待,另一个表示临界区空闲。

另一方面,计数信号量需要两个以上的值,它们可以是您想要的任何值。 它们采用的最大值 X 允许 X 个进程/线程同时访问共享资源。

有关更多信息,请查看此链接。
http://www.chibios.org/dokuwiki/doku.php?id=chibios:文章:semaphores_mutexes http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:semaphores_mutexes

EDIT
计数信号量可以采用的最大值是您希望同时允许进入临界区的进程数。
同样,您可能会遇到这样的情况:您希望排除某个资源,但您知道该资源可以由最大数量的进程(例如 X)访问,因此您设置了一个值为 X 的计数信号量。

这将允许 X 进程同时访问该资源;然而,进程 X+1 必须等待,直到临界区中的进程之一退出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计数信号量和二进制信号量之间的区别 的相关文章

  • Minix 与 Linux 相比如何学习操作系统设计?

    我想学习操作系统设计 我想知道在此过程中我是否应该解决 Minix 或 GNU Linux 问题 我喜欢书籍 所以我主要关注一本书 尽管视频资源 大概是录像讲座 也很受欢迎 我已经正式学习了 C 和 C 可以用它们编写中小型程序 我对数据结
  • 使用易失性变量和信号量 - Java

    我从线程 信号量 易失变量等开始 我想知道当我使用信号量时是否有必要将变量定义为易失性 我的意思是 有 2 个线程 一个增加变量 另一个减少变量 例如 显然 在每次访问之前 我有一个互斥体 它随时控制只有一个线程正在 玩 变量 有必要定义为
  • Python 上的 io.open() 和 os.open() 有什么区别?

    我意识到open 我一直在使用的函数是一个别名io open 以及导入 from os会掩盖这一点 通过以下方式打开文件有什么区别io模块和os module io open 是文件 I O 的首选高级接口 它将操作系统级文件描述符包装在一
  • Semaphore.wait(timeout: .now()) 的目的是什么?

    看了一些苹果代码示例 我发现了这一点 func metadataOutput output AVCaptureMetadataOutput didOutput metadataObjects AVMetadataObject from co
  • 如何编写操作系统程序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 不同GIT版本的GIT合并结果不同

    在不同的 GIT 版本上运行 merge 命令我们得到不同的结果 命令是 git merge no ff origin master codeline Results 版本2 1 4 gt 合并成功 版本1 7 1 gt 同一提交上的同一合
  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • Android:等待 firebase valueEventListener

    我正在尝试使用信号量来等待我的 firebase valueEventListener 我有一个用户信息活动 其中包含用户必须填写的 6 个不同字段 当用户保存他 她的信息时 我想进行 全有或全无 类型的检查 某些用户信息不能重复 例如用户
  • 从 Java 应用程序读取的文件是否会调用系统调用?

    我的理解是 请求文件系统路径 例如 aFile 的用户应用程序将调用文件系统并获取所请求文件的虚拟地址 然后应用程序将尝试以该地址作为参数 即作为 CPU 指令 进行读 写操作 执行读取命令时 内存管理单元会将该地址转换为物理地址 并查看页
  • 有没有办法让我的程序用更少的代码运行?

    我为学校作业编写了以下代码 它编译并打印所有正确的消息 但出于我自己的好奇心 我想知道我的代码是否可以缩短并且仍然有效 我尝试了 signal 而不是 sigaction 但我听说 sigaction 比 signal 更受青睐 此外 此任
  • 32 位应用程序在 64 位操作系统上运行得更快还是更慢? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 有什么工具可以了解 Windows 中正在运行的进程的布局(段)?

    我一直很好奇 该进程在内存中到底是什么样子的 其中有哪些不同的部分 部分 程序 在磁盘上 和进程 在内存中 到底是如何相关的 我之前的问题 有关可执行程序 进程 的内存布局的更多信息 https stackoverflow com ques
  • “benaphores”值得在现代操作系统上实施吗?

    当我还是一名 BeOS 程序员时 我读过本文 http www haiku os org legacy docs benewsletter Issue1 26 html Engineering1 26作者 Benoit Schillings
  • python os.rename ""当文件已存在时无法创建该文件

    K 我只是使用在这里找到的一个简单脚本 import os from os import rename listdir print os listdir for filename in os listdir if filename star
  • 在Python中使用子文件夹的名称为每个子文件夹创建空文件

    如果我的文件夹结构如下 folder sub1 sub1 1 sub1 sub1 2 sub1 sub1 3 sub2 sub2 1 sub2 sub2 2 sub2 sub2 3 我想让每个子文件夹的文件使用子文件夹的名称 我怎样才能用P
  • 信号量如何工作?

    信号量可以小于0吗 我的意思是 假设我有一个 N 3 的信号量 并且我调用 down 4 次 那么 N 将保持为 0 但一个进程将被阻塞 反之亦然 如果一开始我调用 N 可以大于 3 吗 因为在我看来 如果 N 可以高于 3 如果一开始我调
  • 软件堆栈和操作系统有什么区别?为什么Android不是操作系统而是软件堆栈?

    Android 是一个软件堆栈 但不是一个操作系统 正如developer android com所述 什么是安卓 Android 是一个适用于移动设备的软件堆栈 包括操作系统 中间件和关键应用程序 这 Android SDK 提供了开始开
  • (nasm x86实模式)如何在引导加载的扇区中写入/读取字符串?

    我正在使用 NASM 为 x86 实模式编写一个最小操作系统 用于教育目的 我想使用 512 字节引导扇区加载包含操作系统其余部分的更大扇区 我已经成功创建了一个加载另一个扇区的引导扇区 但我似乎无法在加载的扇区中写入 读取字符串 这是我的
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 当存在 copy_from_user 时应用 get_user

    在Linux内核编程中 我看到get user and 从用户复制从用户空间执行读取 前一个读取固定的 1 2 或 4 个字节 而后一个从用户空间读取任意数量的字节 get user 需要什么 copy from user 是否在 get

随机推荐

  • 如何在 Sublime Text 2 中创建自定义布局?

    我想创建一个 2 列布局 其中第 2 列分为 2 行 但并没有真正尝试找出如何做到这一点 我知道这个布局被添加到 Main sublime menu 中 所以我复制了其中一个布局并将其称为 自定义 1 但不确定我必须添加什么作为键 值对或数
  • 创建特定大小的线性间隔数组

    我是 MATLAB 新手 目前正在做家庭作业 我试图声明x变量如下 创建线性间隔数组x大小 1 200 包括以下范围的值 pi to pi 我试过这段代码 x pi 200 pi 但我不确定这是否是正确的方法 您可以使用linspace如下
  • 防止分页 jquery 数据表中的多个单选按钮选择

    我正在使用 Jquery 数据表和 Html 分页 单选按钮在单页中工作正常 但是当单选按钮在多个页面上时 它无法防止单选按钮的多次选择 即 如果我在第 1 页中选择一个单选按钮 在第 2 页中选择另一个单选按钮 则两者都会被选中仅在选定模
  • JavaFX 表行更新

    我想要实现的场景是 每当一个特定的TableCell in a TableRow更新后 行颜色将更改为红色 3 秒后颜色应自动恢复为原始颜色 下边是MCVE 主班 import java util concurrent ExecutorSe
  • Jackson JsonNode 序列化

    我在用着AWS Lambda http docs aws amazon com lambda latest dg welcome html具有 Java 8 功能 Lambda 有一个内置的 Jackson Serializer 因此当您的
  • Chrome 扩展程序桌面通知可在睡眠状态下运行

    我制作了一个桌面通知 它每 1 分钟显示一次通知 10 秒后 自动关闭 我去吃午饭 然后电脑就进入睡眠状态 当我回来时 我唤醒了我的电脑 然后开始出现很多通知 我该如何处理这个问题 我希望如果计算机睡眠 它不应该显示通知 我怎样才能控制它
  • Angular2 RC5 入门与 ng-bootstrap 404 错误

    我已按照 ng bootstrap 网站上的说明使用 Angular2 的新 git 克隆进行安装 但当 NgbModule 位于导入数组中时收到 404 错误 NgModule 错误的屏幕截图 404 加载 ng bootstrap 时出
  • Vim 视觉选择和正则表达式

    我在视觉选择和运行正则表达式替换方面遇到问题 当我选择一些不包含整行的文本 然后点击 来调出命令行 然后执行类似的操作 s T t 然后该行的第一个匹配项 无论是否被选择 被更改 例如 我有文字 Test Text here 我视觉上选择了
  • 8 位、16 位、32 位处理器/微控制器中整数的大小是多少?

    8 位 16 位 32 位处理器 微控制器中整数的大小是多少 我想这取决于内部累加器 寄存器的大小 但不确定 谢谢 我只知道一种编程语言定义了integer数据类型 但很少用于 8 位和 16 位体系结构 C 是最广泛使用的 8 位 16
  • PHP 全局命名空间函数

    在 PHP 中 我可以使用以下命令从另一个命名空间访问全局命名空间中的函数myFunc 代替 myFunc PHP 将自动回退到全局命名空间 如果myFunc无法在当前命名空间中解析 推荐的方式是哪种 myFunc or myFunc 如果
  • Scala 中通用过滤器函数中的错误

    我正在 Scala 中编写一个过滤器函数 虽然我对自己正在尝试做的事情感觉很好 但我无法弄清楚为什么它不会识别我的列表或这个错误告诉我什么 我尝试过编辑语法 但似乎没有任何办法可以解决它 sealed trait List A case o
  • 在支持超线程的四核 CPU 上运行的单 CPU 程序

    我是统计模式识别领域的研究员 我经常进行持续很多天的模拟 我正在运行 Ubuntu 12 04 和 Linux 3 2 0 24 generic 据我所知 它支持多核和超线程 使用带有 HTT 的 Intel Core i7 Sandy B
  • azure 中何时创建了块 blob?

    blob 引用包含一个Properties财产有一个LastModified of DateTimeOffset 但是 我找不到 blob 的创建日期 时间 是否有我可以使用的标准 API 或者我需要将其存储在元数据中 public asy
  • 我可以使用Boost消息队列进行线程通信吗

    我正在从主线程生成多个工作线程 我可以从主线程为每个线程创建 message queue 并从主线程发送消息吗 我问这个是因为消息队列是用于进程间通信的吗 我需要考虑与此相关的任何具体事项吗 正如所提到的Boost Message Queu
  • 当分母中的元素可能为零时,有效的逐元素矩阵除法

    我正在使用 numpy 使用 Python 2 7 6 进行编程 我在两个 numpy 矩阵之间进行了划分V np dot W H 有时 分母的某些单元格值等于 0 因此我会收到运行时错误 我想以有效的方式实施安全划分 我如何编写执行矩阵除
  • 为左浮动 div 或列表设置文本溢出省略号

    这是我想做的 创建一个仅占用所需空间 水平 的列表 即最长的列表元素 当列表不适合页面时 修剪列表文本并显示省略号 我使用的组合white space nowrap and text overflow ellipsis 对于普通列表来说它工
  • 在ios中使用AVAudioSession时出错

    我用了这些代码 void viewDidLoad AVAudioSession sharedInstance setDelegate self AVAudioSession sharedInstance setCategory AVAudi
  • 如何以八度增加命令窗口的字体大小

    我试图弄清楚如何增加命令窗口文本 我想通了legend legend fontsize 10 Low fontsize 10 Medium fontsize 10 High 我尝试做同样的事情 但是command command windo
  • 谷歌地图无法正确呈现

    我正在使用主干和 gmaps js 由于某种原因 地图无法正确渲染 控制器没有正确显示 信息窗口的渲染也很奇怪 我正在使用gmaps js 库 https github com HPNeo gmaps 我什至不知道如何调试这个东西 这是我的
  • 计数信号量和二进制信号量之间的区别

    计数和二进制信号量有什么区别 我在某处看到的是 两者都可以控制 N 个请求资源的进程 两者都拥有自由邦 二进制信号量和计数信号量可以保护的资源数量是否有限制 两者都只允许一个进程一次使用一种资源 还有其他区别吗 上述属性是否正确 实际上 这