当前位置: 首页 > news >正文

36、Linux内核中的同步原语:信号量与互斥锁详解

Linux内核中的同步原语:信号量与互斥锁详解

1. 信号量简介

在Linux内核中,信号量是另一种支持线程或进程同步的机制。此前我们了解过自旋锁,它主要用于短时间的加锁场景,在加锁期间不允许进程或线程睡眠,并且为避免死锁会禁用抢占,不允许进行上下文切换。

而信号量则适用于需要长时间持有锁的情况,不过对于短时间加锁,它并非最优选择。信号量基于一个变量,该变量可以进行递增或递减操作,其状态代表了获取锁的能力,并且该变量的值不限于0和1。信号量主要分为以下两种类型:
- 二进制信号量:其值只能为1或0。
- 普通信号量:值为任意非负整数。当值大于1时,被称为计数信号量,它允许一个以上的进程获取锁,这有助于记录可用资源,而自旋锁一次只能对一个任务加锁。此外,信号量允许进程睡眠,当一个进程等待另一个进程持有的锁时,调度器可以切换到其他进程。

2. 信号量API
2.1 信号量结构体

在Linux内核中,信号量机制由以下结构体表示:

struct semaphore { raw_spinlock_t lock; unsigned int count; struct list_head wait_list; };

该结构体包含三个字段:
-lock:用于保护信号量数据的自旋锁。
-count:可用资源的数量。
-wait_list

http://www.jsqmd.com/news/79788/

相关文章:

  • 9、BPF追踪数据可视化指南
  • 37、Linux内核中的读写信号量:原理与实现解析
  • 10、BPF 工具使用指南与技巧
  • 38、Linux内核中的同步原语与内存管理
  • 阶跃星辰双模型开源引爆AI圈:300亿参数视频生成+实时语音对话重构多模态技术边界
  • 2025-12-13:十六进制和三十六进制转化。用go语言,给定一个整数 n,先求它的平方并把该值用大写字母的 16 进制表示(符号位按需处理,数位使用 0–9 与 A–F),再求它的立方并将该值用大
  • 39、Linux内核内存管理:固定映射地址与ioremap解析
  • 40、Linux内核内存管理与控制组机制详解
  • 昆仑万维发布Skywork-SWE代码智能体基座模型,32B规模刷新仓库级修复能力纪录
  • 万象EXCEL应用(二十) Excel收入支出日记账台帐报表——东方仙盟炼气期
  • 重磅发布:Qwen3-VL-8B-Instruct-FP8模型震撼登场,开启多模态AI应用新纪元
  • 12、Linux 网络中的 BPF 应用与数据包过滤
  • 30亿参数打破性能桎梏:SmolLM3开放模型如何重塑轻量级AI应用生态
  • ollama v0.13.3 最新发布:新增模型与功能优化详细解读
  • 2.5亿参数破局多模态困境:ModernVBERT重塑视觉文档检索技术边界
  • GLM-4.5-Air横空出世:混合推理技术开启开源大模型商用新纪元
  • 论文阅读:AAAI 2026 Multi-Faceted Attack: Exposing Cross-Model Vulnerabilities in Defense-Equipped Vision
  • Unsloth Dynamic 2.0量化技术:重新定义大模型部署效率与精度边界
  • OpenAI发布Whisper Turbo模型:本地语音处理效率提升5.4倍,多语言翻译能力再突破
  • 智谱AI大模型全面免费开放:AI普惠时代正式开启
  • 终极百度网盘加速指南:免费实现快速下载的完整教程
  • 38、互联网邮件安全与Web服务器安全综合指南
  • Ring-1T重磅发布:万亿参数思维模型开启开源推理新纪元
  • 百度开源再放大招:ERNIE-4.5-VL-28B-A3B-Thinking颠覆多模态AI认知边界
  • 40、网站内容与安全全解析
  • 机器学习进阶<11>基于集成学习的多源数据融合的电商用户购买行为预测系统
  • 42、保障 Web 服务器安全:数据库访问、认证与访问控制全解析
  • 终极百度网盘下载解析工具:简单三步实现高速下载
  • 43、保障Web与文件服务安全:技术、挑战与应对策略
  • Windows右键菜单终极优化指南:5个技巧让系统飞起来