随笔-111  评论-12  文章-0 
  2017年5月23日
摘要: 最近在x86的内核上,使用/proc/kcore调试分析内核信息时,发现这个arch下编译的/proc/kcore不能正常工作。调试其文件系统的模块后,发现竟与内存管理模型配置有关,最后使其正常工作。阅读全文
posted @ 2017-05-23 20:07 bbqz007 阅读(39) 评论(0) 编辑
  2017年5月11日
摘要: 抢断调度,是调度机制对实时系统需要的支持,是一种快速响应的重调度机制。既然与重调度有关,那么就先回顾一下调度和重调度。 调度分两种情况,1. 一种是自愿调度,由代码主动调用schedule来让度cpu,例如sleep,mutex,sema等阻塞等待。另外,当一个进程(或线程)走到尽头(do_exit阅读全文
posted @ 2017-05-11 19:54 bbqz007 阅读(3) 评论(0) 编辑
摘要: kernel中有两个rcu的实现,一个是tiny rcu,另一个是tree rcu。这两种rcu的前身都是classic rcu。如果要阅读classic rcu的实现代码,必须找kernel 2.6.26,因为在kernel 2.6.27,classic rcu开始转型为使用tree node的s阅读全文
posted @ 2017-05-11 18:51 bbqz007 阅读(3) 评论(0) 编辑
  2017年5月5日
摘要: pthread_cond的实现使用了几个futex来协同进行同步,以及如何来实现的。阅读全文
posted @ 2017-05-05 17:20 bbqz007 阅读(16) 评论(0) 编辑
  2017年5月4日
摘要: futex为更好支持pthread_cond的实现(,最主要是broadcast),设计了requeue功能,并以futex系统调用提供操作接口,包括一对配对的操作 futex_wait_requeue_pi 以及 futex_requeue。 mutex互斥体,确保临界区之间互斥(mutual e阅读全文
posted @ 2017-05-04 19:05 bbqz007 阅读(10) 评论(0) 编辑
摘要: phtread_mutex通过mutexattr设定其类型,并保存在成员__kind中。pthread_mutex的锁操作函数根据__kind进行方法的分派(dispatch)。__kind由5个字段的位属性组成,其中4个字段可以通过mutexattr进行设定。通过属性的组合来决定锁的功能和行为。 阅读全文
posted @ 2017-05-04 19:01 bbqz007 阅读(3) 评论(0) 编辑
  2017年5月2日
摘要: 与其它锁不同,rt_mutex的trylock与lock,unlock临界区同步。阅读全文
posted @ 2017-05-02 16:44 bbqz007 阅读(3) 评论(0) 编辑
摘要: RCU,Read-Copy Update,是一种同步机制,它的本质就是在同步什么?1. 它只有reader-side lock,并且不产生锁竞争。2. 它同步reader-side 临界区和 reclaim-side 临界区,而不是writer-side临界区。3. rcu reader并发访问由共阅读全文
posted @ 2017-05-02 16:39 bbqz007 阅读(12) 评论(0) 编辑
  2017年4月28日
摘要: futex的pi-support,也就是为futex添加pi算法解决优先级逆转的能力,使用pi-support的futex又称为pi-futex。在linux内核的同步机制中,有一个pi算法的成例,就是rt_mutex实时锁。而futex的pi-support部分就是委托(代理)给rt_mutex进阅读全文
posted @ 2017-04-28 20:45 bbqz007 阅读(4) 评论(0) 编辑
  2017年4月25日
摘要: pthread的lowlevellock是futex的最简单的锁应用。也是pthread其它同步原语最基本的锁。lowlevellock提供(或实现)了三种锁(方法),一是基于0或1的互斥的锁规则,二是基于robust futex定义的锁规则,三是用于condition重新对临界区上锁的操作。 lo阅读全文
posted @ 2017-04-25 20:49 bbqz007 阅读(9) 评论(0) 编辑