操作系统-进程概念

一、定义(Process)

进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位

  • 进程是程序的一次执行过程,是对CPU的抽象,是正在运行的程序的抽象
  • 每个进程具有独立的地址空间
  • 操作系统通过调度将CPU的控制权交给某个进程

二、PCB 进程控制块(Process Control Block)

1. 又称进程描述符,进程属性,是操作系统用于管理控制进程的一个专门的数据结构,记录进程的各种属性。

2. PCB是系统感知进程存在的唯一标志,进程与PCB是一一对应的。

3. 进程表:所有进程的PCB集合

三、PCB包含哪些信息

  • 进程标识符:进程标识符PID,唯一,整数,进程名(不唯一),用户标识符userID,进程组关系(兄弟父子关系)
  • 进程控制信息:当前状态,优先级,代码执行入口,运行统计信息,进程间同步和通信,进程队列指针,进程消息队列指针
  • 进程调度信息(所拥有的资源和使用情况):虚拟地址空间的状况,打开文件列表,进程状态,进程的优先级,进程调度所需的其它信息,事件
  • CPU现场信息(进程不运行时):寄存器值、指令计数器、psw、用户的栈指针(指向该进程的页表的指针)

四、进程状态及状态转换

1. 进程状态

  • 运行态(Running):占有CPU,并在CPU上运行
  • 就绪态(Ready):已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
  • 等待态(Waiting/Blocked):或叫阻塞态,封锁态,睡眠态,因等待某一事件而暂时不能运行

2. 操作系统通常将进程状态分为多种模型,这里给出三状态和五状态

img点击并拖拽以移动

img点击并拖拽以移动

五、进程的特性

动态性、独立性、并发性是进程的三大特性。

1. 动态性

在程序运行的过程中,它的状态是在不断变化的。例如一个程序在运行过程中,它是一条指令接着一条指令执行,而每执行一条指令,CPU中那些通用寄存器的值也会发生变化,程序计数器(Program Counter)的值也在变化,每次都指向下一条即将执行的指令。另外堆和栈的内容也在不断变化,数据在不断进栈出栈,堆空间在不断分配和释放。总之变化无时无刻不在进行。

2. 独立性

一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有"自己"的寄存器和内部状态,在它运行的时候独立于其他的进程。当然这个"自己"是带引号的,也就是说:在物理上,CPU中只存在一套寄存器,如PC寄存器只有一个,但是没有进程都有属于自己的逻辑上的PC。物理上的寄存器是真正的硬件寄存器。

3. 并发性

对于单CPU的情况,从宏观上来看,每个进程是同时在系统中运行的,而实际上从微观上来看,在某一特定时刻,只有一个程序运行,换言之各个进程之间实际上是一个接一个顺序运行的。因为CPU是有一个,那么某一个时刻只能有一个进程去使用它。

六、进程队列

1、操作系统为每一类进程建立一个或多个队列

2、队列元素为PCB

3、伴随进程状态的改变,其PCB从一个队列进入另一个队列

1、操作系统为每一类进程建立一个或多个队列

2、队列元素为PCB

3、伴随进程状态的改变,其PCB从一个队列进入另一个队列 img

img上图中,一个进程创建后经许可(提交)进入就绪队列,经过调度进入CPU,如果正常处理完毕会释放,如超时重新进入就绪队列

如果还有各种等待事件,则进入各类等待事件队列,当相应的事件发生后再次进入就绪队列,等待调度进入CPU

七、上下文切换

定义:CPU硬件状态从一个进程换到另一个进程的过程

进程在运行时,其硬件状态保存在CPU上的寄存器中(只有一套)

进程不运行时,这些寄存器的值保存在进程控制块PCB中,当操作系统要运行一个新的进程时,需要将这个进程的PCB中的值送到

对应的寄存器中,这也是下一篇要讲的线程的概念。

以上是操作系统关于进程的一些概述,摘自北大陈向群教授的操作系统课程学习

posted @ 2019-05-06 16:35  南山道士  阅读(215)  评论(0编辑  收藏  举报