进程
1、认识进程:
对于操作系统来说,一个任务就是一个进程,本质上是正在执行的一个程序。
我们可以通过查看“windows任务管理器”中的列表,我们可以完全认为在内存中的每一个exe文件理解为进程。
但是并不是进程与程序是一个概念,进程是动态的(进程是担当分配系统资源(CPU时间,内存)的实体,是具有动态特性的),而程序是一个静态的资源。
进程:通过程序运行,表现在操作系统执行的,被操作系统所管理的(进程管理)
程序:是一个在硬盘上的驱动,属于文件,是一种静态的资源,可执行的资源
文件:是本地磁盘的资源
简单的说明一下进程管理:一个操作系统管理进程的结构体,将进程的信息保存在结构体中,相当于一个清单(进程表),将进程管理起来,由操作系统进行调度
2、时间片:
现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。所谓的多任务,就是操作系统可以同时运行多个任务。
轮转调度:一种最古老的,最简单,最公平使用最广的算法。任务执行的一小段时间叫做时间片,任务正在执行时的状态叫运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个属于它的时间片的到来。
3、并发和并行
- 并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发(假同时)。
- 并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行(真同时)。
进程上下文
- 上下文:其实就是一个环境。
进程在时间片轮转切换时,每个进程运行环境不同,这样就涉及到前后的上下文环境的切换。
从一个进程切换到另一个进程是需要一定的时间进行管理事务处理的
- 就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。
- 切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
进程的状态
- 运行态(该进程实际占用cpu)
- 就绪态(可运行,但是因为其他进程正在执行而被停止)
- 阻塞态(除非某种外部时间发生,否则进程不能运行)
对于前面两种情况的进程都是可运行的,只是对于就绪态,暂时没有CPU分配给他,对于第三种状态,就算此时有空闲的CPU也不会让该进程运行。