锁定 – 在Linux内核抢占spin_lock和mutex_lock
|
当内核空间中的进程持有spin_lock时,由于以下任一条件,该进程不能被抢占: >当过程的时间片耗尽时 但是,如果处理器阻塞,睡眠或显式调用schedule(),则该进程可能会产生处理器.我的理解是否正确? 当内核空间中的一个进程持有一个mutex_lock时,由于上面列出的条件为1,2和3,该进程可以被抢占. 解决方法旋转锁的当前实现使用两个完全独立的机制来确保互斥,一种用于处理处理器间排除,另一种用于处理本地处理器线程和中断处理程序.>有spin_lock本身只是在两个或多个处理器内核之间提供互斥体.遇到锁定旋转锁的任何处理器基本上被卡住,直到另一个处理器释放它.旋转锁在单处理器系统上不起作用,除了增加总死锁的机会,因此通常在内核编译时会被删除. 从上面可以明显看出,使用旋转锁可能会使整个机器发胶,因此旋转锁只能在很短的时间内使用,您不应该在持有锁时可能会导致重新计划. mutex_lock的情况是完全不同的 – 只有尝试访问锁的线程才会受到影响,如果某个线程遇到锁定的互斥体,则会发生重新计划.为此,mutex_locks不能在中断(或其他原子)上下文中使用. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- LINUX入门:容器:Ubuntu 16.04安装Docker Compose详解
- linux – 用于将文件夹名称复制并添加到多个子目录中的文件
- 在tmux的所有窗口中显示窗格
- linux – 在Bash中并行迭代IP地址
- 访问DOCUMENT_ROOT之外的PHP类文件
- linux – 文件夹中最新文件的符号链接
- linux – 有没有办法让BIND 9自动将其缓存转储到文件中,然后
- linux – Unix vs BSD vs TCP vs Internet套接字?
- BEA-141150 - An error occurred while preparing applicat
- 如何在Linux / Fedora中使用Qt的’windeployqt’
