- 博客(7)
- 资源 (2)
- 收藏
- 关注
转载 linux中的睡眠
在linux的内核中,有很多睡眠相关的函数,比如sleep_on,当然也有wake_up,睡眠的意义就是不能再运行了,那么睡眠总要有个地方啊,我们睡眠都要有个床,按照人性化设计出来的linux内核也应该有个睡眠用的床,这是对的,但是,睡眠一定要在床上吗?非也! 就好像现代的白领们,习惯就很不好,总喜欢伏案而小憩,这样不但不解乏而且还不利于健康,不管怎么说也算是一个休息方式,另外闲着没啥事的时候
2015-01-27 09:59:49 378
转载 _wait_event 具体实现过程
#define __wait_event(wq, condition) do { DEFINE_WAIT(__wait);for (;;) { prepare_to_wait(&wq, &__wait, TASK_UNINTERRUPTIBLE); if (condition) break;
2015-01-27 09:45:19 273
转载 linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待
2015-01-27 09:16:59 603
转载 软中断,tasklet和工作队列的区别与联系
为了让中断处理运行的快,同时要完成相应的全部工作。根据具体的内容将中断分为两个部分:上半部分(中断处理程序)和下半部分(推后处理程序)。上半部分需要立即执行,并且有严格的时间限制,这些工作是在所有中断被禁止的情况下完成的,剩余部分工作推迟到下半部分。下半部分的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。在Linux2.6的内核中存在三种不同形式的下半部实现机制:软中断,tas
2015-01-20 13:38:05 1967
转载 tasklet和工作队列
tasklet tasklet vs 内核定时器 相同:始终在中断期间运行,始终会在调度他们的同一CPU上运行,而且都接收一个unsigned long参数 不同:不可以要求tasklet在某一给定的时间执行tasklet对中断处理例程来说尤其有用。中断处理例程必须尽可能快的管理硬件中断,而大部分数据管理则可以安全的延迟到其后的时间。实际上,
2015-01-20 13:32:20 377
转载 对Linux系统休眠的理解
今天看了一个关于中断例程为什么不能休眠的文章,引发了我的思考。其实这个问题在学习驱动的时候早就应该解决了,但是由于5年前学驱动的时候属于Linux初学者,能力有限,所以对这个问题就知其然,没有能力知其所以然。现在回头看这个问题的时候,感觉应该可以有一个较为清晰的认识了。首先必须意识到:休眠是一种进程的特殊状态(即task->state= TASK_UNINTERRUPTIBLE | TASK_
2015-01-09 09:37:44 264
转载 信号量、互斥体和自旋锁
一、信号量 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作: (1) 测试控制该资源的信号量。 (2) 若此信号量的值为正,则允许进行使用该资源。进程将信号量减1。 (3) 若此
2015-01-05 08:37:32 319
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人