news 2026/5/1 5:42:44

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 20:10:55

Text-Embedding-Ada-002:技术原理、性能评估与应用实践综述

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1 引言:文本嵌入的统一化革新 在自然语言处理&#xff08…

作者头像 李华
网站建设 2026/4/22 8:49:59

12、Linux 网络中的 BPF 应用与数据包过滤

Linux 网络中的 BPF 应用与数据包过滤 1. BPF 概述与应用场景 在网络领域,BPF(Berkeley Packet Filter)程序主要用于两个方面:数据包捕获和过滤。用户空间程序可以为任何套接字附加过滤器,提取流经该套接字的数据包信息,并根据需要允许、禁止或重定向特定类型的数据包。…

作者头像 李华
网站建设 2026/4/24 15:43:35

哔哩下载姬完整指南:5步掌握B站视频高效下载技巧

哔哩下载姬完整指南:5步掌握B站视频高效下载技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff09…

作者头像 李华
网站建设 2026/4/23 18:45:07

英伟达Audio Flamingo 3震撼发布:全开源音频大模型改写行业格局

2025年7月18日,英伟达正式推出新一代音频大语言模型Audio Flamingo 3(以下简称AF3),这款完全开源的突破性产品在语音识别、环境音效解析和音乐生成等核心领域实现全面超越。作为业界首个支持多模态音频交互的基础模型,…

作者头像 李华
网站建设 2026/4/23 17:17:38

Ring-1T重磅发布:万亿参数思维模型开启开源推理新纪元

今日,我们正式推出万亿参数思维模型Ring-1T,实现发布即开源的重大突破。开发者可通过Hugging Face与ModelScope平台获取模型权重,或直接通过灵犀聊天页面与ZenMux平台体验对话交互及API调用服务(相关链接详见文末)。作…

作者头像 李华