首页 > 系统服务 > 详细

Linux-0.12内核sleep_on函数分析

时间:2014-05-26 04:14:53      阅读:636      评论:0      收藏:0      [点我收藏+]

sleep_on用于进程休眠,原型如下:

void sleep_on(struct task_struct **p)

当进程访问某个互斥资源时,如果资源被另外进程占用,当前进程就需要休眠。

假设资源的结构如下:

struct res

{

....

struct task_struct *wait;
}

其实我们参考下文件系统的i节点就会发现,i节点也是一种资源,它的结构体中就有一个变量i_wait。那么我们就用i节点举例。如果进程访问某个i节点,发现i节点被锁住,当前进程就需要睡眠:sleep_on(&i_wait),这样当前进程就在i节点的i_wait队列上睡眠,那么重点是i_wait睡眠队列是如何形成的呢?用下面的图片叙述。

注意点:p和current是全局变量,tmp是进程私有,在进程栈中。i_wait=NULL,并且i_lock=1,代表inode被锁住没法访问。

bubuko.com,布布扣

Linux-0.12内核sleep_on函数分析,布布扣,bubuko.com

Linux-0.12内核sleep_on函数分析

原文:http://blog.csdn.net/getnextwindow/article/details/26672945

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!