程序的并发执行主要由以下因素引起:
多道程序设计:
在同一时刻,内存中存放了多个作业,处理器交替运行不同的作业,从而提高了系统的效率,尤其是资源利用率。这使得程序可以并发执行,即计算机同时运行几个程序,CPU要不断地在几个程序之间切换。
CPU执行环境变化:
在多道程序系统中,程序执行环境的变化(如CPU的切换)会引起多道程序的并发执行。这意味着一个程序段的执行尚未结束,另一个程序段的执行已经开始。
程序代码结构:
有些程序或程序段中包含可以同时执行或顺序颠倒执行的代码。例如,`read(a)`和`read(b)`既可以同时执行,也可以颠倒次序执行。
操作系统调度:
操作系统在调度进程时,可能会导致多个进程同时执行,从而产生并发执行的效果。系统调用和进程间的资源竞争也会引发并发问题。
硬件支持:
现代计算机系统通常具有多个CPU,这些CPU可以同时执行不同的任务,从而支持程序的并发执行。对称多处理(SMP)技术使得多个处理器可以同时执行代码。
中断和时钟电路:
中断机制和时钟电路使得CPU可以在执行当前任务时被异步事件打断,从而支持并发执行。例如,中断可以打断正在执行的代码,使得其他任务得以执行。
综上所述,程序的并发执行主要由多道程序设计、CPU执行环境变化、程序代码结构、操作系统调度、硬件支持以及中断和时钟电路等因素引起。这些因素共同作用,使得计算机能够在同一时间内执行多个任务,从而提高系统的整体性能和资源利用率。