Linux内核设计与实现读书笔记(二).docxVIP

  • 1
  • 0
  • 约5.54千字
  • 约 16页
  • 2020-03-04 发布于广东
  • 举报

Linux内核设计与实现读书笔记(二).docx

Linux内核设计与实现读书笔记(二) 第八章内核同步介绍 1 临界区和竞争条件 临界区:访问和操作共享数据的代码段。 竞争条件:两个执行线程处于同一个临界区中。 2 内核中造成并发的原因 1)中断:任何时刻异步发生,打断当前执行的代码。 2)软中断和tasklet:任何时刻唤醒或调度软中断、tasklet。 3)内核抢占(preempt)。 4)睡眠及与用户空间的同步:唤醒调度程序,调度新进程执行。 5)对称多处理器(SMP)。 3 需要加速的代码 1)中断安全代码; 2)SMP安全代码; 3)抢占安全代码。 ★给数据加锁而不是给代码加锁。 4 编程需注意的问题: 1)数据是否全局?除了当前线程,其他线程是否可以访问? 2)数据是否在进程/中断上下文中共享?是否在两个不同中断中共享? 3)进程在访问数据时可否被抢占?被调度的新进程是否会访问同一数据? 4)当前进程是否会睡眠(阻塞)在某些资源上?共享数据处于何种状态? 5)怎样防止数据失控?若在另一处理器上调度? 5 预防死锁 1)★加锁顺序是关键,使用嵌套锁必须以相同顺序获取锁; 2)防止发生饥饿; 3)不要重复请求同一个锁; 4)复杂的加锁方案也可能造成死锁——简化设计; 5)建议以获取锁相反的顺序来释放锁。 第九章内核同步方法 1 原子操作 原子操作执行过程不被打断,原子操作接口分为整数操作接口和单独位操作接口。 2 原子整

文档评论(0)

1亿VIP精品文档

相关文档