文档详情

操作系统教程-第2章3.ppt

发布:2018-01-04约5.08千字共27页下载文档
文本预览下载声明
2.3 进 程 通 信 进程相互制约 相互关联 进程通信:进程之间因为相互制约与相互关联而交换信息 2.3.1 进程同步与互斥(低级通信) 1. 进程之间的关系 合作关系 竞争关系 两个概念:同步与互斥 同步:多个进程在执行过程中,为了共享资源与相互合作而在执行次序上的协调,称为同步,即共享同一资源的进程和相互关联进程以通信手段来保障完成任务时保持一种固定的时间关系。 互斥:当某一进程访问某一资源时,不允许别的进程同时访问,这种限制称为互斥,即多个进程在访问某些资源(如临界资源)时,也要有一种执行次序上的协调,当一个进程访问完毕,另一个进程才能访问。所以就其本质来讲,互斥仍是一种同步。 2.临界资源与临界区 1) 临界资源 一次仅允许一个进程访问的资源称为临界资源 如:打印机、磁带机、系统中共享变量、表格、队列、栈等 若有两个进程P1、P2,共享一个公用变量c,初值为8,P1、P2所做工作如下: P1 P2 L1:a = c; L4:b = c; L2:a = a+1; L5:b = b-1; L3:c = a; L6:c = b; (1) 若语句执行顺序为L1,L2,L3,L4,L5,L6,则c = 8; (2) 若语句执行顺序为L1,L2,L4,L5,L3,L6,则c = 7 2) 临界区 进程访问临界资源的程序段称为临界区。 3.对临界资源互斥访问的解决方法 1) 锁变量 设一个共享锁变量L,表示某个临界资源。其初值为0,表示锁开的状态。 当进程要求进入临界区时,测试锁变量,有两种情况: 若L为0,表示锁开着,则将L置为1,即可进入临界区。使用完毕,将L置为0,以便其它进程使用该临界资源; 若L为1,表示锁未开,则进程不断地进行测试,直到L为0时,方可进入临界区。 ? 由三个并发进程A、B、C,共享公共变量X,用加锁开锁法实现临界区的互斥。 A   B C …        …         … Lock(L) Lock( L ) Lock( L ) 临界区代码 临界区代码 临界区代码 Unlock( L ) Unlock( L ) Unlock( L ) … … … 问题: 忙等待,违背进程互斥访问临界区的条件(4) 两进程同于临界区违背了进程互斥访问临界区的条件(1) 2) 严格轮转法 设一个公用变量i,存放被允许进入临界区的进程的编号。 每个进程进入临界区时,对变量i进行测试,当进程号与变量i的值相等时,方可进入临界区,否则反复进行测试的工作。 进程出临界区时为公用变量i设置允许进入临界区的进程的编号,然后执行该进程非临界区的操作。 问题: 违背进程互斥访问临界区的条件(4) 违背了进程互斥访问临界区的条件(3) 3) 屏蔽中断 作法是:每个进程进入临界区时,首先关中断再访问临界区,在离开临界区之前打开中断。中断关闭后,则时钟中断也被屏蔽,CPU将无法进行进程切换,就不必担心其 它进程竞争该资源。 问题:若用户进程忘了打开中断,系统将终止。如果有多个CPU,一个进程访问一个临界区时,使用关中断仅可以阻止本CPU上执行的进程进入该临界区,不能防止别的CPU上的进程访问该临界区。 4) TS指令(Test and Set) TS指令是一种利用硬件解决互斥的方法,通常将TS指令称为测试并上锁指令。 TS指令的定义: ts = lock; lock = true; 其中变量ts、lock为布尔量。 将lock作为某临界区的锁变量。当lock为false时,为未锁状态,即临界资源未被占用;当lock为true时,为上锁状态,即临界资源已被占用。 问题: 用TS指令解决互斥的方法中,其检查
显示全部
相似文档