什么是进程?

2、进程的控制和描述

2、1前趋图和程序执行

2.1.1程序的顺序执行及其特征

1.程序的顺序执行

一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。
在这里插入图片描述

2.程序顺序执行时的特征
  • (1) 顺序性
    处理机的操作严格按照程序所规定的顺序执行。
  • (2) 封闭性
    程序一旦开始执行,其计算结果不受外界因素的影响。
  • (3) 可再现性
    程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关。

程序的并发执行

在这里插入图片描述

2.1.2前趋图
  • 前趋图是一个有向无环图 (DAG-Directed Acyclic Graph),用于描述进程之间执行的前后关系。
    • 结 点 : 描述一个程序段或进程,或一条语句。
    • 有 向 边: 结点之间的前趋关系“->”
    • Pi -> Pj :Pi 必须在 Pj 开始之前完成,则 Pi是Pj的 直接前趋,Pj是Pi的直接后继
    • 初始结点: 没有前趋的结点
    • 终止结点: 没有后继的结点
    • 重 量: 结点的程序量或执行时间
      在这里插入图片描述
      前趋图中绝对不能出现循环!!!
2.1.3程序的并发执行及其特征
1.程序的并发执行

例:
在系统中有n个作业,每个作业都有三个处理步骤,输入数据、处理、输出,即Ii,Ci,Pi (i=1,2,3,…,n)。
这些作业在系统中执行时是对时间的偏序,有些操作必须在其它操作之前执行,这是有序的,但有些操作是可以同时执行的

程序的并发执行时的特征
  • (1) 间断性
    在多道程序设计的环境下,程序是并发执行的,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。
    • 相互制约导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。
  • (2) 失去封闭性
    程序在并发执行时,多道程序共享系统的资源,因而这些资源的状态由多道程序来改变,程序运行失去封闭性。一程序的运行受到其他程序的影响
  • (3) 不可再现性
    程序在并发执行时,失去封闭性导致其失去可再现性。
  • (4) 程序与计算不再一一对应
    在这里插入图片描述
  • 程序并发执行时失去程序的封闭性和可再现性的主要原因是什么?
    • 并发运行的程序相互制约
程序并发执行的描述
  • 程序并发执行
    • 若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的;
    • 一个程序的执行尚未结束,另一个程序的执行已经开始;
    • 即使这种重迭是很小的,也称为这几个程序是并发执行。
  • 程序并发执行的描述
    cobegin
    S1;S2;S3;…;SN
    coend;
    其中Si(i=1,2,3,…,n)表示n个语句(程序段),这n个语句用cobegin和coend括起来表示这n个语句是可以并发执行的。
    说明:co是concurrent的头两个字符。
    这是著名的荷兰计算机科学家Dijkstra提出的。
  • 假设有一个程序有S0-Sn+1个语句,
    其中 S1-Sn语句是并发执行的,程序如下:
    S0;
    cobegin
    S1;S2;S3;…;SN
    coend;
    Sn+1;

如图所示:
在这里插入图片描述

 - 我们所期望的效果是:
 - 先执行S0,再执行S1,S2,…,Sn;
- 当S1,S2,…,Sn全部执行完毕后,再执行随后的语句Sn+1。
采用并发程序设计的目的
  • 充分发挥硬件的并行性,消除处理器和I/O 设备的互等现象,提高系统效率。
  • 并发程序设计是多道程序设计的基础,多道程序的实质就是把并发程序设计引入到单处理器的系统中。

2.2进程的描述

在多道程序设计的环境下,为了描述程序在计算机系统内的执行情况,必须引人新的概念--进程。

1、进程(Process)的定义

进程是一个可并发执行的程序在其数据集上的一次运行过程,是操作系统进行资源分配的单位,进程表示资源的占用和所要做的工作。(进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。)

  • 各种不同的进程定义
    • 行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程(Dijkstra)。
    • 进程是这样的计算部分,它是可以和其它计算并行的一个计算。(Donovan)
    • 进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动。(Alan.C. Shaw)
    • 进程是执行中的程序。(Ken Thompson and Dennis Ritchie )

2、进程的特征

动态性、并发性、独立性、异步性、结构性

  • (1)动态性——进程是程序在处理机上的一次执行过程。具有生命期。
  • (2)并发性——多个进程实体同存于内存中,在一段时间内同时运行。以提高资源利用率。
  • (3) 独立性
    进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位,而程序则不是。
  • (4) 异步性
    进程按各自独立的、不可预知的速度向前推进。
  • (5) 结构性
    进程控制块(PCB)+程序段+相关的数据段=进程实体。

3. 进程与程序的区别

  • 进程是动态的,程序是静态的
  • 进程是暂时的,程序是永久的
  • 进程与程序的组成不同:程序是指令的有序集合;进程- 包括程序、数据和进程控制块(即进程状态信息)
  • 进程与程序的对应关系:无一一对应关系(一个进程可顺序执行多个程序;一个程序可由多个进程共用)
    在这里插入图片描述
    在这里插入图片描述
进程的类型
  • 在系统中同时有多个进程存在,但归纳起来有两大类:
    • 系统进程:执行操作系统核心代码的进程。系统进程起着资源管理和控制的作用。
    • 用户进程:执行用户程序的进程。
  • 计算进程,I/O进程。
  • 前台进程,后台进程。

4、进程的基本状态-三态模型

不同系统设置的进程状态数目不同!

  • 运行态(running):进程占有处理器正在运行。
  • 就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行。
  • 等待态(wait):又称为阻塞(blocked)态或睡眠(sleep)态,进程不具备运行条件,正在等待某个事件的完成。
    在这里插入图片描述
引起进程状态转换的具体原因
  • 运行态→等待态:等待使用资源或某事件发生;
  • 等待态→就绪态:资源得到满足或事件发生;
  • 运行态→就绪态:运行时间片到 ; 出现有更高优先权进程。
  • 就绪态→运行态:CPU空闲时选择一个就绪进程。
    在这里插入图片描述

5、五态模型

  • 五态模型在三态模型的基础上引进了新建态和终止态。
    • 新建态—对应进程刚被创建的状态。为一个新进程创建必要的管理信息,它并没有被提交,而是在等待操作系统完成创建进程的必要操作。
    • 终止态—进程的终止状态。首先,等待操作系统进行善后,然后,退出主存。进入终止态的进程不再执行,但依然临时保留在系统中等待善后。一旦其他进程完成了对终止态进程的信息抽取之后,系统将删除该进程。
      在这里插入图片描述

6、七态模型

具有挂起功能的进程状态!

(1)为什么要有“挂起”状态?

由于进程的不断创建,系统资源已不能满足进程运行的要求,就必须把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参与进程调度,起到平滑系统负载的目的。

(2)引起挂起状态的原因
  • 终端用户的需要:
    终端用户在自己程序运行中发现问题要求使正在
    执行的进程暂停执行而使进程处于挂起状态。
  • 父进程的需要:
    父进程为了考查和修改某个子进程,或者协调各子进程间的活动,需要将该子进程挂起。
  • 操作系统的需要:
    操作系统为了检查运行中的资源使用情况或进行记帐,而将某些进程挂起。
  • 对换的需要:
    为了提高内存的利用率,而将内存中某些进程挂起,以调进其它程序运行。
  • 负荷调节的需要:
    由于工作负荷较重,而将一些不重要的进程挂起,以保证系统能正常运行(实时操作系统) 。
(3)进程增加的两个新状态
  • 挂起就绪态(ready suspend):表明进程具备运行条件但目前在辅助存储器中,当它被对换到主存才能被调度执行。
  • 挂起等待态(blocked suspend):表明进程正在等待某一个事件且在辅助存储器中。
    在这里插入图片描述
(4)引起进程状态转换的具体原因
  • 等待态→挂起等待态:系统根据当前资源状况和性能要求,决定将一个等待态进程对换出去成为挂起等待态;
  • 就绪态→挂起就绪态:系统根据当前资源状况和性能要求,决定把就绪态进程对换出去成为挂起就绪态。
  • 挂起等待态→挂起就绪态:引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态。
  • 挂起等待态→等待态:当一个进程等待一个事件时,原则上不需要把它调入内存。但是,当其它进程退出后,主存已经有了足够的自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,便可能发生这一状态变化。
  • 挂起就绪态→就绪态:内存中没有就绪态进程,或挂起就绪态进程具有比就绪态进程更高的优先级,将把挂起就绪态进程转换成就绪态。
  • 运行态→挂起就绪态:当一个高优先级等待进程的等待事件结束后,它将抢占CPU,而此时主存不够,从而可能导致正在运行的进程转化为挂起就绪态。运行态的进程也可以自己挂起自己。
  • 新建态→挂起就绪态:根据系统当前资源状况和性能要求,可以将新建进程对换出去成为挂起就绪态。

注意:挂起的进程将不参与低级调度直到它们被对换进主存。

(5)挂起进程具有如下特征
  • 该进程不能立即被执行。
  • 挂起进程可能会等待事件,但所等待事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。
  • 进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。
  • 结束进程挂起状态的命令只能通过操作系统或父进程发出。

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

进程控制块中的信息
进程标识符信息
  • 每个进程都必须有一个唯一的标识符
    • 内部标识符:便于系统使用
    • 外部标识符:便于用户使用
处理机状态信息(现场信息)

处理机状态信息主要由处理机的各种寄存器中的内容组成。处理机运行时的信息存放在寄存器中,当被中断时这些信息要存放在PCB中。

  • 通用寄存器
  • 指令计数器
  • 程序状态字PSW
  • 用户栈指针
  • 指向该进程页表的指针
进程调度信息
  • 进程优先级
  • 进程调度所需的其他信息(执行时间)
  • 事件
  • 进程状态
进程控制信息
  • 程序和数据的地址
  • 进程同步和通信机制
  • 资源清单(打开文件表等)
  • 链接指针

8、进程组织方式

线性方式

在这里插入图片描述

PCB链表队列

在这里插入图片描述

索引方式

在这里插入图片描述

CPU模式和进程类型

在这里插入图片描述

  • 进程的两大类:
    • 系统进程,运行在内核模式,执行操作系统代码;
    • 用户进程,运行在用户模式,执行用户程序代码。

2.3进程控制

  • 进程控制是进程管理中最基本的功能;
    • 用于创建和撤销进程;
    • 控制进程状态的转换;
  • 进程控制是操作系统的内核通过原语来实现的。
    • 进程的创建与终止
    • 进程的阻塞与唤醒
    • 进程的挂起与激活
  • 原语(primitive):由若干条指令构成的“原子操作(actomic operation)”过程,作为一个整体而不可分割–要么全都完成,要么全都不做。许多系统调用就是原语。
    • 特征:“不可中断性”。
    • 实现方法:屏蔽中断。

2.3.1进程创建

计算机系统的启动过程
  • BIOS启动(POST加电自检,读取MBR)
  • 系统引导(bootloder)
  • 启动内核
  • 初始化系统
Linux中的几个特殊进程
  • 0号进程:树根进程,系统自动构造的唯一不用fork创建的进程。系统加载完成后,演变为idle(空闲进程)或swapper(交换进程),运行在核心态。
  • 1号进程:init进程,由0号进程创建。负责在内核自举后启动系统。系统启动后转入用户态运行,是系统中第一个真正的用户进程,是其他进程的祖先。
  • 2号进程:由0号进程创建,是内核祖先进程,内核态运行。
1.进程图

描述进程的家族关系的有向树
在这里插入图片描述

2.引起创建进程的事件
  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求
3.引起创建进程的事件

操作系统发现有创建新进程的事件后,调用进程创建原语(CreateProcess/Fork)创建新进程。

  • 创建过程
    • 申请空白PCB
    • 为新进程分配资源
    • 初始化PCB
    • 将新进程插入就绪队列
      在这里插入图片描述

2.3.2进程终止

1.引起进程终止的事件
  • 1、正常结束
  • 2、异常结束
    越界错误、保护错、非法指令、特权指令错、运行超时
  • 3、外界干预
    • 操作员或操作系统干预
    • 父进程请求
    • 父进程终止
2.进程的终止过程
  • (1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
  • (2) 若被终止进程正处于执行状态,应立即终止该进程的执行,置调度标志为真,用于指示该进程被终止后应重新进行进程调度。
  • (3) 若该进程有子孙进程,应将其所有子孙进程予以终止,以防他们成为不可控的进程。
  • (4) 将被终止进程所拥有的全部资源,或归还其父进程,或归还系统。
  • (5) 将被终止进程的PCB从所在队列或链表中移出,挂入空白PCB队列。

2.3.3进程的阻塞与唤醒

1、引起进程阻塞的事件
  • 请求系统服务
  • 启动某种操作
  • 新数据尚未到达
  • 无新工作可做
2.进程阻塞过程
  • 调用阻塞原语阻塞自己,终止该进程的执行,将PCB中的状态改为阻塞,并加入到阻塞队列中;
  • 然后转进程调度,将处理机分配给另一进程,并进行进程切换以及处理机状态的保护与重新设置。
    在这里插入图片描述
3、进程唤醒过程
  • 阻塞进程等待的事件发生,有关进程调用唤醒原语把等待该事件的进程唤醒。
  • 把阻塞进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态改为就绪,将PCB插入到就绪队列中。
  • 阻塞原语与唤醒原语作用相反,成对使用!
    在这里插入图片描述

2.3.4进程挂起/激活(suspend/active)

1.进程的挂起
  • 当出现引起进程挂起的事件时,系统利用挂起原语将指定进程挂起。
    • 检查被挂起进程的状态;
    • 若处于活动就绪,则改为静止就绪;
    • 若处于活动阻塞,则改为静止阻塞;
    • 将该进程PCB复制到内存指定区域;
    • 若挂起的进程正在执行,则重新进行进程调度。
2.进程激活
  • 当发生激活进程的事件时,系统利用激活原语将指定进程激活。
  • 激活原语先将进程从外存调入内存,检查该进程的状态;
    • 若处于静止就绪,则改为活动就绪;
    • 若处于静止阻塞,则改为活动阻塞;
    • 若采用抢占调度策略,则新进程进入就绪队列时,检查是否要重新进行进程调度。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值