操作系统之进程—并发进程(一)

1.顺序程序设计

传统的程序设计方法是顺序程序设计,即把一个程序设计成一个顺序执行的程序模块,不同程序也是按序执行的。顺序分成内部顺序和外部顺序

  • 内部的顺序性 : 程序在处理器上执行时严格有序的,即只有当一个操作结束后,才能开始后继操作,这称为程序内部的顺序性
  • 外部的顺序性 : 如果完成一个任务需要若干个不同的程序,这些不同程序在时间上按调用次序严格有序执行,这称为程序外部的顺序性

2.并发程序设计

并发含义

  • 一个程序分成若干个可同时执行的程序模块的方法称为并发程序设计,进程的并发性是指一组进程的执行在时间上是重叠的,重叠是指一个进程执行的第一条指令是在另一个进程执行的最后一条指令完成之前开始的

并发例子

有两个进程A和B,进程A执行操作a1、a2、a3,进程B执行操作b1、b2、b3

  • 进程A和B顺序(串行)执行的情况:在单处理器上,进程A执行完,进程B才开始执行,它们的操作次序为:a1、a2、a3、b1、b2、b3
  • 进程A和B并发执行的一种情况:在单处理器上,进程A和B交替(交叉)执行,它们交替(交叉)执行的操作次序可能为:a1、b1、b2、a2、a3、b3

并发实质

  • 并发的实质是一个处理器在几个进程之间的多路复用 (多路复用比较出名的有时分复用,根据时间片调用不用的进程)
  • 并发是对有限的物理资源强制行使多用户共享,消除计算机部件之间的互等现象,以提高系统资源利用率
  • 宏观:并发性反映一个时间段中几个进程都在同一处理器上处于运行还未运行结束的状态
  • 微观:任一时刻仅有一个进程在处理器上运行

并发差异

  • 并发多线程程序设计:模块都属于一个进程,在进程内部执行
  • 并发多进程程序设计:模块属于不同进程

3.并发进程的特性

并发进程之间的关系分为两类:无关的交互的

  • 无关的并发进程:一个并发进程不会改变另一个并发进程的变量值
  • 交互的并发进程:一组并发进程共享某些变量,进程的执行可能影响其他并发进程的执行结果

Bernstein条件

并发进程的无关性是进程的执行与时间无关的一个充分条件,又称为Bernstein条件

4.进程的交互:协作和竞争

竞争关系(间接制约关系)

系统中的多个进程之间彼此无关,相互并不知道其它进程的存在,相互之间并不交换信息。但是由于这些进程共用了一套计算机系统资源,因而必然产生竞争资源的问题,一个进程的执行可能影响到同其竞争资源的其它进程。操作系统必须协调好诸进程对资源的争用。一旦一个进程要使用已分配给另一个进程的资源,则该进程必须等待

资源竞争产生两个问题

  • 一个是死锁(Deadlock)问题,就是一组进程如果都获得了部分资源,还想要得到其他进程所占用的资源,最终所有进程都将陷入死锁
  • 一个是饥饿(Starvation) 问题,是指一个进程由于其它进程总是优先于它而被无限期拖延 既要解决饥饿问题,又要解决死锁问题。解决饥饿问题的最简单策略是FCFS资源分配策略(先来先服务)

竞争解决

进程互斥是解决进程间竞争关系(间接制约关系)的手段

进程互斥

  • 指若干进程要使用同一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占有资源的进程释放该资源
  • 进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源,是对进程使用资源次序上的一种协调  
  • 临界区管理可以解决进程互斥问题

协作关系(直接制约关系)

某些进程为完成同一任务需要分工协作,由于合作的每一个进程都是独立地以不可预知的速度推进,这就需要相互协作的进程在某些协调点上协调各自的工作。当协作进程中的一个到达协调点后,在尚未得到其伙伴进程发来的消息或信号之前应阻塞自己,直到其他合作进程发来协调信号或消息后才被唤醒并继续执行。这种协作进程之间相互等待对方消息或信号的协调关系称为进程同步

进程同步:

指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒

 

 

猜你喜欢

转载自blog.csdn.net/m0_37834471/article/details/83661189