锁定 – 在Linux内核抢占spin_lock和mutex_lock
当内核空间中的进程持有spin_lock时,由于以下任一条件,该进程不能被抢占: >当过程的时间片耗尽时 但是,如果处理器阻塞,睡眠或显式调用schedule(),则该进程可能会产生处理器.我的理解是否正确? 当内核空间中的一个进程持有一个mutex_lock时,由于上面列出的条件为1,2和3,该进程可以被抢占. 解决方法旋转锁的当前实现使用两个完全独立的机制来确保互斥,一种用于处理处理器间排除,另一种用于处理本地处理器线程和中断处理程序.>有spin_lock本身只是在两个或多个处理器内核之间提供互斥体.遇到锁定旋转锁的任何处理器基本上被卡住,直到另一个处理器释放它.旋转锁在单处理器系统上不起作用,除了增加总死锁的机会,因此通常在内核编译时会被删除. 从上面可以明显看出,使用旋转锁可能会使整个机器发胶,因此旋转锁只能在很短的时间内使用,您不应该在持有锁时可能会导致重新计划. mutex_lock的情况是完全不同的 – 只有尝试访问锁的线程才会受到影响,如果某个线程遇到锁定的互斥体,则会发生重新计划.为此,mutex_locks不能在中断(或其他原子)上下文中使用. (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux-kernel – 编译Linux内核错误xt_CONNMARK.h
- 如何在Linux上安装Haskell Debian Wheezy?
- How to allow/block PING on Linux server – IPTables rul
- unable to locate package open-vm-tools-desktop
- LINUX入门:crond脚本执行并发冲突问题
- linux – 强制Bamboo使用特定的Build Agent进行部署
- linux下查看所有用户及所有用户组
- linux – 用apt-get,apache2-mpm-prefork安装apache2?
- C Boost线程睡眠死锁
- linux – 从长行按位置删除字段
- 如何在Python中打开命名的pipecharacter设备专用
- macos – 如何在OS X上使用ditto在Linux上像cp -
- MPD:使用Linux bash脚本接收实际的mpd-status
- 如何在“system”命令中包含字符串变量(char *)
- linux – Unix vs BSD vs TCP vs Internet套接字
- 在Linux计算机上绘制每用户CPU使用情况的图表
- linux – Shell返回“PuTTYPuTTYPuTTY …”
- linux-kernel – 编译Linux内核错误xt_CONNMARK.
- 亚马逊Linux上的Nginx php-fpm =退出信号11
- 让rsync仅报告已更新的文件