锁定 – 在Linux内核抢占spin_lock和mutex_lock
当内核空间中的进程持有spin_lock时,由于以下任一条件,该进程不能被抢占: >当过程的时间片耗尽时 但是,如果处理器阻塞,睡眠或显式调用schedule(),则该进程可能会产生处理器.我的理解是否正确? 当内核空间中的一个进程持有一个mutex_lock时,由于上面列出的条件为1,2和3,该进程可以被抢占. 解决方法旋转锁的当前实现使用两个完全独立的机制来确保互斥,一种用于处理处理器间排除,另一种用于处理本地处理器线程和中断处理程序.>有spin_lock本身只是在两个或多个处理器内核之间提供互斥体.遇到锁定旋转锁的任何处理器基本上被卡住,直到另一个处理器释放它.旋转锁在单处理器系统上不起作用,除了增加总死锁的机会,因此通常在内核编译时会被删除. 从上面可以明显看出,使用旋转锁可能会使整个机器发胶,因此旋转锁只能在很短的时间内使用,您不应该在持有锁时可能会导致重新计划. mutex_lock的情况是完全不同的 – 只有尝试访问锁的线程才会受到影响,如果某个线程遇到锁定的互斥体,则会发生重新计划.为此,mutex_locks不能在中断(或其他原子)上下文中使用. (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Rsync在目标目录中创建一个具有相同名称的目录
- 无法在root的Nexus 9上禁用com.android.systemui
- linux – 文件的物理大小在哪种情况下要小于逻辑大小?
- 终端 – oh-my-zsh:git达到最大嵌套功能级别
- LINUX学习:find命令结合cp的使用
- linux – 为什么gcc在调用“main”之后在程序中放置一个“h
- linux – 用于MongoDB分片的mongos和配置服务器的Init脚本
- 通过linux上的usb发送原始数据
- linux – 如何在Linix中执行文件操作即cp,mv,rm和chown等时
- linux – Eclipse不会启动,因为`reload maven项目遇到了一个