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