linux 信号量锁 内核,Linux内核信号量互斥锁应用

主要介绍了Linux 内核关于信号量,互斥锁等的应用

内核同步机制-信号量/互斥锁/读-写信号量 sema ,mutex ,rwsem

信号量

通用信号量

用户类进程之间使用信号量(semaphore)进行同步,内核线程之间也使用了信号量,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作。信号量与自旋锁类似,保护临界区代码。但信号量与自旋锁有一定的区别,信号量在无法得到资源时,内核线程处于睡眠阻塞状态,而自旋锁处于忙等待状态。因此,如果资源被占用时间很短时,使用自旋锁较好,因为它可节约调度时间。如果资源被占用的时间较长,使用信号量较好,因为可让CPU调度去做其它进程的工作。

函数定义 功能说明

sema_init(struct semaphore *sem, int val) 初始化信号量,将信号量计数器值设置val。 down(struct semaphore *sem) 获取信号量,不建议使用此函数。

down_interruptible(struct semaphore *sem) 可被中断地获取信号量,如果睡眠被信号中断,返回错误-EINTR。

down_killable (struct semaphore *sem) 可被杀死地获取信号量。如果睡眠被致命信号中断,返回错误-EINTR。

down_trylock(struct semaphore *sem) 尝试原子地获取信号量,如果成功获取,返回0,不能获取,返回1。

down_timeout(struct semaphore *sem, long jiffies) 在指定的时间jiffies内获取信号量,若超时未获取,返回错误-ETIME。

up(struct semaphore *sem) 释放信号量sem。

样例:信号量的使用

下面函数do_utimes利用信号量防止多个线程对文件系统节点inode同时进行访问。其列出如下(在fs/open.c中):

long do_utimes(char __user * filename, struct timeval * times)

{

struct inode * inode;

……

down(&inode->i_sem); //获取信号量

error = notify_change(nd.dentry, &newattrs);//修改inode中值

up(&inode->i_sem); //释放信号量

……

}

下面说明信号量API函数。

(1)信号量结构semaphore

信号量用结构semaphore描述,它在自旋锁的基础上改进而成,它包括一个自旋锁、信号量计数器和一个等待队列。用户程序只能调用信号量API函数,而不能直接访问信号量结构,其列出如下(在include/linux/semaphore.h中):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】广东开放大学 标准化法律法规 形成性考核

​选择题 题目:WTO/TBT协议即《技术性贸易壁垒协议》是WTO对缔约国标准化工作的规定,因次也称为( )。 题目:对于违法犯罪行为的制裁和惩罚,体现了法律的( ) 题目:《上海市标准化条例》、《广东省产品质量监督条例》都属…

【渝粤题库】广东开放大学 电算化会计 形成性考核

选择题 题目: 会计作为一个提供( )为主的信息系统,长期以来在企业的经营管理中起着非常重要的作用 题目: 会计作为一个提供( )为主的信息系统,长期以来在企业的经营管理中起着…

stacktraces_Stacktraces告诉了事实。 但事实并非如此。

stacktraces我们公司致力于使软件错误的原因对开发人员和运营透明。 与替代解决方案相反, 我们在您发现源代码中恶意代码的地方指出了问题的所在 。 即使目前我们以检测内存泄漏的能力而闻名,但我们也正在扩展到其他领域。 为了给您一些有关我们研究方向…

【渝粤题库】广东开放大学 营销策划 形成性考核

选择题 题目:宝洁公司旗下的洗发水品牌有飘柔、潘婷、海飞丝等不同的子品牌,这些品牌分别面对不同的细分市场,宝洁公司的细分依据是( )。 题目:在春节、中秋节、情人节等节日即将来临的时候,许多…

Linux搜索无线网络命令,Linux操作系统的无线网络命令

rts:指定RTS/CTS握手方式,使用RTS/CTS握手会增加额外开销,但如果无线网络中有隐藏无线节点或者有很多无线节点时可以提高性能。后面的参数指定一个使用该机制的最小包的大小,如果该值等于最大包大小,则相当于禁止使用该…

【渝粤题库】广东开放大学企业标准化 形成性考核

​👉关注我,看答案👈 选择题 题目:企业标准应当报当地标准化行政主管部门审查。 题目:决策论、规划论、库存论,都是企业质量管理中可以借鉴使用的管理办法。 题目:6σ工程包括6σ改进和6σ策划两种类型。 题…

在JDK 12精简数字格式中使用最小分数数字

帖子“ 紧凑数字格式出现在JDK 12中 ”演示了对JDK 12中 NumberFormat的支持,以支持紧凑数字格式 。 该帖子中显示的示例仅使用NumberFormat的调用重载了NumberFormat的新重载getCompactNumberInstance(-)方法返回的NumberFormat实例,因此没有指定诸如最…

linux做定时数据库备份,Linux实现定时备份数据库

1.创建开启定时任务1.1crontab -e 打开定时任务编辑器1.2 0 1 * * * /备份脚本存放路径-用crontab -e 编辑器打开存放好1.3 crontab -l 查看定时任务1.4 service crond start 启动定时任务1.5 service crond status查看定时任务状态2.创建定时备份脚本touch test.sh 创建脚本&…

【渝粤题库】陕西师范大学151112 审计学作业(高起专)

《审计学》作业 一、单选题 1.注册会计师评估的重大错报风险与所需审计证据的数量呈( )变动关系。 2.注册会计师在检查登记入账的销货业务的真实性时,有效的做法是( )。 A.从主营业务收入明细账追查至发运凭证 B.从发…

【渝粤题库】陕西师范大学163210 旅行社经营与管理

单选题 中国国际旅行社成立于( )年。 A.1949 B.1954 C.1980 D.1923 新中国成立后,我国第一家旅行社是1949年成立的( )。 A.厦门华侨服务社 B.中国青年旅行社 C.中国旅行社 D.中国国际旅行社 ( )…

linux sftp自动输入密码,linux下实现sftp自动登录。

今天帮之前同事写一个sftp自动上传的脚本,因为sftp无法匿名登录,因此使用sftp时,每次都需要输入服务器密码,无法进行自动上传和下载文件,其中一种方法可以使用lftp这个就不在详细介绍了,现在介绍另外一种方…

【渝粤题库】陕西师范大学165107工作分析与设计作业(高起专)

《工作分析与设计》作业 单选题 1、工作分析最初产生于( )的工业企业中。 A.英国 B.德国 C.美国 D.日本 2、( )是组织中最基本的活动单元。 A.任务 B. 部门 C.工作 D.岗位 3、同一职系中职责繁简、难易、轻重及任职条件充分相似的…

【渝粤题库】陕西师范大学180210 国际市场营销学 作业

一、单选题 日本市场具有( )特点 A. 经营国际化 B. 市场渠道畅通 C. 销售季节性强 D. 垄断控制型市场国际工业品市场细分不可以依据( ) A. 用户规模 B. 用户购买力大小 C. 消费者年龄 D. 购买决策产生的过程文化环境是( ) A.静止的 B. 不会影响商业习俗的 C. 对任何…

使用ClickHouse UDF与OpenAI模型集成

本文字数:14683;估计阅读时间:37 分钟 作者:Dale McDiarmid 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 Meetup活动 ClickHouse Shenzhen User Group第1届 Meetup 火热报名中&#x…

guava的正确引入方式_使用Guava的AbstractInvocationHandler正确完成代理

guava的正确引入方式不太经常,但有时我们被迫使用java.lang.reflect.Proxy编写自定义动态代理类 。 这种机制实际上没有任何魔术,即使您永远不会真正使用它,也值得知道–因为Java代理在各种框架和库中无处不在。 这个想法很简单:…

vba执行linux命令,如何使用vba的shell()运行参数的.exe?

我有一个目标文件路径的结构如下例所示。C:\Program Files\Test\foobar.exe /G我需要做的就是使用vba的shell()命令来执行这个文件。如何格式化文件路径以告诉Shell()有一个参数,它需要调用与运行.exe我已经阅读/尝试(无效)在下面的结果在右边。file ""&…

【渝粤题库】陕西师范大学200271 微分几何 作业(专升本)

《微分几何》作业 一. 填空题 曲面的第一基本形式为( )。空间曲线的基本公式是( )。曲面在任一点(u,v)的单位法向量公式为( )空间曲线的切向量为( &#xff…

【渝粤题库】陕西师范大学200771 可视化程序设计

《可视化程序设计》作业 一、单项选择题 1、VB应用程序在( )模式下不能编辑代码和设计界面。 A 运行B 中断C 设计D 以上均不能 2、将列表框(List Box)上要显示的内容放到列表框控件上的方法是( )。 A Addit…

使用Spring Boot和Vue.js构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 在本教程中,您将使用Vue.js作为客户端并将Spring Boot作为资源服务器来构…

linux 装windows软件,常用软件的安装(windows/linux)

JavaScript单线程和浏览器事件循环简述JavaScript单线程 在上篇博客的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...Free Slideshow, Gallery And Lightboxes Scriptshttp://bootstraphelpers.codeplex.c…