当前位置:  技术问答>linux和unix

关于内核互斥体的问题

    来源: 互联网  发布时间:2016-11-09

    本文导语:         在调I2C的时候,发现互斥体的一个奇怪的问题。假如有2个进程a和b,a中要执行一个临界区的函数100次,b执行一次, a的第一次进入临界区先获得互斥体,使用mutex_lock_nested(xxx),此时b在获得互斥体时会应为a...

       在调I2C的时候,发现互斥体的一个奇怪的问题。假如有2个进程a和b,a中要执行一个临界区的函数100次,b执行一次,
a的第一次进入临界区先获得互斥体,使用mutex_lock_nested(xxx),此时b在获得互斥体时会应为a还在临界区而进入sleep,
当a第一次从临界区出来之后。接着a又要第二次进入临界区,按正常逻辑,b应该先进入临界区,之后才到a第二次进入临界区啊。可在调试中发现情况正好相反,当b在进入临界区由于没有获得互斥锁sleep,需要等到a执行完100次临界区的函数后,才轮到b去执行?若a在临界区执行一次要花20ms,那么b由于没有获得互斥锁,需要等2s后才会执行,这明显影响了性能啊!

据我的了解,互斥锁,信号量不应该是这么执行的啊。为什么呢?求高人解答!!

|
这个和任务调度相关,A进程在一个时间片内会一直运行,直到有信号或自动放弃执行。。。等才可能调用其它的进程执行。

|
楼主的意思是为什么a离开临界区之后,b没有进入临界区,而是在a进出100次之后,b才能进入临界区

|
那个热度只是我个人的概念..
好像哪个进程比较活跃,抢占锁的概率就大
对内核没有研究,我用的是posix mutex

|
以前好像也碰到这种问题,不知道原因
直观感觉与进程的热度有关哈

lz可以试试让a在解锁之后sleep一小段时间看看效果

    
 
 

您可能感兴趣的文章:

  • 内核栈~ 内核线程 ~用户线程 之间关系 问题
  • 把redhat9.0的2.4.20-8内核升级为2.4.22内核时遇到的问题
  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • 问一个小白问题,在交叉编译时,系统内核和开发板的内核有没有相关性?
  • Android 内核移植问题 要求识别SATA硬盘 请问内核的make menuconfig 要如何配置?求高手
  • 修改内核代码问题:如何编译修改的单个文件而不用重建整个内核?
  • 请教一个问题:程序在Linux 2.4.20内核上跑无问题。但在2.4.19内核上跑就出现段错误现象。查了一星期,毫无头绪,万望各位指点。
  • 内核版本问题 GCC版本问题
  • linux内核安装问题 , 有点疑惑~
  • 内核升级问题!!!!!
  • 内核问题
  • 问个编译内核的简单问题~~~
  • 内核重编译前的小白问题
  • 请教一个linux进程内核栈的问题
  • 升级linux内核时,2.6.21.5内核编译成功,但启动时出现panic,请看问题详细描述!
  • 菜鸟问题,内核编译以后,启动不了。系统提示内核文件文件找不到!
  • 关于如何使用内核函数的问题
  • 安装内核头文件问题
  • Linux 内核模块编程问题!!!!
  • linux 内核进程堆问题,大家指教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间?
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • docker使用的技术之Container内核原理介绍
  • 内核模块跟内核版本不匹配????????
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    php开源软件 iis7站长之家