操作系统chap2进程的描述与控制

前趋图和程序执行

前趋图

前趋图:有向无环图,用于描述进程之间执行的先后顺序。
结点:一个进程、程序、一条语句
有向边:两个结点之间的前趋关系
前趋图中不允许有循环,否则会产生不可能实现的前趋关系。

程序的顺序执行及其特征

顺序执行包含两层含义:
● 对于多个用户程序来说,所有程序是依次执行的。(外部顺序性)
● 对于一个程序来说,它的所有指令是按序执行的。(内部顺序性)

顺序性

处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在下一操作开始之前结束(或者说下一操作必须在当前操作结束后才能开始)

封闭性

程序是在封闭的环境下执行的。即
●程序运行时独占全机资源,资源的状态(除初始态外)只有本程序才能改变它
●程序一旦开始执行,其执行结果不受外界影响

可再现性

只要程序执行时的环境和初始条件相同,当程序重复执行时,都将获得相同的结果

程序的并发执行及其特征

程序的并发执行包括两层含义:
1.对于一个程序来说,它的所有指令是按序执行的。(内部顺序性)
2.对于多个程序来说,是交叉执行的。(外部并发性)

并非所有程序都能并发执行!只有不存在前趋关系的程序之间才有可能并发执行

间断性

程序在并发执行时,由于它们共享系统资源,以及为完成同一任务而相互合作,致使这些并发执行的程序之间形成了相互制约的关系。(互斥关系、同步关系)
在这里插入图片描述

失去封闭性

程序在并发执行时,由于多个程序共享系统资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性
在这里插入图片描述

不可再现性

出现与时间有关的错误

程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。
例如:有两个循环程序A和B,它们共享一个变量N。
在这里插入图片描述
程序A和B并发执行时,可能出现下述三种情况(设某时刻N的值为10):
(1)N=N+1在print(N)和N=0之前,此时得到的N值分别为11,11,0
(2)N=N+1在print(N)和N=0之后,此时得到的N值分别为10,0,1
(3)N=N+1在print(N)和N=0之间,此时得到的N值分别为10,11,0

计算结果与并发程序的执行速度有关,从而使程序执行失去了可再现性

进程的描述

进程的定义

进程是程序在一个数据集上的运行过程,是系统进行资源分配和调度的一个独立单位。 (传统OS的定义)

进程的特征

结构特征

程序段、相关的数据段、PCB三部分构成了进程实体

动态性

进程的实质是进程实体的一次执行过程,故动态性是进程的最基本特征

并发性

这是指多个进程实体同存于内存中,且能在一段时间内同时运行

独立性

在传统的OS中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位

异步性

是指进程按各自独立的、不可预知的速度向前推进,或说进程实体按异步方式运行

进程的基本状态及转换

就绪(Ready)状态

当进程已分配到除CPU以外的所有资源后,只要再获得CPU,便可立即执行,进程这时的状态称为就绪状态

执行(Running)状态

进程已获得CPU,其程序正在执行

阻塞(Blocked)状态

正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态(或等待状态)
在这里插入图片描述

创建状态

创建进程的步骤:
(1)申请空白PCB,填写相关控制信息
(2)分配必须的资源
(3)进程转入就绪状态,插入就绪队列

终止状态

终止进程的步骤:
(1)操作系统进行相关的善后处理
(2)PCB清零,把PCB空间返还系统

挂起操作及进程状态的转换

在这里插入图片描述

进程管理中的数据结构

操作系统中用于管理控制的数据结构

资源信息表,进程信息表:
每个资源和每个进程都设置一个数据结构,用于表征其实体

主要分为四类:
内存表、设备表、文件表、进程表(进程控制块 PCB)

PCB作用

进程控制块是进程实体的一部分,是操作系统中最重要的记录型数据结构

PCB是进程存在的唯一标志
作用:进程调度;现场保护和恢复;进程同步和通信

进程控制块中的信息

PCB中记录了操作系统所需的、用于描述进程当前情况以及控制进程运行的全部信息。具体包括下述四方面的信息:

进程标识符

内部标识符(进程号);外部标识符(名);父进程标识及子进程标识;用户标识

处理机状态

处理机状态信息主要由处理机的各种寄存器中的内容组成的。寄存器包括:通用寄存器、指令计数器、程序状态字(PSW)寄存器、用户栈指针。(保护、恢复现场)

当处理机被中断时,这些信息都必须保存到PCB中,以便该进程重新执行时,能从断点继续执行

进程调度信息

在PCB中还存放一些与进程调度和进程对换有关的信息。包括:
进程状态——作为调度和对换时的依据。
进程优先级——用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。
进程调度所需的其它信息——它们与所采用的进程调度算法有关。……
事件——即阻塞原因。

进程控制信息

程序和数据的地址——指程序和数据所在的内存或外存首地址;
进程同步和通信机制——如信号量、消息队列指针等,它们可能全部或部分地存放在PCB中;
资源清单——是一张列出了除CPU外的、进程所需的全部资源及已经分配到该进程的资源的清单;
链接指针——它给出本进程(PCB)所在队列中下一个进程的PCB的首址。

进程控制块的组织方式

常用的组织方式有两种:链接方式索引方式
在这里插入图片描述
在这里插入图片描述

进程控制

进程控制是进程管理中最基本的功能。
进程控制包括:
◆ 创建进程
◆ 终止进程
◆ 进程状态转换
进程控制是由OS的内核完成的

操作系统内核

OS内核:
将OS 划分层次
通常把常用的模块、与硬件密切相关的模块、常用设备驱动程序等常驻内存。

用户态:
目态。仅能执行规定的指令,访问指定的寄存器和存储区,具有较低的特权。应用程序只能在用户态运行。
系统态:
管态或内核态。能执行一切指令,访问所有寄存器和存储区,具有较高的特权。

OS内核的功能:
1、支撑功能
中断处理、时钟管理、原语操作
2、资源管理功能
进程管理、存储器管理、设备管理

进程的创建

引起创建进程的事件
用户登录
作业调度
提供服务

调用进程创建原语Create(),按下述步骤创建一个进程:
(1)申请空白PCB;
(2)为新进程分配资源。主要是内存空间。
(3)初始化PCB。包括:
初始化标识信息
初始化处理机状态信息:程序计数器,堆栈指针等
初始化处理机控制信息:进程状态——就绪或静止就绪、优先级等
(4)将新进程插入就绪队列。

进程的终止

引起进程终止的事件

正常结束
异常结束

越界错误
保护错——试图访问不允许访问的资源或文件,或者以不适当方式访问
非法指令
特权指令错——用户程序试图执行只允许OS执行的指令
运行超时
等待超时
I/O故障
算术运算错——被0除

外界干预

操作员或操作系统干预(如发生死锁)
父进程请求
父进程终止

进程的终止过程

OS调用终止原语,终止进程的过程:
(1)根据被终止进程的标识,找出该进程,读出其状态。
(2)若该进程正处于执行状态,立即终止其执行,并置调度标志为真。
(3)若该进程还有子孙进程,终止其所有子孙进程。
(4)归还该进程的所有资源。
(5)将该进程移出所在队列。

进程的阻塞和唤醒

引起进程阻塞和唤醒的事件

请求系统服务
启动某种操作
新数据尚未到达
无新工作可做

进程阻塞过程

调用阻塞原语block把自己阻塞。(主动行为)
阻塞(block)过程:
1.立即停止执行;
2.把PCB中进程状态由“执行”改为“阻塞”;
3.将PCB插入具有相同事件的阻塞队列;
4.转进程调度程序,将处理机分配给某个就绪进程,并进行进程切换——保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中处理机状态设置CPU的环境。

进程唤醒过程

调用唤醒原语wakeup( ),将等待事件的进程唤醒。

唤醒原语执行过程:
1.将被唤醒进程的PCB从阻塞队列移出;
2.将其PCB中进程状态由“阻塞”改为“就绪”;
3.将该PCB插入到就绪队列中

block()和wakeup()是成对的

进程的挂起和激活

进程的挂起

挂起原语suspend()的执行过程:

1.检查被挂起进程的状态: 若处于活动就绪或执行状态,则将其转为静止就绪;若处于活动阻塞,则将其转为静止阻塞
2.把该进程的PCB复制到某指定内存区域
3.若该进程正在执行,则转向进程调度程序重新调度

进程的激活

原语active( )的激活过程是:
1.将进程从外存调入内存;
2.检查该进程现行状态: 若是静止就绪,则改为活动就绪; 若是静止阻塞,则改为活动阻塞。
3.若采用的是抢占式调度策略,则应检查被激活就绪进程的优先级,若其优先级比先行执行进程高,则应将处理机分配给被激活进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

空LA

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

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

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

打赏作者

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

抵扣说明:

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

余额充值