标签:进程 关闭 变量 cpu 进程间通讯 测试 用户 实现 临界区
1、临界区:把对共享内存进行访问的程序前段称为临界区
避免竞争,需要满足4个条件
1、任何两个进程不能同时处于临界区
2、不应对cpu的速度和数目做任何假设
3、临界区外的进程不得阻塞其它进程
4、不得在临界区外无休止的等待
实现互斥的方案:
1、关闭中断
每个进程在进去临界区时先关闭中断,在离开之前再打开中断。中断被关闭后,时钟中断也被屏蔽。cpu只有在发生时钟婚 其它中断时才会进行进程切换,因此关中断将不会发生进程调度,也就避免了竞争。
1.1、缺点,把关中断的权力交给用户进程是危险的
a、如果用户进程关闭中断,不在打开中断,系统将因此终止
b、在多核cpu中,关中断仅对当前cpu有效,其它cpu仍然可以访问共享内存
2、锁变量
设置一个共享锁变量,初值为0,当一个进程想进入临界区时,首先测试这把锁,如果锁值为0,则进程将其置为1,并进去临界区。若锁已经为1,则进程一直等待值变为0。
2.1、缺点:如果一个进程读取锁值为0,恰好在将它设置为1之前发生了调度,另外一个进程也做同样事情,并把锁值置为1。当第一个程序再次被调度时,也同样将锁值置为1,这样就同时有两个进程处于临界区中。
标签:进程 关闭 变量 cpu 进程间通讯 测试 用户 实现 临界区
原文地址:https://www.cnblogs.com/liushuhe1990/p/9734317.html