进程
1、程序、作业和进程的区别与关系:
程序(program):用来描述一个计算机能完成的一个独立功能,程序被理解为”一个在时间上有严格次序的操作序列集合“,一般以静态文件形式存在。
作业(JOB):用户向计算机提交的任务实体,可以是一个程序,也可以是从键盘上输入的命令。
进程(process):具体完成用户任务的运行实体,分配资源和调度的基本单位。
程序被提交–>作业进入内存–>进程
在多道环境下,同一时刻,系统中有多件事情在同时做,程序运行失去了封闭性,运行也是走走停停,继续以程序的概念来管理程序的运行,已经无法正确有效的管理多道程序设计带来的动态特征,及程序之间的相互制约关系,因此引入一个新的概念来更好的对并发进行管理和控制,这个新的概念就是——进程。
进程的组成:程序+数据+进程控制块(PCB)
2、进程的定义
对于进程的定义,有多种不同的说法:
传统的进程定义:
-
一个正在执行的程序
-
计算机中正在运行的程序的一个实例
-
可以分配给处理器并由处理器执行的一个实体
-
有若干线程、一个当前状态和一组相关的系统资源所刻画的活动单元
这些说法都对,但引入线程后,第四种说法显得更为贴切
大多数情况下我们是这样定义的:是程序在给定数据集合上的一次执行过程,是系统进行资源分配和调度运行的独立单位。
系统进程:系统进行软硬件资源管理的进程,其相互关系由操作系统负责协调,是系统资源的实际享有者。
用户进程:可以独立执行的用户程序段,不插手资源管理,相互关系由用户安排,调度级别低于系统进程。
3、进程的特征
- 动态性(最基本特征):进程是动态变化的,每个进程都有一个从创建到消亡的过程
- 并发性:多道程序中每个进程的执行过程,总是与其他进程的执行过程并发执行的–重要特征
- 独立性:多个进程同时存在内存,独立运行,独立进行资源分配和调度
- 异步性:各进程按各自独立不可预知的速度向前推进。从而导致程序执行不可再现性
- 制约性:资源共享形成间接制约;同步合作产生直接制约
- 结构性:由程序段,数据和PCB三部分组成
4、进程的状态及转换
①三状态
-
运行状态(Run),进程正在处理机上运行的状态。该进程已经获得必要的资源,也获得了处理机,用户程序正在处理机上运行
-
阻塞状态(Wait),也叫等待状态或睡眠状态 进程等待某种事件完成(例如,等待I/O操作完成)而暂时不能运行的状态。此时,即使分配给它处理机,它也不能运行
-
就绪状态(Ready),等待处理机的状态。该进程运行所需要的其他资源都得到满足,但因处理机个数少于进程个数,该进程不能运行,必须等待分配处理机资源
②五状态
-
新建状态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是还没有加载到主存中的新进程
-
终止状态:操作系统从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消
③七状态
在一个没有使用虚存的系统中,每个被执行的进程必须完全载入内存,因此,所有队列中的所有进程必须驻留在主存,而且,如果进程不断创建,系统资源不能满足这些进程的需求,这个时候就需要把某些进程(全部或一部分)换到辅存中,暂时不参与进程调度,于是就引入了挂起状态。
就绪挂起:进程在辅存中,但是只要被载入贮存就可以执行
阻塞挂起:进程在辅存中并等待一个事件的发生
5、进程控制
①进程切换
进程切换实质是回收当前运行进程对CPU的控制权,并将CPU控制权转交给新调度的就绪进程
进程上下文:一个进程运行时:CPU所有寄存器中的内容、进程的状态以及运行栈中的内容被称为进程的上下文。进程上下文是操作系统用来管理和控制进程的内部数据集合。
- 系统级上下文:内核进程使用的进程上下文信息集合,如PCB,页表,段表等
- 寄存器上下文:CPU中所有寄存器的信息集合,如通用寄存器、指0令寄存器、程序状态字寄存器和栈指针等
- 用户级上下文:用户进程访问和修改的进程上下文信息集合,主要。包括进程的程序段、数据段、用户栈和共享存储区
②进程切换的时机
- 中断。中断发生时,操作系统保存当前运行进程(称为旧进程)的现场信息,调度新进程运行
- 异常。当CPU在一条指令执行时,检查到有一个或多个预定义的条件或错误,发生了异常,这时,系统终止当前运行进程的执行,CPU转去执行异常处理程序
- 系统调用。阻塞型系统调用发生时,则当前运行进程被阻塞,此时CPU转去执行进程调度程序
③进程切换步骤
- 当前运行进程被中断时保存其CPU现场信息
- 对被中断的当前运行进程进行PCB更新,包括改变进程状态和其他相关信息
- 将被中断的当前运行进程的PCB移入适当的队列(时间片到则移入就绪队列,因某事件阻塞则移入相应的阻塞队列
- 由进程调度程序调度选中另一个就绪进程,为其设置执行的上下文环境并对其PCB进行更新
- 修改新进程的地址空间,更新新进程的内存管理信息
- 恢复被选中进程最后一次进程上下文切换时所保存的CPU现场信息
④进程控制原语
原语通常由若干条指令组成,是不可分割和不可中断的程序,用来实现某个特定的功能。原语是操作系统核心的一个组成部分,它必须在核心态下执行,并且常驻内存。
原语的原子性:一个不可分割的整体,一旦启动了原语程序,则必须一下子执行完,中间不能插入其他程序的执行序列。