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

信号量与互斥体对zynqMP的ps_led的互斥访问

信号量

1信号量简介

2信号量与自旋锁区别:

  1. 当线程满了以后,自旋锁会一直循环等待,而信号量会引起休眠与阻塞(阻塞态)。
  2. 信号量适用于占用资源比较久的场合,而自旋锁的临界区不能耗时太久(注意一个进程从运行态变成休眠态也是需要消耗资源的,这个消耗可能比一个进程在外面循环等待的消耗还要久,所以信号量不适合共享资源持有时间短的)。

·3信号量API函数

dowm函数就是对应原子操作P,up函数对应原子操作V。

4信号量实验(gpioled.c为基础)

(1)在结构体中加入信号量

(2)初始化:规定过一个信号量val它的值<=1,称为二值信号量(实现对资源的互斥访问),否则称为计数形信号量。

(3)修改open函数:就是获取信号量(dowm_interruptible函数如果获取信号量失败,只会进入休眠,并不会返回非零值。如果是被打断了则会返回非零值)

(4)修改release函数:调用up代码

5实验结果

当第二个应用程序去访问这个led设备的时候,它并没有报错,并没有显示打开文件失败,反而是进入了一个休眠状态,等待信号量可用的时候,它才会被唤醒,并且去执行自己的操作。

6. dowm_interruptible与dowm区别

Ctrl+c是中断的一种,如图如果使用的dowm函数,第二个应用程序去访问这个led设备的时候,进入了休眠状态,这个时候Ctrl+c结束不了进程。

互斥体

1.互斥体简介

注:互斥体 = 互斥锁 = 二值信号量,是专门用于信号互斥访问。

注:特点12与信号量一样,特点3和自旋锁一样。

2.互斥体API函数(only one task can hold the mutex at a time)

3.互斥体实验

(1)添加互斥体

  1. 初始化

(3)修改open函数:打开互斥锁(mutex_lock_interruptible函数如果获取互斥体失败,只会进入休眠,并不会返回非零值。如果是被打断了则会返回非零值)

(4)修改release函数

4.实验结果

实验现象与信号量实验一样。

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

相关文章:

  • 遗传算法优化电力交易决策:Python实现与工程实践
  • 金融级AI应用实战:从零构建可复现的信用评分预测服务
  • CentOS6.5 虚拟机部署 iSCSI 存储 + multipath 多路径完整实操
  • 01-03-运行时-类型加载器-从IL元数据到运行时类型
  • 生产环境 Agent 人工审批环节:从 0 到 1 技术实现与用户操作指南
  • 线程池如何调优?
  • MySQL、Oracle、SQL Server查询当前时间函数全解析与跨数据库实践
  • Windows CMD FOR命令深度解析:从基础循环到自动化脚本引擎
  • 构建个人数据库知识库:从原理到实战的十万字笔记方法论
  • 经典PID与模糊PID控制:原理对比、仿真实现与工程选型指南
  • 武汉考研机构推荐2026哪家好 - 弘毅考研
  • PTA团体程序设计天梯赛L1真题讲解L1-077-080
  • Nginx安全配置实战:从基础代理到多层拉黑策略
  • windows 驱动实例分析系列: wintun驱动分析-api篇(二)
  • NumPy数组创建全解析:empty、zeros、ones与full函数性能与应用指南
  • 群晖NAS通过虚拟机稳定同步115网盘:架构、部署与优化指南
  • Claude Code Tools计划模式:从AI意图解析到多步骤开发任务自动化
  • SpringMVC视图渲染原理深度解析:从DispatcherServlet到模板引擎的完整流程
  • 餐饮加盟哪家好:【美洲汉堡】商机无限 - 晴光转树
  • VS Code Doxygen插件:自动化代码文档生成与团队协作实践
  • SV学习记录(九)
  • 开源工具实现AI智能体免费网络访问:原理、集成与实战指南
  • Claude-Red AI红队攻防技能库实战教程:Web漏洞渗透落地与大模型对抗测试
  • SciPy 模块列表:核心子模块与实战代码示例
  • 多智能体应用实战 | 从理论到实战:4个真实落地案例,看OpenClaw如何解决企业真实问题
  • 2026年天津春考冲刺班选择指南 本地考生备考提分实用参考 - 贰拾壹度
  • CTF逆向工程实战:从入门到企业级应用
  • 国资穿透式监管合规怎么做?从政策到执行的全流程拆解
  • Prometheus 监控 Fluentd 全栈实战:从缓冲区堆积到输出延迟的日志管道可观测性
  • Diffusion模型与滚动时域控制:构建机器人动作生成的鲁棒闭环系统