《Linux内核编程指南》心得之三

1.通常执行系统调用时,它不能被调度程序中断,唯一发生的机会是它锁定或者调用schedule()以明确地允许其他进程的执行.

2.进入关键段时可以用关中断而退出时再打开,这样可以简单地排除竞态条件.

3.在PC体系结构中默认用来指示RAM错误的非屏蔽中断(NMI)例外.

4.开关中断的方法不适用于分别处再不同处理机中运行进程之间的进程竞态消除,现在用得比较多的一种同步机制称为"自旋锁",其实现依赖于特定的计算机结构.

5.自旋锁就是一个全局变量,类型定义为typedef struct{volatile unsigned int lock;} spinlock_t;某进程需要某项资源就将该资源对应的自旋锁变量置0,其他有需要的进程观察到自悬锁是0就等待.在中断中也可以使用自悬锁,所以自悬锁不禁止中断,这是自悬锁的一个优点,对于想要获取该项资源的中断,最好在资源忙时进行定时监听.

6.由于自悬锁本身的全局性质,使得自旋锁也成为一项资源,所以在加锁过程中要保证其他处理机的总线访问被阻塞,也就是要保证确实是本进程加的锁.我认为也可以通过写入处理机ID和进程ID来加固加解自旋锁的安全,在真正要操作资源前,确认自旋锁的处理机ID与进程ID.

7.对于单处理机,使用读写锁解决进程同步问题,其机制不是很明白.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值