若程序错写成: while(誊抄未完成) { cobegin copy; put; get; coend }
初始状态: f=(R1,R2,...,Rn) s=() t=() g=() 首先顺序执行了一次 get(s,f), copy(t,s) put(g,t) f=(R1,R2,...,Rn) s=(R1),t=(R1),g=(R1)
第五章 并行性:互斥和同步
为了充分利用计算机各部分的能力, 使之并行运行以提高计算机系统的效率 和性能,计算机界一直在坚持不懈地、 不遗余力地发展并行技术。近几十年来, 随着多道程序设计、多处理器系统、分 布式处理系统技术的发展,操作系统的 并行技术不断完善。
掌握
程序顺序执行和并行执行的含义和特点 并行执行的表示方法 临界段的定义、目的、设计原则 同步和互斥的含义、实现方式 信号量机制:信号量定义、物理意义、信号量 的使用(互斥、同步、生产者/消费者, 阅读者 /写入者等)。 进程通信
<a>: flag[i] := true <b>: while flag[j] do skip
中断屏蔽法
禁止一切中断发生。 单CPU中,引起进程切换的唯一原因是中 断,故单CPU下可行。 缺点:
代价高,影响并发性 不安全,将禁止一切中断权利给了普通用户。 局限性:不适合多CPU,一个进程只能禁止本 CPU的中断。
P Q 并行执行区 R
程序并行性的表示之一:有向图
S
S
S
F
F
F
程序并行性的表示之二:并行语言
并行语言:并行PASCAL,CSP/K语言,MODULA语言, 扩充的Ada等. 并行语句记号: cobegin S1;S2;S3;...;SN coend; Si(i=1,2,3,...,n)表示n个语句(程序段),这n个语 句用cobegin和coend括起来表示这n个语句是可以并 发执行的。co是concurrent的头两个字符。 有的书用parbegin和parend表示。 Si: 简单语句,复合语句,并行语句。 编译程序为每个并行语句Si设置一个进程。