并发进程

一组进程的执行在时间上是重叠的,这种执行方式称为进程执行的「并发性」。从宏观上看,并发性反应一个时间段中几个进程都在同一处理器上,处于运行还未运行结束状态。从微观上看,任一时刻仅有一个进程在处理器上运行。

并发的实质是一个处理器在几个进程之间的多路复用。并发是对有限的物理资源强制形式多用户共享,消除计算机部件之间的互等现象,以提高系统资源利用率。

img-2024-04-07 19-41-45.png

并发进程分类

根据进程之间的相关性,可以将进程分为无关并发进程交往并发进程

特点

特点:

  1. 任务分解:并发程序通常需要将大任务分解为多个小任务,这些小任务可以独立或部分独立地执行。
  2. 共享资源:多个并发执行的任务可能需要访问共享的资源(如内存数据结构等),需要合理管理以避免冲突和错误。
  3. 任务同步:涉及到任务之间的依赖和交互,需要同步机制来协调任务执行顺序,保证数据一致性和状态正确性。
  4. 任务通信:并发任务之间可能需要交换信息,通信机制(如消息传递、信号量、共享内存)是必不可少的。
  5. 动态性:并发程序的执行顺序可能不是静态确定的,同一程序的多次执行可能呈现不同的运行路径,导致调试和测试复杂。

优点:

  • 对于单处理器系统,可让处理器和各 I/O 设备同时工作,发挥硬部件的并行能力。
  • 对于多处理器系统,可让各进程在不同处理器上物理地并行,加快计算速度。
  • 简化程序设计任务。

缺点

  1. 设计和调试复杂性:并发程序的设计、测试与调试远比串行程序复杂,因为需要考虑线程或进程间的同步、通信以及死锁、竞态条件等问题。
  2. 开销问题:并发程序需要额外的资源和运行开销,如创建线程的开销、上下文切换的开销、同步机制的开销等。
  3. 安全性问题:并发访问共享资源需要精心设计来避免竞态条件,否则可能导致数据损坏或不一致。
  4. 可预测性和可重复性差:由于并发程序的非确定性特性,同一段代码在不同时间或不同环境下的执行可能得到不同的结果。
  5. 硬件依赖性:并发程序的性能提升可能依赖于执行它的硬件特性,如处理器核数,这可能导致程序在核数较少的系统上表现不佳。

目的

  • 充分发挥硬件的并行性,提高系统效率。硬件能并行工作仅有了提高效率的可能性,硬部件并行性的实现需要软件技术去利用和发挥,这种软件技术就是并发程序设计。
  • 并发程序设计是多道程序设计的基础,多道程序的实质就是把并发程序设计引入到系统中。