进程交互 (1)独立进程两进程并行但不相关 设进程为事件序列,若有C,K两并行进程,可表达为CK。其中 C=Cl, C2.Cn) K=KI, K2,.Km) 独立进程是两进程内任何事件Ci,Kj的执行都不依赖对方。 (2)竞争进程两进程竞争同一资源 临界段( Critical section):据有并加工资源的代码段 竞争进程一般形式是 op K: loop 入口协议 入口协议 临界段 临界段 出口协议 出口协议 非临界段 非临界段 end loop end loop 入口协议一般是按所设共享变量判断能否进入,出口协议则改置正确值。为确保进程的 确定性,利用共享变量“通信”协调
进程交互 (1) 独立进程 两进程并行但不相关 设进程为事件序列, 若有C,K两并行进程, 可表达为C‖K。其中: C={C1, C2…Cn} K={K1,K2,…Km} 独立进程是两进程内任何事件Ci, Kj的执行都不依赖对方。 (2) 竞争进程 两进程竞争同一资源 临界段(Critical section):据有并加工资源的代码段。 竞争进程一般形式是: C : loop K : loop 入口协议 入口协议 临界段 临界段 出口协议 出口协议 非临界段 非临界段 end loop end loop 入口协议一般是按所设共享变量判断能否进入,出口协议则改置正确值。为确保进程的 确定性,利用共享变量“通信”协调
进程交互 3)通信进程两进程有协议的信息交换 设C,K定义如前,Ci必须先于KK要用到C的结果)的执行,即其它 事件先后无所谓,一定要保证C,Kj的执行顺序。 同步( synchronous)通信 指两进程进度各不相同,但必须同步到达通信点。若一方未到, 另一方等待,直至完成信息交换。交换后各自执行各自进程则为单 向同步通信。如果交换后,发送方一直等待接受方执行的结果,拿 回结果后再各自执行自己的进程为双向同步通信。 >异步 (asynchronous通信 般要借助相当大的邮箱。两进程以各自速度执行,发送方有了信 息投入邮箱,并继续执行自己进程。接受方在认为合适时从邮箱获 取信息。一般不竞争邮箱且为单向通信,当然也可做成双向的 定向/广播式通信 所谓定向是发送方指明接受方。而广播式通信发送方只向公共信道 发送信息,任何共享该信道的成员均可接受,所以是异步通信 单向的
(3) 通信进程 两进程有协议的信息交换 设C,K定义如前, Ci必须先于Kj(Kj要用到Ci的结果)的执行, 即其它 事件先后无所谓,一定要保证Ci, Kj的执行顺序。 ➢ 同步(synchronous)通信 指两进程进度各不相同, 但必须同步到达通信点。若一方未到, 另一方等待,直至完成信息交换。交换后各自执行各自进程则为单 向同步通信。如果交换后,发送方一直等待接受方执行的结果,拿 回结果后再各自执行自己的进程为双向同步通信。 ➢ 异步(asynchronous)通信 一般要借助相当大的邮箱。两进程以各自速度执行,发送方有了信 息投入邮箱,并继续执行自己进程。接受方在认为合适时从邮箱获 取信息。一般不竞争邮箱且为单向通信,当然也可做成双向的。 ➢ 定向/广播式通信 所谓定向是发送方指明接受方。而广播式通信发送方只向公共信道 发送信息,任何共享该信道的成员均可接受, 所以是异步通信、 单向的。 进程交互
主要内容 并发程序设计的基本概念 并发程序带来的问题 需要解决的基本问题 程序语言示例
主要内容 • 并发程序设计的基本概念 • 并发程序带来的问题 • 需要解决的基本问题 • 程序语言示例
带来的问题 (1)速度依赖 (2)输入值依赖 (3)不确定性 (4)死锁 (5)死
带来的问题 (1) 速度依赖 (2) 输入值依赖 (3) 不确定性 (4) 死锁 (5) 死等
带来的问题 (1)速度依赖 并发程序执行结果,取决于顺序成分进程执行的相对速度。对于并 发且有实时( real time)要求的程序,执行结果还取决于绝对速度。 ·并发程序调整相对速度的办法是延迟快进程。把进程挂起来(进入悬 置态)待到指定条件满足才唤醒该进程。其基本原语是: awai表达式>do<语句|进程> (2)输入值依赖 同一并发程序两组数据输入可能会有很大差别
带来的问题 (1) 速度依赖 • 并发程序执行结果,取决于顺序成分进程执行的相对速度。对于并 发且有实时(real time)要求的程序,执行结果还取决于绝对速度。 • 并发程序调整相对速度的办法是延迟快进程。把进程挂起来(进入悬 置态)待到指定条件满足才唤醒该进程。其基本原语是: await<表达式> do <语句|进程> (2) 输入值依赖 • 同一并发程序两组数据输入可能会有很大差别