1. 操作系统(Operator System)
冯诺依曼体系
我们都知道大部分的计算机都和冯诺依曼体系结构相吻合,冯诺依曼体系中包含输入设备,存储器,中央处理器(CPU)以及输出设备.其中中央处理器中包括了运算器和控制器.
组成
操作系统其实就是一个基本管理的程序集合,他的主要目的就是对计算机中各个部分进行管理操作.
操作系统大致包括:
- 内核: 内核中主要进行文件管理,内存管理,进程管理以及驱动管理等操作.
- 其他程序例如函数库,脚本程序等等.
作用
- 和硬件设备进行交互,来对软件和硬件进行管理.
- 方便用户,让应用程序能够更科学高效地在使用环境中执行.
2. 进程(Process)
对于操作系统来说,我们要求操作系统执行的任务就被称为进程.
并发与并行
并发
现在很多的系统大多都是可以同时运行多任务的,但一个 CPU 同时只能运行一个任务,所以操作系统就会把多个不同的任务轮流调转到内核上来执行.
虽然我们看似计算机是在同时执行很多个不同的任务,但实际上一个 CPU 让一个进程执行一小段时间之后就强制暂停,再去执行下一个进程,这样轮流地调度执行进程.这种抢占式的调度方式就是时间片轮转.其中任务被强制暂停前执行的这一小段时间被称为时间片.
了解了操作系统执行任务的方式之后我们可以看出来,我们肉眼所看到的多任务其实只是 CPU 在同一时间段内非常快速地轮流执行每一个进程.这种一个 CPU 采用时间片轮转方式来处理多个进程,让多个进程都得到执行的方法就叫做并发.可以说是一种伪同步.
并行
相较于并发,并行相对就更加的直接一点.并行是指多个进程在多个 CPU 下分别同时执行.简单来说就是每个 CPU 在同一段时间内只执行一个进程,比并发更加的“专一”.
区别
- 并发是一个 CPU 在一段时间内轮流快速执行多个进程
- 并行是多个 CPU 在同时对应执行多个进程
内核态与用户态
内核态和用户态是操作系统对于执行权限的一个分级.
上文提到操作系统组成主要是内核以及其他程序,而操作系统内核是直接控制硬件设备的最底层软件,所以它具有非常高的执行权限,被称为内核态(也叫做核心态).
由于用户应用程序的权限最低,所以被称为用户态.
进程的状态
在多进程并发过程中,只有一个进程是在执行的,那么其他进程就会存在不同的状态.
- 运行状态: 进程可运行,并且 CPU 时间片轮转到该进程并且正在执行的状态.
- 就绪状态: 进程可运行,但是时间片还没有轮转到该进程,处于待执行中.
- 阻塞状态: 进程没有运行条件,等待其他事件的完成.
进程中的上下文
当操作系统通过时间片轮转的方式来轮流执行多进程时,由于每个进程的运行环境不相同,在切换执行程序的时候同时也要切换前后不同进程的上下文环境.
上下文环境是进程在执行时,记录着 进程的状态, 寄存器的值以及堆栈的内容.当进程被切换时,需要保存当前进程的所有状态,也就是记录进程的上下文.当轮流再次调度该进程时,就能够恢复原来的状态继续运行.