信号量的基本概念总结_叙述信号量的定义、功能、物理意义以及用途。_Littlehero_121的博客-程序员秘密

技术标签: 计算器网络与操作系统  

以下内容是摘抄博客:https://blog.csdn.net/fern_girl/article/details/61197995

信号量的基本概念:

一、首先:我们要知道信号量是什么?

       信号量的本质是数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。

这是书本上介绍的信号量的概念,自己的理解比较简单:

     信号量就是具有原子性的计数器,就相当于一把锁,在每个进程要访问临界资源时,必须要向信号量拿个锁”,它才能进去临界资源这个“房间”,并锁上门,不让其他进程进来,此时信号量执行P()操作,锁的数目减少了一个,所以计数器减1,;当它访问完成时,它出来,将锁还给信号量,执行V()操作,计数器加1;然后是下面的进程继续。这也体现了各个进程访问临时资源是互斥的。

“原子性”:表示的是一件事情的两种状态,做了这件事和没做这件事;

“计数器”:信号量通常描述的是临界资源的数目;同时信号量本身就是临界资源,它的目的也是保护临界资源,解决数                 据不一致问题;

“临界资源”:不同进程可以看到的那份共同的资源;

“临界区”:多个进程访问临界资源的代码;

“互斥”:任何时刻,只允许一个临时区访问临时资源,并且属性是原子的。

 

二、我们为什么要使用信号量

     为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。其中共享内存的使用就要用到信号量。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Littlehero_121/article/details/108224090

智能推荐

Inside ObjectBuilder Part 2_happmaoo的博客-程序员秘密

<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></ifra

按位与,按位或和按位异或是否都满足交换律和结合律?_sho_ko的博客-程序员秘密

查了些资料貌似是正确的,没有经过证明,大家谁有证明方法或正确答案,欢迎给我留言哈看到一网友的留言答案:“ 证明好麻烦 与 或 异或跟01个数有关系 跟顺序无关吧 这是不是就证明了”,我觉得这个方法很赞。...

iPhoneXSM屏幕适配、 各机型的逻辑分辨率_shuai_summer的博客-程序员秘密

6、6s、7、7s:375x667 6+、6s+、7+、7s+: 414x736 X、XS:375x812 XSM:  414x896 XSR:   414x896 宽度适配的时候按比例适配,高度适配时,812按照667对待,896按照736对待。hl=s.h==812?1:(s.h==896?(736/667):s.h/667)hl为当...

树莓派上搭建Nginx服务器_Aelousdp的博客-程序员秘密

前些日子跟着慕课网做了一个 Vue.js 仿饿了么 App 的实战项目,讲到部署的部分,正好手上有个树莓派闲置,那就搭个服务器试试吧。目的搭建服务器目的是将 Vue.js 实战项目部署在服务器上,加深对服务器部署的熟练度硬件树莓派 3b+ && 电源 && MBP && 路由器连接iTerm2 -> ssh 连接方式依赖linux (arm v7l) (32 位系统)nodejs (v10.15.3)npm (6.4.1)ngi

【Unity3D-UGUI系列】(八)InputField 输入框组件详解_unity的inputfield_恬静的小魔龙的博客-程序员秘密

一、前言首先,介绍一个UGUI,NGUI是UGUI的前身,Unity开发团队将NGUI的开发团队收到自己开发团队下,并且由此开发了UGUI。UGUI系统是从Unity 4.6版本后才开始集成到Unity编辑器中。UGUI的特点:灵活快速可视化对于开发者来说有很多的优点,比如说:效率高实现效果好易于使用和拓展与Unity编辑器的兼容性高这是本系列文章的第一篇:二、InputField 输入框组件介绍InputField 输入框组件是一个用来输入内容的组件。通常用来输入账号

随便推点

div的层的覆盖_div 覆盖层_未具名的博客-程序员秘密

之前用过,但时间久了就忘了,得勤看才能记住啊让一个div层浮在最上层的方法设置 style 中 z-index:autoauto可定义为一个值(整数数字),越大代表越置前,如可定义为: z-index:9999。若定义为-1,代表为最底层。另:若是会被一些FLASH文件给遮住,可将flash对象的参数wmode设置为transparent即可。

EAS BOS:按钮增加权限控制_wimpykids的博客-程序员秘密

Map<String,Object> map = new HashMap<String,Object>(); Context ctx = WafContext.getInstance().getContext(); UserInfo userInfo = ContextUtil.getCurrentUserInfo(ctx); CompanyOrgUnitInfo companyInfo = ContextUtil.g...

将python算法转为scala_麻烦大家帮忙把这段scala代码转为python格式的。_雨诺寒雪的博客-程序员秘密

论文的一个模型需要进行参考,但是只有scala的文件,没办法用,自己也是一个python新人,能把python代码看懂都很不错了,更不要说去研究java,请大家帮忙,帮我把这段代码转成python的,非常感谢。class MultiSenseSkipGramEmbeddingModel(override val opts: EmbeddingOpts) extends MultiSenseWord...

用白话解释Spring中的 IoC 和 DI _最土老杨的博客-程序员秘密

IoC,用白话来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。    正在业界为IoC争吵不休时,大师级人物Martin Fowler也站出来发话,以一篇经典文章《Inversionof Control Containers and the Dependency Injectio

老菜鸟分析 Vue 的观察-订阅模式:数据变化之后是如何更新页面的呢?_weixin_33738578的博客-程序员秘密

老菜鸟分析 Vue 的观察-订阅模式:数据变化之后是如何更新页面的呢?假设 Vue 已经完成了页面初始渲染处于状态 A,现在进行了某些操作,调用了 changeMessage 方法,执行了 this.message = 'New Hello Vue'; 语句,对 message 属性重新赋值了。那么接来,Vue 究竟会做些什么来让我们在页面上看到最新的 New Hello Vue 结果呢?下面将...

Nacos - SpringCloud 快速开始_简简单单OnlineZuozuo的博客-程序员秘密

文章目录Nacos - SpringCloud 快速开始1、主要实现2、集成Nacos 进行配置管理3、启用服务发现Nacos - SpringCloud 快速开始1、主要实现通过 spring-cloud-starter-alibaba-nacos-config来实现配置的动态变更通过 spring-cloud-starter-alibaba-nacos-discovery来实现服务的...

推荐文章

热门文章

相关标签