1 进程同步和互斥
1.1 进程同步和互斥的基本概念
- 在多道程序环境下,操作系统必须采取相应措施处理好进程之间的制约关系。
- 进程同步的主要任务是对多个有制约关系的进程在执行次序上进行协调,以使并发进程间能有效地、安全地互相合作和共享系统资源。
- 进程同步的两种协调方式
- 临界资源与临界区
临界资源也称独占资源、互斥资源,它是指某段时间内只充许一个进程使用的资源。比如打印机等硬件资源,以及只能互斥使用的变量、表格、队列等软件资源。
临界资源的使用只能采用互斥方式。当一个进程正在使用某个临界资源且尚未使用完毕时,其它进程必须阻塞等待。只有当使用该资源的进程释放该资源时,其它进程才可使用。任何进程不能在其他进程没有使用完临界资源时使用该资源,否则将会导致错误。
各个进程中访问临界资源的、必须互斥执行的程序代码段称为临界区。
- 同步机制应遵循的准则
① 空闲让进。当无进程处于某临界资源对应的临界区时,表明该临界资源处于空闲状态,应充许一个请求进入临界区的进程立即进入临界区。
② 忙则等待。当有进程已进入某临界资源对应的临界区时,表明该临界资源正在被使用,因而其它试图进入该临界资源对应临界区的进程必须在进入区代码处等待。
③ 有限等待。对要求访问临界资源的进程应保证其在有限时间内能进入自己的临界区,以免陷入“死等”状态。
④ 让权等待。当进程不能进入自己的临界区时,应立即阻塞自己并释放处理机,以免进程陷入“忙等”状态。 - 实现临界区互斥的基本方法
(1)软件实现方法
软件方法是指编程人员编写程序时在临界区前面设置检查语句,如果有其他并发执行的进程在临界区中,则不允许进程进入临界区,只能在临界区外“忙等”或阻塞。当其他进程退出临界区后,进程能够进入临界区运行。
常见的软件实现方法有:Dekker算法和Peterson算法等。
(2)硬件实现方法
(2)硬件实现方法
① 中断禁用
为保证多个并发进程互斥使用临界资源,只需保证一个进程在执行临界区代码时不被中断即可,这可通过系统内核为启用和禁用中断而定义的原语来实现。
② 专用机器指令
编程人员利用专用机器指令来实现临界区的互斥使用。在临界区代码前通过硬件指令来检查某一全局变量是否有其他并发执行的进程在临界区中使用。若没有,则可进入临界区;若有,则重复检查,处于“忙等”状态。当进程执行完临界区代码退出时,修改该全局变量,允许其他并发执行的进程进入临界区执行
1.2 信号量机试
- 常见信号量分类
(1)整形信号量
(2)记录型信号量