一、基本概念
- 原子操作:一个函数(原语)或动作的指令序列不可分割,要么作为一个整体执行(不可中断),要么都不执行。
- 临界资源:一次仅允许一个进程独自占有使用的不可剥夺资源。
- 临界区:进程访问临界资源的那一段代码。
- 互斥:当一个进程正在临界区中访问临界资源时,其他进程不能进入临界区。
- 同步:合作的并发进程需要按先后次序执行。例如:一个进程的执行依赖于合作进程的消息或信号。当一个进程没有得到来自合作进程的消息或信号时需阻塞等待,直到消息或信号到达才唤醒。
- 死锁:多个进程全部阻塞,形成等待资源的循环链。
- 饥饿:一个就绪进程被调度程序长期忽视、不被调度执行。
- 信号量:用于进程间传递信号的一个整数。在信号两上只可以进行三种操作,即初始化,递增,递减。这三种操作分别都是原子操作。递减作用于阻塞一个进程,递增作用于解除一个进程的阻塞。信号量也称为计数信号量或一般信号量。
二、互斥
1、互斥的要求
- 强制互斥(忙则等待):一次只允许一个进程进入临界区。有进程正在临界区执行时,其他请求进程等待;等待进程退出后,从多个请求进程中选择一个进入临界区。
- 有限等待:请求进程应在有限的等待时间内进入临界区,不能造成进程死锁或饥饿。
- 有空让进:当临界区空闲时,请求进程可立即进入。
- 让权等待:进程不能进入临界区时,应释放处理器,避免忙等。
?#一个正在访问临界资源的进程由于申请等待I/O操作而被中断时,它可以允许其他进程抢占处理器ÿ