开发者社区> 问答> 正文

信号量是什么?

信号量是什么?

展开
收起
请回答1024 2020-03-26 21:33:56 908 0
1 条回答
写回答
取消 提交回答
  • 对于多任务,甚至多核的操作系统,需要访问共同的系统资源。共享资源包括软件资源和硬件资源,软件共享资源主要在于共享内存,包括共享变量、共享队列等等,硬件共享资源包括一些硬件设备的访问,例如:输入\输出设备,打印机等。

    为了避免软件访问共享资源的读写发生的相互影响甚至冲突,一般在保护共享资源时,有下列几种处理方式。

    • 开关中断:一般用于单核内多任务之间的互斥,其途径在于关闭任务的调度切换,从而达到单任务访问共享资源的目的。缺点是会影响实际的中断调度效率。

    • 信号量:多任务可以通过获取信号量来获取访问共享资源的“门禁”,可以配置信号量数目,让多个任务同时获取“门禁”,当信号量无法获取时,相关任务会按照优先级排序等待信号量释放,并让出cpu资源。信号量的缺点是存在高低任务优先级反转的问题。

    • 互斥量:任务也是通过获取mutex来获取访问共享资源的门禁,但是只有一个任务能获取到该互斥量。互斥量通过动态调整任务的优先级来解决高低优先级反转的问题。具体参见互斥信号量。

    2020-03-26 21:34:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载