上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 25 下一页

2013年9月15日

Publish/Subscribe Model——Notification chain——观察者模式

摘要: 内核中用的很多,整理时间子系统的时候又遇到了notification mechanism,因此做次记录:参考:1、http://msdn.microsoft.com/en-us/library/ff649664.aspx 2、http://blog.csdn.net/lovelion/article/details/7720232 3、2.6.34 观察者(Observer)模式是对象的行为型模式,又叫做发表-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-收听者(Source/Listener)模式或从属者(Dependents)模式。 当某件.. 阅读全文

posted @ 2013-09-15 09:30 阿加 阅读(2129) 评论(0) 推荐(0) 编辑

2013年9月12日

非抢占式RCU实现(二),解释:为什么 RCU_NEXT_SIZE 宏值是4?

摘要: 参考:2.6.34一个很奇怪的问题。没有查找到为什么 RCU_NEXT_SIZE的值为4的原因(包括Documentation),主要是在rcu_state中定义了一个四级的list,感到很有意思。我给出自己的解释。还是看下代码吧,容易解释:=========================================================引入nxtlist与 RCU_NEXT_RCU_DONE_TAILstatic void rcu_do_batch(struct rcu_state *rsp, struct rcu_data *rdp) ... 阅读全文

posted @ 2013-09-12 17:22 阿加 阅读(894) 评论(0) 推荐(0) 编辑

2013年9月10日

非抢占式RCU实现(一)

摘要: 关于RCU的实现,考虑如下情形:1、非抢占式RCU2、限于嵌入式系统4核、每核单线程3、RCU_FANOUT = 32此时,RCU_TREE退化为单节点,如下,针对rcu_sched_state的使用做相关分析。本想从解析各个数据结构之间的关系入手,但是没有成功,因此首先读下内核代码:以下记录中以数组形式表示rcu_data,但是注意这是per-CPU变量,实际并非数组。系统完成初始化后(rcu_init)的情形如下:struct rcu_state rcu_sched_state = { .node[0] = { .gpnum = 0, .qsmak... 阅读全文

posted @ 2013-09-10 22:55 阿加 阅读(1461) 评论(0) 推荐(0) 编辑

2013年9月9日

非抢占式RCU中关于grace period的处理(限于方法)

摘要: 参考自:http://blog.csdn.net/junguo/article/details/8244530 Documentation/RCU/*TREE_RCU将所有的CPU组织成一颗树,通过层次结构来判别进程是否通过了宽限期,这种方式适用于多个CPU的系统 TINY_RCU适用于单个CPU,尤其是嵌入式操作系统。RCU实现的关键集中在宽限期的处理上,这个过程需要保证销毁对象前,当前系统中所有CPU上运行的进程都通过了静止状态(quiescent state)。 1, 程序调用call_rcu_sched,将要删除的对象保存起来。并标记或者开始一个宽限期(同一时间只能运行一个宽限期,所以 阅读全文

posted @ 2013-09-09 12:08 阿加 阅读(1298) 评论(0) 推荐(0) 编辑

非抢占式RCU中的一些概念

摘要: 该记录着重介绍下:2.6.34版本中非抢占式RCU的基本概念。RCU保护的是指针,因为指针的赋值可以使用原子操作完成;在非抢占式RCU中:对于读者,RCU仅需要抢占失效,因此获得读锁和释放读锁分别定义为:对于非抢占式RCU,在操作读取数据的过程中不允许进程切换,否则因为写者需要等待读者完成,写者进程... 阅读全文

posted @ 2013-09-09 11:48 阿加 阅读(1667) 评论(0) 推荐(0) 编辑

2013年9月7日

大内核锁 BKL

摘要: 参考:http://blog.csdn.net/universus/article/details/5623971 http://blog.csdn.net/chenyu105/article/details/7726492 《Linux Kernel Development》 3ed_CN p159 2.6.34 锁保护的是数据,在程序路径中访问数据,确保数据被访问的惟一性,就必须保证只有一个线程正在位于相应的程序路径。 大内核锁也是一种锁,问题在于其锁的粒度太粗,当有大量不同的数据在一个程序路径中被访问时,若能保证只有一个线程位于该程序路径,则可以保证数据正在被访问的惟一性。大内核锁的.. 阅读全文

posted @ 2013-09-07 21:28 阿加 阅读(1546) 评论(0) 推荐(0) 编辑

2013年9月6日

自旋锁的选择

摘要: 参考:《Linux Kernel Development》3ed_CN p-149 扩展如下内容中没有涉及读写自旋锁,尝试锁的获取等,只包含一般情形;如下是我的总结,如有误,请指出:自旋锁在不同情况下的选择: 1、进程上下文与进程上下文之间: spin_lock()2、进程上下文与中断上半部之间: spin_lock_irqsave() or spin_lock_irq()3、进程上下文与中断下半部之间: spin_lock_bh()4、中断上半部与中断上半部之间: spin_lock_irqsave() or spin_lock_irq()5、中断上半部与中断下半部之间: spin_lock 阅读全文

posted @ 2013-09-06 15:56 阿加 阅读(769) 评论(0) 推荐(0) 编辑

2013年9月4日

单核与多核上锁的区别

摘要: 参考:1、《Linux Kernel Development》3ed_CN p131-p140 2、2.6.34单核://锁的数据类型实现typedef struct { } arch_spinlock_t;typedef struct raw_spinlock { arch_spinlock_t raw_lock;}raw_spinlock_t;typedef struct spinlock { union { struct raw_spinlock rlock; }; //以我对C的了解,这种定义方式还是第一次见到(以前见到,也没留意过),这个union的联... 阅读全文

posted @ 2013-09-04 16:33 阿加 阅读(3890) 评论(0) 推荐(0) 编辑

2013年9月2日

统计用户磁盘所占空间

摘要: 用着中端,显示磁盘空间不足,因此写了这个脚本,统计各个用户所用磁盘空间大小。将该文件放在179的/home目录下,进行执行,在/home目录下将生成4_25.txt文件。注:总空间1T, 可以用 “ df "命令统计磁盘总空间大小。file: x.sh usage: sudo ./x.sh#! /bin/shtmpfilename=/tmp/4.txtstorefilename=4_25.txtleftspace=0rm -f ${tmpfilename} rm -f ${storefilename} for user in `ls -l | awk '/^d/{print 阅读全文

posted @ 2013-09-02 21:52 阿加 阅读(451) 评论(0) 推荐(0) 编辑

中断线程

摘要: 参考:2.6.34看了下2.6.34中的中断线程,但是在《内核设计与实现》3ed_CN的p_90~p_130内并未提起中断线程,因此做下记录,其中关于kthread_create函数已在“工作队列”笔记中做了说明。通常通过request_irq申请中断资源时并未注册中断线程处理函数,可以通过request_threaded_irq来注册中断线程处理函数。注册中断线程处理函数:int request_threaded_irq(unsigned int irq, irq_handler_t handler, ... 阅读全文

posted @ 2013-09-02 11:25 阿加 阅读(687) 评论(0) 推荐(0) 编辑

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 25 下一页

导航