Chinaunix首页 | 论坛 | 博客
  • 博客访问: 706283
  • 博文数量: 90
  • 博客积分: 3225
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-20 11:04
个人简介

菩提本无树,明镜变非台 本来无一物,何处惹尘埃

文章分类

全部博文(90)

文章存档

2015年(1)

2014年(12)

2013年(15)

2012年(31)

2011年(8)

2010年(23)

发布时间:2012-07-02 18:54:04

 原子操作仅执行一次,在执行过程中不会中断也不会休眠;是最小的执行单元;鉴于原子操作这些特性,可以利用它来解决竞态问题。 往后其他同步机制都是在原子操作的基础上进行扩展的。 原子操作有整型原子操作、64位原子操作以及位原子操作。1 整型原子操作(Atomic Integer Operations) 要使用原.........【阅读全文】

阅读(5476) | 评论(1) | 转发(0)

发布时间:2012-06-27 14:47:48

1 什么是并发(处理) 并发处理指的是系统可以在同一时刻执行多个处理任务;在单核的系统中,硬件中断服务可导致并发的执行,但实际上CPU仍是串行执行,所以在单核系统中并非是意义上的并行处理;而在目前SMP系统中,由于具备多核芯片,所以SMP系统才是真正支持并发处理。2 并发导致的竞态问题 系统支持并发.........【阅读全文】

阅读(1553) | 评论(0) | 转发(0)

发布时间:2012-06-18 08:59:06

 在linux内核中,所谓的内核线程实际上是一个共享父进程地址空间的进程,它有自己的系统堆栈;所以它们依然是一个进程,只不过这些进程可以与其他进程共享某些资源,这里的其他进程也是所谓的线程。1 内核线程与普通进程的异同 1.1 内核线程没有自己的地址空间,所以它们的"current->mm"都是空的; 1.2 .........【阅读全文】

阅读(12163) | 评论(0) | 转发(9)

发布时间:2012-06-05 10:53:19

 内核中大量使用双向链表来维护相关数据的关系,特别是在一些数据处理模块上面; 双向链表结构和接口分别在“linux/types.h"和"linux/list.h"中定义。1 双向链表结构struct list_head {    struct list_head *next, *prev;};2 该链表使用方法&nbs.........【阅读全文】

阅读(2385) | 评论(0) | 转发(1)

发布时间:2012-06-04 15:01:09

1 "工作队列"用途 工作队列用途跟tasklet相似,在中断处理时将一些非紧急的任务留到工作队列中完成,而紧急的任务则在硬中断服务程序中完成。 但工作队列与tasklet还是有很大的区别: 1)工作队列函数在一个特殊内核进程的上下文中运行; 2)tasklet会在很短的时间段内很快执行,且以原子模式执行.........【阅读全文】

阅读(5127) | 评论(0) | 转发(3)

发布时间:2012-06-04 10:29:18

1 tasklet用途 在中断处理中大量使用tasklet机制;tasklet用于减少硬中断处理的时间,将本来是在硬中断服务程序中完成的任务转化成软中断完成,即是将一些非紧急的任务留到tasklet中完成,而紧急的任务则在硬中断服务程序中完成。2 注意事项 tasklet始终在中断期间和调度它的CPU上执行;调度一个tasklet只是.........【阅读全文】

阅读(4505) | 评论(0) | 转发(2)

发布时间:2012-04-13 16:49:43

  1 定时器用途  内核定时器用于在未来的指定时间点上执行某个函数;如果添加定时器时,指定的时间比系统时间要早,那么,系统将会在下一个"滴答“启动该定时器。  2 使用定时器注意事项  内核定时器基本上会在"软件中断"上下文中运行,所以定时器函数要注意以原子地运行;且定时器始终会在调度它.........【阅读全文】

阅读(3814) | 评论(0) | 转发(1)

发布时间:2012-04-10 15:02:34

  延迟可以分为长延迟和短延迟,但其划分界限并不是很清晰,一般以jiffies为单位进行的延迟通常认为长延迟;在内核中有很多方法实现延迟操作,但有些方法并不可取,例如忙等待;所以这里只记录那些不错的方案。 1 长延迟   对于长延迟,可以使用等待队列机制来实现,内核提供的接口如下: #inc.........【阅读全文】

阅读(2290) | 评论(0) | 转发(1)

发布时间:2011-12-15 17:06:54

1 bf = TAIL_FIRST(&sc->sc_rxbuf); // 获取队列的第一个数据(1) #define TAIL_FIRST(head) ((head)->tqh_first)(2) ath_bufhead sc_rxbuf; // 在struct ath_softc结构体里定义    2.1)typedef TAIL_HEAD(ath_bufhead_s,ath_buf) ath_bufhead;        2.1.1)#defi.........【阅读全文】

阅读(1522) | 评论(0) | 转发(0)

发布时间:2011-05-17 23:56:30

该宏定义在kernel.h中;原型为#define container_of(ptr, type, member) ({\    const typeof( ((type *)0)->member ) *__mptr = (ptr);\    (type *)( (char *)__mptr - offsetof(type,member) );}) 其中 ptr是指向正被使用的某类型变量指针;type是包含ptr指向的变量类型的结构.........【阅读全文】

阅读(4292) | 评论(0) | 转发(1)
给主人留下些什么吧!~~

zhuqing_7392012-07-20 10:49

博主的博客写的忒棒啊。。。。。学习中。。。

回复  |  举报
留言热议
请登录后留言。

登录 注册