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