先决条件 – 进程同步
并发是同时执行多个指令序列。当有多个进程线程并行运行时,它会发生在操作系统中。正在运行的进程线程总是通过共享内存或消息传递相互通信。并发导致资源共享导致诸如死锁和资源匮乏之类的问题。
它有助于协调进程的执行、内存分配和执行调度等技术,以最大限度地提高吞吐量。
并发原则:
交错和重叠进程都可以看作是并发进程的例子,它们都存在相同的问题。
执行的相对速度无法预测。这取决于以下几点:
- 其他进程的活动
- 操作系统处理中断的方式
- 操作系统的调度策略
并发问题:
- 共享全球资源——
安全地共享全球资源是困难的。如果两个进程都使用一个全局变量并且都对该变量进行读写,那么执行各种读写的顺序就很关键。 - 资源优化配置——
操作系统很难优化管理资源的分配。 - 定位编程错误——
很难找到编程错误,因为报告通常是不可重现的。 - 锁定频道——
操作系统简单地锁定通道并阻止其他进程使用它可能效率低下。
并发的优点:
- 运行多个应用程序 –
它可以同时运行多个应用程序。 - 更好的资源利用——
它使一个应用程序未使用的资源可以用于其他应用程序。 - 更好的平均响应时间 –
在没有并发的情况下,每个应用程序都必须运行到完成才能运行下一个应用程序。 - 更好的性能 –
它使操作系统具有更好的性能。当一个应用程序仅使用处理器而另一个应用程序仅使用磁盘驱动器时,同时运行两个应用程序直至完成的时间将比连续运行每个应用程序的时间短。
并发的缺点:
- 需要相互保护多个应用程序。
- 需要通过额外的机制来协调多个应用程序。
- 在应用程序之间切换需要操作系统中的额外性能开销和复杂性。
- 有时同时运行过多的应用程序会导致性能严重下降。
并发问题:
- 非原子 –
非原子但可被多个进程中断的操作可能会导致问题。 - 比赛条件——
结果的竞争条件发生取决于几个进程中的哪一个首先到达某个点。 - 阻塞——
进程可以阻塞等待资源。一个进程可能会被阻塞很长一段时间,等待来自终端的输入。如果进程需要定期更新某些数据,这将是非常不可取的。 - 饥饿——
当一个进程没有获得服务来进行时,就会发生这种情况。 - 死锁——
它发生在两个进程被阻塞并且因此都不能继续执行时。