操作系统-进程的状态以及转换

进程的引入

程序:就是一个指令序列
早期的计算机(只支持单道程序)
内存中把一个应用程序分为程序段和数据段,这个应用程序在运行期间占据内存,IO设备,CPU,所以浪费的资源较大。在引入多道批处理后,内存中可以放多个程序,各个程序的代码段和数据段都不相同,操作系统是怎样找到各个程序存放的位置呢?

为了方便操作系统管理各个程序并发执行,引入了进程,进程实体的概念,系统在执行一个程序之前,会为每个程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放的位置)

进程的定义

程序段、数据段、PCB三部分组成了进程实体(进程映象)。一般情况下,我们把进程实体简称为进程。例如,所谓创建进程,实质上是创建进程实体中的PCB ;而撤销进程,实质上是撤销进程实体中的PCB。
从不同的角度来看,进程哟不同的定义,例如:

  1. 进程是程序运行的一个过程
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  3. 进程是具有独立功能的程序在数据集合上运行的过程,他是系统资源分配和 调度的基本单位(在线程出现之前)

进程就是进程实体的运行过程,是系统进行资源分配和调度的基本单位。

注意:严格上来讲进程和进程实体是不一样的,进程实体是静态的,进程是动态执行的一个过程。不过除非题目专门考察二者的区别否则可以认为进程就是进程实体。

进程的组成

进程由PCB,程序段,数据段三部分组成;
PCB:进程控制块,包含有进程的描述信息(UID,PID),进程控制和管理信息(进程优先状态,进程优先级),资源分配清单(程序段指针,数据段指针),处理机相关信息(寄存器的值)。
程序段:存放要执行的代码
数据段:存放在运行过程中的各种数据

进程的组织形式

链接方式:按进程状态将PCB分为多个队列,
索引方式:按照进程状态建立几张索引表,表的每项都指向一个PCB
以上两种方式操作系统都持有指向各个索引表的指针。

进程的特征

动态性:动态性是进程最基本的特征,进程是程序的一次执行过程,是动态的产生、变化、消亡
并发性:内存中有多个进程实体,各个进程可以并发执行
独立性:进程是能够独立运行,独立获取资源、独立接收调度的基本单位
异步性:各个进程按各自独立的,不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。

进程的状态

进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会变化的。为了方便对进程的管理,操作系统需要将进程何力地划分为几种状态。
进程的三种基本状态
运行态(Running)、就绪态(Ready),阻塞态(Wait/Blocked)
Running:占有CPU,在CPU上运行(这时候的进程是占有其他资源和CPU)
Ready:已具备运行条件,但是没有空闲的CPU,所以出于闲置状态。(万事俱备,只欠CPU)
Wait/Blocked: 因等待某一事件而不能运行。(进程没有获得CPU和资源)
在单核处理器环境下,每一时刻最多只有一个进程出于运行态。(双核环境下可以同时有两个进程出于运行态)
另外两种状态
创建态(New):进程正在被创建,操作系统为进程分配资源,初始化PCB
终止态(Terminated,又称结束态):进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB。

进程状态之间的转换

  • 就绪态->运行态:进程被调度 运行态->就绪态:时间片执行完了,或者CPU开始执行优先级更高的进程

  • 运行态->阻塞态:等待系统资源分配,或等待某一事件发生(进程的主动行为)

  • 阻塞态->就绪态:资源分配到位,等待时间发生。(进程的被动行为)

  • 创建态->就绪态:系统完成创建进程的相关工作 运行态->终止态:进程运行结束或者遇到了不可修复的错误或异常

进程状态转换

原文地址:https://www.cnblogs.com/dataoblogs/p/14121951.html