彻底理解-进程的 概念、 组成、特征


进程的 概念、 组成、特征

进程
概念
理解进程与程序的区别
组成
一个进程由那些部分构成
特征
进程有那些重要的特点

进程的概念

程序: 是静态的, 就是个存放在磁盘里的可执行文件, 就是一系列的指令集合。

进程(Process) : 是动态的, 是程序的一次执行过程

同一个程序多次执行会对应多个进程

PCB

当进程被创建时, 操作系统会为该进程分配一个唯一的、 不重复的“ 身份证号 ” —— PID(Process ID, 进程ID)

操作系统要记录 PID、 进程所属 用户ID(UID),基本的进程描述信息, 可以让操作系统区分各个进程

还要记录给进程分配了哪些资源(如: 分配了多少内存、 正在使用哪些I/O设备、 正在使用哪些文件),可用于实现操作系统对资源的管理

还要记录进程的运行情况(如: CPU使用时间、 磁盘使用情况、 网络流量使用情况等),可用于实现操作系统对
进程的控制、 调度

这些信息都被保存在一个数据结构PCB ( Process Control Block ) 中, 即进程控制块

操作系统需要对各个并发运行的进程进行管理, 但凡管理时所需要的信息, 都会被放在PCB

PCB是进程存在的唯一标志, 当进程被创建时, 操作系统为其创建PCB, 当进程结束时, 会回收其PCB

操作系统对进程进行管理工作所需的信息都存在PCB中

进程控制块_PCB___
进程描述信息
进程标识符PID
用户标识符UID
进程控制和管理信息
CPU\磁盘\流量使用情况统计
进程当前状态:就绪态/阻塞态/运行态
资源分配清单
正在使用那些文件
正在使用那些内存区域
正在使用那些IO设备
处理机相关信息
如PSW/PC等各种寄存器的值_用于实现进程切换_

程序段、 数据段

PCB 是给操作系统用的

程序段、 数据段是给进程自己用的

进程的组成
PCB
进程描述信息
进程控制和管理信息
资源分配清单
处理机相关信息
程序段
程序代码_指令序列_
数据段
运行过程中产生的各种数据_如:程序中定义的变量_

一个进程实体(进程映像) 由PCB、 程序段、 数据段组成

进程是动态的, 进程实体(进程映像) 是静态的

进程实体反应了进程在某一时刻的状态(如: x++后, x=2)

程序段、 数据段、 PCB三部分组成了进程实体(进程映像)

引入进程实体的概念后, 可把进程定义为:

​ 进程是进程实体的运行过程, 是系统进行资源分配和调度的一个独立单位。 一个进程被“ 调度 ” , 就是指操作系统决定让这个进程上CPU运行

注意: PCB是进程存在的唯一标志!

进程的特征

动态性是进程最基本的特征

异步性会导致并发程序执行结果的不确定性。

程序是静态的, 进程是动态的, 相比于程序, 进程拥有以下特征:

进程的特征
动态性
进程是程序一次执行过程,是动态生成/变化/灭亡
并发性
内存中有多个进程实体,各进程可并发执行
独立性
进程是独立运行/独立获取资源/独立接受调度的基本单位
异步性
各进程按各自独立的/不可预知的速度向前推进
结构性
执行过

进程组织

在一个系统中, 通常有数十、 数百乃至数千个PCB。 为了能对他们加以有效的管理, 应该用适当的方式
把这些PCB组织起来

链接方式

执行指针 指向当前处于运行态(执行态) 的进程

单CPU计算机中, 同一时刻只会有一个进程处于运行态

就绪队列指针 指向当前处于就绪态的进程

杜塞队列指针 指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因不同, 再分为多个阻塞队列

通常会把优先级高的进程放在队头

执行指针
PCB1
就绪队列指针
PCB2
PCB4
杜塞队列指针
PCB5
PCB3
索引方式:
执行指针
PCB1
就绪队列指针
就绪索引表
PCB2
PCB4
杜塞队列指针
堵塞索引表
PCB5
PCB3
进程的组织方式
链接方式
按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
索引方式
根据进程状态的不同,建立几张索引表
操作系统持有指向各个索引表的指针

进程的状态与转换

三种基本状态:运行态、就绪态、堵塞态

进程的状态与转换
状态
运行态
就绪态
堵塞态
创建态
终止态
状态间的转换
就绪态to运行态
运行态to就绪态
运行态to堵塞态
阻塞态to就绪态
进程的组织方式_各个进程PCB的组织方式

进程的状态——创建态、 就绪态

进程正在被创建时, 它的状态是“创建态” , 在这个阶段操作系统会为进程分配资源、 初始化PCB

当进程创建完成后, 便进入“就绪态” ,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU, 就暂时不能运行

进程的状态——运行态

系统中可能会有很多个进程都处于就绪态

当CPU空闲时, 操作系统就会选择一个就绪进程,让它上处理机运行

在获得所需资源之前, 进程无法再往下执行

如果一个进程此时在CPU上运行, 那么这个进程处于“ 运行态 ” 。CPU会执行该进程对应的程序(执行指令序列)

进程的状态——阻塞态

当等待的事件发生时, 进程从“阻塞态” 回到 “就绪态

在进程运行的过程中, 可能会请求等待某个事件的发生(如等待某种系统资源的分配, 或者等待其他进程的响应) 。在这个事件发生之前, 进程无法继续往下执行, 此时操作系统会让这个进程下CPU, 并让它进入“阻塞态”当CPU空闲时, 又会选择另一个“就绪态” 进程上CPU运行

进程的状态——终止态

一个进程可以执行 exit 系统调用, 请求操作系统终止该进程。此时该进程会进入“ 终止态 ” , 操作系统会让该进程下CPU,并回收内存空间等资源, 最后还要回收该进程的PCB。当终止进程的工作完成之后, 这个进程就彻底消失了

进程状态的转换

注意: 不能由阻塞态直接转换为运行态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的, 必然需要进程在运行时才能发出这种请求)

进程的状态

进程的整个生命周期中,大部分时间都处于三种基本状态

单CPU情况下,同一时刻只会有个进程处于运行态,多核CPU情况下,可能有多个进程处于运行态

三种基本状态
运行态_Running
占有CPU,并在CPU上运行
就绪态_Ready
已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
阻塞态_Waiting/Blocked_反称:等待态
因等待某一事件而暂时不能运行
另外两种状态
创建态_new_又称新建态
进程正在被创建,操作系统为进程分配资源\初始化PCB
终止态_Terminated_又称结束态
进程正在从系统中撒销,操作系统会回收进程拥有的资源\撤销PCB

进程PCB中,会有一个变量 state 来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态

为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来

进程的组织

进程的组织方式
链接方式
按照进程状态将PCB分为多个队列
操作系统持有指向各个队列的指针
索引方式
根据进程状态的不同,建立几张索引表
操作系统持有指向各个索引表的指针

进程的状态——三种基本状态

进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态

进程的三种基本状态:

三种基本状态
运行态_Running
占有CPU,并在CPU上运行
就绪态_Rsy
已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
阻塞态_Waiting/Blocked_又称:等待态
因等待某一事件而暂时不能运行

注意:单核处理机环境下,每一时刻最多只有一个进程处于运行

进程已经拥有了除处理机之外所时刻有需要的资源,一旦获得处理机,即可立即进入运行态开始运行,即: 万事俱备, 只欠CPU

如:等待操作系统分配打印机、等待读磁盘操作的结果。CPU是最昂贵的部件, 为了提高CPU的利用率, 需要先将其他进程需要的资源分配到位, 才能得到CPU的服务

进程的状态——另外两种状态

进程运行结束(或者由于bug导致进程无法继续执行下去, 比如数组越界错误) , 需要撤销进程。

操作系统需要完成创建进程。 操作系统为该进程分配所需的内存空间等系统资源, 并为其创建、初始化PCB(如: 为进程分配 PID)

另外俩种状态
创建态_New_新建态_
进程正在被创建,操作系统为进程分配资源,初始化PCB
终止态_Terminated_结束态_
进程正在从系统中撤销,操作系统会回收进程拥有的资源,撤销PCB
进程的状态
运行态
就绪态
阻塞态
创建态
终止态

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理, 它具有创建新进程撤销已有进程、 实现进程状态转换等功能。

进程控制就是要实现进程状态转换

创建态
就绪态
运行态
终止态
阻塞态
  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mDeepLearning4205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值