操作系统中最核心的概念是进程:这是对正在运行程序的ー个抽象
并行 并发
“在任何多道程序设计系统中,CPU由一个进程快速切换至另ー个进程,使每个进程各运行几十或几百毫秒。严格地说,在某ー个瞬间,CPU只能运行ー个进程。但在1秒钟内,它可能运行多个进程,这样就产生并行的错觉。有时人们所说的伪并行就是指这种情形,以此来区分多处理器系统(该系统有两个或多个CPU共享同一个物理内存)的真正硬件并行”
- 并行(Parallelism)与并发(Concurrency):
- 并行指的是多个任务在同一时刻同时执行。这通常发生在多核或多处理器系统中,不同的处理器可以同时执行不同的任务。
- 并发则是指多个任务在一段时间内交替进行,从宏观上看好像同时发生,但实际上同一时刻只有一个任务在执行。在单核系统中,通过快速的任务切换实现这种效果。
- 时间分片(Time Slicing):在单处理器系统中,操作系统通过将CPU时间分配给不同的进程,让每个进程运行一小段时间(时间片),然后迅速切换到下一个进程。由于切换速度很快,给人的感觉是所有进程都在同时运行。
- 抢占式调度(Preemptive Scheduling):操作系统可以根据需要中断当前正在执行的进程,转而执行另一个进程。这种机制进一步增强了并发执行的效率和响应性,但每个进程仍然是交替执行的。
因此,当说“进程本质上是不可能做到真正的并行,只是切换的速度极快以至于产生并行的假象”时,这句话主要针对的是在单处理器环境下的情况,或者虽然在多核处理器环境下,但考虑到某些限制(如进程绑定到特定核心,或因资源竞争导致的阻塞)使得并非所有进程都能真正并行执行。在多核系统中,虽然存在真正的并行执行能力,但单个进程内的线程或其他任务之间仍然可能通过上述机制实现并发执行,而非所有部分都并行运行。
在进程模型中,计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程(sequentialprocess)»简称进程(process)oー个进程就是ー个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。
进程和程序
进程和程序间的区别是很微妙的,但非常重要。用ー个比喻可以更容易理解这一点。想象一位有ー手好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕。他有做生日蛋糕的食谱,厨房里有所需的原料:面粉、鸡蛋、糖、香草汁等。在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法),计算机科学家就是处理器(C