开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情
顺序程序设计
把程序设计成顺序执行的指令序列,不同程序也按照先后顺序执行。
顺序程序设计具有以下的特点:
- 环境封闭
- 过程重现
- 结果确定
- 执行顺序
并发程序设计
程序并发执行
- 宏观上:并发性反映一个时间段内有几个程序都处于运行但运行尚未结束的状态
- 微观上:任意一个时刻仅有一个程序的一个操作在处理器上执行
并发执行的实质是处理器在几个程序之间的多路复用,并发是对物理资源强行使多个用户共享的需求,提高系统资源利用率。
一个程序被设计成可与其他程序并发执行,则这种程序设计方法称为并发程序设计。
并发进程的特性
并发进程的分类:无关的、交往的。
无关的并发进程:一组并发进程分别在不同的变量集合上操作,一个进程的执行与其他并发进程的进展无关。 通俗来讲是一个进程不会改变另一个与其并发执行的进程的变量。
并发进程的无关性是进程的执行与时间无关的一个充分条件。 R(pi)={a1,a2,a3……an}——程序pi在执行期间引用的变量集 W(pi)={b1,b2,b3……bn}——程序pi在执行期间改变的变量集
若两个程序的变量集交集之和为空集: R(p1)nW(p2) u R(p2)nW(p1) u W(p1)nW(p2)=空集。则说明并发进程的执行与时间无关。
交往的并发进程:一组并发进程共享某些变量,一个进程的执行可能影响其他并发进程的结果。它会出现与时间有关错误的表现形式:结果不唯一、永远等待。
进程的交往——竞争与协作
并发进程之间的竞争关系:进程的互斥 并发进程之间的协作关系:进程的同步
竞争关系
若干进程因相互夺占资源而产生的竞争制约关系——进程互斥
资源竞争会引发两个控制问题
- 死锁
- 饥饿
我们既要解决饥饿问题,也要解决死锁问题
进程互斥:若干进程要使用同一共享资源时,任何时刻最多允许一个进程使用,其他进程必须等待,直到占有资源的进程释放资源。
协作关系
为了完成共同任务需要分工协作,这就是协作关系。
进程同步指为了完成共同任务的并发进程基于某个条件来协调其活动,因而需要在某个位置上排定执行的先后次序而等待、传递信号或消息所产生的制约关系。