
第2章进程描述与控制(1).ppt
45页第二章 进程描述与控制,认识进程前趋图和程序设计 进程 进程间的相互作用 进程间的通信 进程调度(CPU调度) 线程,认识进程(Unix/Linux中的进程),进程标识符PID (Process IDentifier):系统中每个进程的一个编号两个基本的系统调用:fork()和getpid()Fork()返回值:返回值0表示子进程,否则把子进程的标识符返回给父进程Getpid:获得进程标识符,认识进程(简单程序),#include
图中的每一个顶点可表示一条语句、一个程序段或进程, 弧则表示两顶点之间的偏序(partial order)或前趋关系(procedence relation)无前趋的顶点为初始顶点,无后继的顶点称为终止顶点, 每个顶点还有一个权值, 它表示顶点执行所需的时间如,它的每一种拓扑排序都是顺序执行时正确得到结果的顺序,有路经的两顶点必须按前趋关系顺序执行,无路经的两顶点则可以并发执行,2.1.2 程序顺序执行,程序顺序执行: 程序执行时, 必须按某种先后次序, 只有当前操作完成后才能执行后继操作, 它体现了某种算法如:S1: a:=x+y;S2: b:=a-5;S3: c:=b+1; 各程序段与此相同, 以 I C P分别代表输入计算和输出, 则前趋图:,前趋图,S1,S2,S3,,,I1,C1,P1,,,I2,C2,P2,,,,程序顺序执行的特征: 程序执行的顺序性:严格按所规定的顺序执行 程序执行的封闭性 独占资源,执行过程和结果不受其它程序的影响 程序结果的可再现性(结果的确定性) 只要初始状态相同,程序多次重复运行,其结果与程序执行速度无关(连续或间断),结果都应相同。
2.1.3 程序并发执行,多个程序并发执行: 在一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的宏观上同时处于运行状态微观上各程序交替地间断运行前趋关系:Ii→Ci , Pi→Pi+1 Ci→Pi , Ii→Ii+1 Ci→Ci+1,Ii+1, Ci, Pi-1是重叠的,举例说明: 假如系统中有两道程序AA和BB:program AA; program BB;begin begin … A←N … B←N N:=N+1; A←A+1 N:=N+1; B←B+1 … N←A … N←B End; end;int N=1; 是AA和BB都能访问的外部公共变量,这两个程序在并发执行, N:=N+1;可分解为3条机器指令,它们的执行顺序不同有可能导致N的值结果不同。
时间 T0 T1 T2 T3 T4 T5,程序,A,A←N,A←A+1,N←A,程序,B,B←N,B←B+1,N←B,N的值 1 1 2 2 2 3,(a)顺序执行,时间 T0 T1 T2 T3 T4 T5,程序,A,程序,B,N的值 1 1 1 1 2 2,(b)交叉执行,时间 T0 T1 T2 T3 T4 T5,程序,A,程序,B,N的值 1 1 1 1 2 2,(c)交叉执行,,,,N←B,B←B+1,B←N,A←N,A←A+1,N←A,A←N,N←A,A←A+1,N←B,B←B+1,B←N,并发执行特征:(1)在并发环境下程序的执行是间断性的 执行——停——执行(2)失去封闭性 资源共享,执行过程和结果受其它程序的影响(3)程序结果的不可再现性 并发程序执行的结果不可再现, 与其执行的相对速度有关,是不确定的(4)相互作用和制约性 进程之间可相互作用(相互制约) 可分为直接作用和间接作用,(5) 程序与CPU执行的活动之间不再一一对应 程序与CPU执行的活动, 这是两个不同的概念; 程序是完成某一特定功能的指令序列, 是静态的概念; 而CPU执行的活动是一个动态概念, 它是程序的执行过程。
程序在顺序执行(即单道运行)时,程序与CPU执行的活动是一一对应的,而在程序并行执行(即多道程序)时, 这种关系不再存在2.2 进程,进程的概念 进程的状态及其转换 进程控制块(Process Control Block) 进程的特征,2.2.1 进程的概念,进程是程序的一次执行进程是可以和别的计算并发执行的计算进程是一个数据结构及能在其上进行操作的程序进程是某程序及其数据在处理机上顺序执行的过程进程是程序在某一数据集合上的运行过程进程的定义:Process 进程是可以并发执行的程序在某个数据集合上的运行过程,是系统进行资源分配和调度的独立单位,2.2.1 进程的概念,动态性 进程是程序的执行过程, 它由创建而产生, 由调度而执行,因某事件而暂停, 由撤销而消亡在生命周期内, 进程在三种基本状态之间动态转换并发性 多个进程同时存于内存中,一起向前推进,并发执行独立性 进程是独立获得资源和独立调度的基本单位异步性 各进程都各自独立的不可预知的速度向前推进 结构性: 由程序+数据+进程控制块组成, 称之为进程映像,进程的特征,程序与进程之间的区别: 进程更能真实地描述并发,而程序不能 进程是由程序、数据和进程控制块三部分组成的 程序是静态的,进程是动态的 进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的 一个程序可对应多个进程,反之亦然 进程具有创建其他进程的功能,而程序没有,进程的基本状态及其转换,进程的三种基本状态: 运行态(Running): 进程占有CPU,并在CPU上运行。
就绪态(Ready): 进程已经具备运行条件, 但由于CPU忙而暂时不能运行的状态(当调度给其CPU时, 立即可以运行) 阻塞态(Blocked): 等待态、封锁态、冻结态 进程因等待某种事件的发生而暂时不能运行的状态即使CPU空闲, 该进程也不可运行) 进程在生命期内处于且仅处于三种基本状态之一 不同系统设置的进程状态数目不同运行,就绪,阻塞,,,,,进程的状态及其转换,,,,,状态转换,,就绪 → 运行调度程序选择一个新的进程运行运行 → 就绪运行进程用完了时间片, 运行进程被中断, 在抢占调度方式中, 因为一高优先级进程进入就绪状态运行 → 阻塞当一进程发生I/O请求或等待某事件时阻塞 → 就绪当I/O完成或所等待的事件发生时,2.2.3 进程控制块,1. 进程控制块的作用: 系统为管理进程设置一个专门的数据结构—进程控制块(Process Control Block), 用它来记录进程的外部特征,描述进程的运动变化过程 (从结构的观点上看, 程序与进程的区别就在于有没有PCB) 进程与PCB一一对应, 在进程的整个生命期内, PCB随进程的创建而产生随进程的终止而消失, 系统利用PCB来控制和管理进程, 系统根据PCB感知进程的存在, 所以PCB是进程存在的唯一标志。
存放控制进程所需的数据(进程属性)2. PCB中的信息:进程标识信息处理器状态信息(现场信息)进程调度信息进程控制信息 记录了进程的全貌,作为进程调度和进程控制的依据和操作对象1) 进程标识符 (在PCB中),进程标识符用于唯一地标识一个进程外部标识符由创建者提供,由字符、数字组成内部标识符为了方便系统而设置,OS中,每个进程有唯一的标识符(PID),2) 处理器状态信息(现场信息),进程走走停停必须保存处理器的状态信息即处理器现状, 它由处理器寄存器内容组成通用寄存器(8 — 32个, RISC结构中超过100个)指令计数器(下一条指令的地址)状态寄存器(程序状态字 PSW,如:EFLAGS寄存器)用户栈指针(过程和系统调用参数及地址),3) 进程调度信息,调度信息进程状态 (如: 运行,就绪,阻塞...)进程优先级该进程在等待的事件 (阻塞原因)调度所需其它信息 (如: 等待总时间, 执行总时间),4) 进程控制信息,程序和数据的地址 程序和数据所在的内存(段/页表指针)或外存地址进程间同步和通信机制需要的消息队列指针和信号量等所需的和已分配到的资源清单及使用情况除CPU外的资源: 文件,I/O设备...它们的时间使用史数据结构信息进程可能需要有指向其他PCB的指针, 父-子进程关系及其它结构,3. 进程控制块的组织方式PCB表: 系统把所有PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表 PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度(注: 多道程序中的道数与系统并发度不同)PCB表组织方式有两种: 链接方式、索引方式,1) 链接方式: 对具有相同状态的进程,分别各自链接起来组成进程PCB链队列: 运行队列、就绪队列、阻塞队列、空闲队列,2) 索引方式: 对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址,,空闲指针,运行指针,就绪指针,等待1指针,等待2指针,,,,,,,,,,,,,,,,进程队列,就绪队列无优先级,2.3 进程控制,处理机的执行状态分为两种系统态(核心态、管态): 有特权, 能执行所有指令, 能访问所有寄存器和存储区。
用户态(目态): 无特权, 只能执行规定指令,只能访 问指定的寄存器和存储区 用户程序运行在用户态,它不能执行OS指令不能访问OS区域,防止对OS的破坏 OS内核运行在系统态进程控制包含在OS的内核中,它常驻内存,执行效率高。












