内核中的种种延时同步
来源:互联网 发布:免费的交友软件 编辑:程序博客网 时间:2024/06/05 03:48
1. 原子操作、自旋锁、互斥体等 都是 为了保证 “防止内核全局变量的竞争”、保护内核代码的可重入性;而设立;重点在于“保护全局变量的 一致性”
2. wait_queue_xxx (q, condition)是 当前进程(内核态)执行时等待必须的条件而设立的。重点在于“条件”
以上 两点 在功能上是不同的。
其中wait_queue_xxx的实现中,
a. condition满足时直接往下走;
b. condition不满足时,将 当前进程放入q队列, 然后将进程状态 改变(即由原来的running变为 incorruptible或者其他)。然后调用schedule()函数。这样 此进程失宠。
是不是说 condition一旦满足,那么 那个已经睡眠在q队列中的进程就会自己醒来 走向running的状态呢?
显然由上述b中机制,wait_queue以后的进程,已经没有机会接触到CPU了。也就是说condition条件与自身无关。
其它进程在 使condition满足之后,必须调用wake_up()
wake_up() has to be called after changing any variable that could change the result of the wait condition.
使得睡眠在q的进程的状态改变为running.
说白了,一个进程调用wait_queue(具体为变自己的state为interruptable,然后调用schedule)是自己睡眠;
别的进程通过wake_up使 睡眠的进程醒来。
0 0
- 内核中的种种延时同步
- Linux 内核中的种种(初步了解)
- 内核中的定时器与延时
- Linux 内核中的种种(初步了解2)
- 内核中的同步问题
- Linux内核中的同步
- 内核中的同步
- 内核延时
- 内核中的调度与同步
- 内核中的调度与同步
- Linux内核中的同步机制
- Linux内核中的同步机制
- Linux内核中的同步机制
- 内核中的调度与同步
- Linux内核中的同步机制
- 内核中的调度与同步
- linux中的内核同步机制
- 学习DirectX中的种种
- opencv基本数据类型
- Sybase数据库工具DbVisualizer乱码问题
- 在mac osx10.8.5 xcode5.1上编译ffmpeg
- poj2503
- 桥接模式
- 内核中的种种延时同步
- UVA - 424 Integer Inquiry
- maven jdk版本设置
- 获取当前ios设备的内存使用情况,获取客户端ip地址
- 引用
- 人的一生就是一个储蓄的过程
- java.util.logging.Logger基础教程
- 设置部分文件不适用ARC机制
- OCP 1Z0 052 112