前趋图和程序执行
前趋图
前趋图:有向无环图,用于描述进程之间执行的先后顺序。
结点:一个进程、程序、一条语句
有向边:两个结点之间的前趋关系
前趋图中不允许有循环,否则会产生不可能实现的前趋关系。
程序的顺序执行及其特征
顺序执行包含两层含义:
● 对于多个用户程序来说,所有程序是依次执行的。(外部顺序性)
● 对于一个程序来说,它的所有指令是按序执行的。(内部顺序性)
顺序性
处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在下一操作开始之前结束(或者说下一操作必须在当前操作结束后才能开始)
封闭性
程序是在封闭的环境下执行的。即
●程序运行时独占全机资源,资源的状态(除初始态外)只有本程序才能改变它
●程序一旦开始执行,其执行结果不受外界影响
可再现性
只要程序执行时的环境和初始条件相同,当程序重复执行时,都将获得相同的结果
程序的并发执行及其特征
程序的并发执行包括两层含义:
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.若采用的是抢占式调度策略,则应检查被激活就绪进程的优先级,若其优先级比先行执行进程高,则应将处理机分配给被激活进程