Futex同步机制简介
来源:互联网 发布:java工程师培训有用吗 编辑:程序博客网 时间:2024/05/17 21:53
新书上市《深入解析Android 5.0系统》
以下内容节选自本书
Futex是fast userspacemutex的缩写,意思是快速用户空间互斥体。它由HubertusFranke,MatthewKirkwood,IngoMolnar和RustyRussell设计并维护。我们这里讨论Futex是因为在Android中不但线程函数中使用到了Futex,甚至一些模块中在直接使用Futex作为进程间同步的手段,了解Futex的原理将有助于我们更深入的理解这些模块的运行机制。
Linux从2.5.7开始支持Futex。在Unix系统中,传统的进程间同步机制都是通过对内核对象操作来完成的,这个内核对象在需要同步的进程中都是可见的,进程间的同步是通过系统调用在内核中完成。这种同步方式因为涉及用户态和内核态的切换,效率比较低。而且只要使用了传统的同步机制,进入临界区时即使没有其他的进程竞争也必须切换到内核态来检查内核同步对象的状态,这种不必要的切换显然带来了大量的浪费。
Futex就是为了解决这个问题而诞生的。Futex是一种用户态和内核态混合的同步机制,使用Futex同步机制,如果用于进程间同步,需要先调用mmap创建一块共享内存,Futex变量就位于共享区。同时对Futex变量的操作必须是原子的,当进程试图进入临界区或者退出临界区的时候,首先检查共享内存中的Futex变量,如果没有其他的进程也申请使用临界区,则只修改Futex变量而不再执行系统调用。如果同时有其他进程在申请使用临界区,还是需要通过系统调用去执行等待或唤醒操作。这样通过用户态的Futex变量的控制,减少了进程在用户态和内核态之间切换的次数,从而减少了系统同步的开销。
- Futex同步机制简介
- Futex同步机制
- Linux进程同步机制-Futex
- Linux进程同步机制-Futex
- Linux中的同步机制 -- Futex
- Linux中的同步机制 -- Futex
- Linux中的同步机制 -- Futex
- Linux中的同步机制 -- Futex
- Linux进程同步机制Futex
- Linux中的线程同步机制-futex
- [Pthread] Linux中的线程同步机制(一) -- Futex
- Linux中的线程同步机制(一) -- Futex引子
- Futex
- futex
- futex
- futex进程间同步的变量
- Mutex类使用Futex实现同步
- futex(2) 快速用户态互斥体使用简介
- Android ART模式简介
- Android ART 的初始化和启动
- Android签名漏洞分析
- Android build系统中常用LOCAL_变量
- oracle 备份与恢复系列笔记-1
- Futex同步机制简介
- Android的Futex系统调用
- Futex用户态操作
- Mutex类使用Futex实现同步
- 虚拟运营商会如何卖手机?且看JDPhone和余额宝
- Android资源匹配算法
- C语言基础学习小总结
- Android图片资源的缩放问题
- SEAndroid简介