专注SIP通讯产品与方案

进程的互斥

(1) 基本级进程间的互斥
            基本级进程间的互斥可使用原语Setunpreemptable(置成不可占入)和setpreemptable(置成可占入)。进程调用Setunpreemptable后,置成不可被其它进程夺走处理机的状态,最长可以运行两个时间片(timeslice)0假设一个进程在第一个时间片中申请了不可占入,就可以在不可占入状态下最多运行两个时间片,而总的运行时间将为两个时间片加上第一个时间片在申请不可占入前已运行的时间,如图5.12所示。进程应调用Setpreemptable以退出不可占入状态。如果进程在不可占入状态下的运行超出两个时间片,将被操作系统中的调度器杀死。
进程在不可占入状态下运行
(2) 进程与中断处理器之间的互斥
            原语0k用于进程与时和占入钟、I/O中断处理器之间的互斥,也可用于基本级进程间的互斥。它可以推迟I/O中断并使时钟中断只执行最小量的工作(查视进程在lock下运行的时间)。当一进程在lock下运行时,将不进入调度器去调度其它进程。但lockT的运行时间有限制,如超过限值,进程将被时钟中断处理器杀死。
在lock下运行的时间允许值,比不可占入状态下允许的时间值要小。因此,如果将lock用于基本级进程之间的互斥,只适用于具有很短的临界区(指不能被其它进程打断)的进程。