什么是进程/任务(Process/Task)
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程; 同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。
进程控制块抽象(PCB Process Control Block)
class PCB {
// 进程的唯一标识 —— pid;
}
每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。
CPU 分配 —— 进程调度(Process Scheduling)
操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。
内存分配 —— 内存管理(Memory Manage)
操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干 扰。
进程调度的基本过程
- 进程到达:一个新进程到达系统并被添加到就绪队列中。
- 进程选择:调度器从就绪队列中选择一个进程在CPU上运行。选择算法可以基于优先级、最短作业优先、循环等标准。
- 上下文切换:当CPU从一个进程切换到另一个进程时,需要保存第一个进程的当前状态,并加载保存第二个进程的状态。
- 进程执行:选定的进程在CPU上执行一定的时间,称为时间片。在此期间,进程可以执行其操作并使用系统资源。
- 进程终止:一个进程完成执行后,从系统中删除。
- 进程抢占:如果高优先级的进程进入就绪队列,而低优先级的进程正在执行,高优先级的进程可以抢占低优先级的进程,从而控制CPU。
- 重复:对系统中的每个进程重复上述步骤,直到所有进程完成。
此外,进程调度中涉及的要素还包括:
- 进程状态:包括运行、就绪和阻塞三种状态。
- 进程的优先级:优先级高的进程理论上会被更多更快的调度到CPU上执行。
- 上下文信息:记录了进程当前执行到哪里,包括CPU内部的寄存器值等。
- 记账信息:记录了每个进程在CPU上执行了多久,可以作为调度的参考依据。
冯诺依曼体系(Von Neumann Architecture)
冯诺依曼体系结构是由数学家冯诺依曼提出的计算机制造的三个基本原则和计算机的五个组成部分构成的。其中三个基本原则是:采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)。
五个组成部分包括:输入设备、输出设备、存储器、运算器和控制器。