Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6148
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-24 21:13
文章分类

全部博文(6)

文章存档

2017年(4)

2014年(2)

我的朋友

分类: LINUX

2014-03-24 21:26:02

待完成
核心要点:1、参考Linux Device Driver的介绍; 2、阅读内核的实现代码;3、结合前一篇Linux用户态中断的实现加深理解。
1、sleep
    关于wait queue就不能不提sleep。sleep的本质就是使得等待某个事情发生或是等待某个资源的进程让出cpu,然后使自己休眠;当等待的事情发生后或者等待的资源就绪后进过内核的调度重新得到cpu,进而执行的过程。当然 一个进程或者一段代码不是在任何情况下都能使自己休眠的。有以下几种典型的情况不能休眠:1、中断服务程序中,不包括tasklet、softirq和work queue;2、在执行某些原子操作时,比如持有spinlock、rwlock、seqlock和RCU,在持有信号量时是可以sleep的。
2、wait queue
    如前所说,一个进程sleep往往是因为等待某个事情发生或是等待某个资源,那么当等待的事情发生后或者资源就绪后就需要有一个机制来唤醒等待的进程。操作系统提供了WAIT QUEUE完成这个动作。
    wait queue可以认为是在等待某个特定事件的一组进程,这些进程以链表的形式组织在一起。
阅读(211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~