1、操作系统,北京大学计算机科学技术系陈向群2010-2011 第一学期,进程模型,多道程序设计 进程基本概念 进程的状态、进程控制块、进程映像 进程控制 进程创建、撤销、阻塞、唤醒,一、多道程序设计,顺序程序并发程序多道程序设计,1.顺序程序(1/2),程序: 指令或语句序列,体现了某种算法 所有程序是顺序的顺序环境: 计算机系统中 只有一个程序在运行 该程序独占系统中所有资源 其执行不受外界影响,特征:程序执行的顺序性程序执行的封闭性 独占资源,执行过程中不受外界影响程序执行结果的确定性 即:程序结果的可再现性 程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同,顺序程序(2/2),
2、2.并发程序(1/4),并发环境: 一定时间内,物理机器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的,引入并发的目的: 为了提高资源利用率,从而提高系统效率,在顺序环境下,A先执行,B再执行 CPU利用率= 40/80 = 50% DEV1利用率= 15/80 =18.75% DEV2利用率= 25/80 =31.25%,并发程序(2/4),在并发环境下 CPU利用 = 89%DEV1并发环境下利用 = 33%DEV2并发环境下利用 = 66%,并发程序(3/4),特征:(1)程序执行结果的不可再现性 并发程序执行的结果与其执行的相对速度有关,是不确定的(2
3、)在并发环境下程序的执行是间断性的 执行停执行(3)资源共享 系统中资源被多个程序使用(4)独立性和制约性独立的相对速度、起始时间 程序之间可相互作用(相互制约) 可分为直接作用和间接作用(5)程序和计算不再一一对应 (计算:一个程序的执行),并发程序(4/4),3.多道程序设计(Multiprogramming),多道程序设计:允许多个程序同时进入内存并运行,其目的是为了提高系统效率,二、进程的基本概念,进程的概念进程的状态及其转换进程控制块(Process Control Block)进程的特征,1.进程的概念,定义:Process 进程是具有独立功能的程序关于某个数据集合上的一次运行活动
4、,是系统进行资源分配和调度的独立单位又称任务(Task) 为了描述程序在并发执行时对系统资源的共享,所需的一个描述程序执行时动态特征的概念,对CPU的抽象,进程何时创建?,操作系统提供的服务交互登录由现有的进程派生出一个新进程一个批处理作业的初始化,进程何时终止?,正常退出(自愿的)出错退出(自愿的)严重错误(非自愿)被其他进程杀死(非自愿),举例:正常结束、定时器到时、缺少内存、存储越界、保护性出错(例子: 写只读文件)、算术运算错、超出时间(进程等待超过对某事件的最大值)、 I/O 失败、无效指令(如试图执行数据)、特权指令、操作系统干预(如当死锁发生时)、父进程请求中止某一子进程、父进程
5、中止,所以子进程也中止,程序与进程的区别,进程更能真实地描述并发(程序不能)进程是由程序和数据两部分组成的程序是静态的,进程是动态的进程有生命周期,有诞生有消亡,短暂的;而程序是相对长久的一个程序可对应多个进程进程具有创建其他进程的功能生活中类比例子,系统进程用户进程,进程分类与进程层次结构,前台进程后台进程,系统进程优先于用户进程 daemon: 守护进程/精灵进程,UNIX进程家族:init为根Windows:地位相同,2.进程的基本状态及其转换,进程的三种基本状态: 运行态、就绪态、等待态 进程在消亡前处于且仅处于三种基本状态之一不同系统设置的进程状态数目不同,运行态(Running):
6、进程占有CPU,并在CPU上运行就绪态(Ready):一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行)等待态(Blocked):阻塞态、封锁态、睡眠态指进程因等待某种事件的发生而暂时不能运行的状态(即使CPU空闲,该进程也不可运行),进程的基本状态,进程的基本状态及其转换,进程状态转换的原因,就绪 - 运行调度程序选择一个新的进程运行运行 - 就绪运行进程用完了时间片一个高优先级进程处于就绪状态,中断正在运行的进程运行 - 等待当一个进程必须等待时OS尚未完成服务对一资源的访问尚不能进行初始化I/O 且必须等待结果等待某一进程提供输入 (IPC)等
7、待 - 就绪当所等待的事件发生时,创建状态,终止状态挂起(suspend)状态 进程没有占用内存空间 处在挂起状态的进程映像在磁盘上 (调节负载,对换),进程的其他状态,已完成创建一进程所必要的工作已构造了进程标识符已创建了管理进程所需的表格但还没有允许执行该进程 (尚未同意) 因为资源有限,终止后,进程移入该状态它不再有执行资格表格和其它信息暂时由辅助程序保留可完成一些数据统计工作当数据不再需要后,进程(和它的表格)被删除,五状态进程模型,William Stallings,五状态进程模型的排队模型,七状态进程模型(1/3),William Stallings,挂起,挂起(Suspend):
8、把一个进程从内存转到外存;可能有以下几种情况:阻塞阻塞挂起:没有进程处于就绪状态或就绪进程要求更多内存资源时,发生这种转换,以提交新进程或运行就绪进程就绪就绪挂起:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程运行就绪挂起:对抢占式系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态,七状态进程模型(2/3),激活(Activate):把一个进程从外存转到内存;可能有以下几种情况:就绪挂起就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,发生转换阻塞挂起阻塞:当一个进程释放足够内存时,系统会把一个高
9、优先级阻塞挂起(系统认为会很快出现所等待的事件)进程,七状态进程模型(3/3),Linux进程状态(1/3),Linux进程状态(2/3),Linux的进程状态有五种TASK_RUNNING:表示进程具备运行的资格,正在运行或等待被调度执行。进程控制块中有一个run_list成员,所有处于TASK_RUNNING状态的进程都通过该成员链在一起,称之为可运行队列TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE:两种状态均表示进程处于等待状态。TASK_INTERRUPTIBLE除了资源满足时可以被唤醒外,还可以被信号唤醒,而TASK_UNINTERRUPTIBLE
10、则不行,Linux进程状态(3/3),TASK_STOPPED:进程处于暂停状态,主要用于调试目的。如正在运行的进程收到SIGSTOP信号将进入TASK_STOPPED状态TASK_ZOMBIE:表示进程已经结束运行并释放了大部分占用的资源,但task_struct结构还未被释放,3.进程控制块(Process Control Block,PCB),系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程(又称进程描述符、进程属性) 系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志 进程与PCB是一一对应的,PCB的内容(1/3),进程描
11、述信息:进程标识符(process ID),唯一,通常是一个整数进程名,通常基于可执行文件名(不唯一)用户标识符(user ID);进程组关系进程控制信息:当前状态优先级(priority)代码执行入口地址程序的外存地址运行统计信息(执行时间、页面调度)进程间同步和通信;阻塞原因,PCB的内容(2/3),进程的队列指针进程的消息队列指针所拥有的资源和使用情况:虚拟地址空间的现状打开文件列表CPU现场保护信息:寄存器值(通用、程序计数器PC、状态PSW,地址包括栈指针)指向赋予该进程的段/页表的指针,PCB的内容(3/3),A. S. Tanenbaum,进程映像,代码段(用户程序)数据段(用户
12、数据)用户栈(堆栈)用于过程调用和参数传递与系统栈区分进程控制块PCB (进程属性)用户进程不能直接访问、修改自己的PCB,进程虚拟地址空间,进程上下文环境(context),对进程执行活动全过程的静态描述 由进程的用户地址空间内容、硬件寄存器内容及与该进程相关的核心数据结构组成用户级上下文:进程的用户地址空间(包括用户栈各层次),包括用户正文段、用户数据段和用户栈寄存器级上下文:程序计数器、程序状态寄存器、栈指针、通用寄存器的值系统级上下文:静态部分(PCB和资源表格)动态部分:核心栈(核心过程的栈结构,不同进程在调用相同核心过程时有不同核心栈),Solaris的进程控制块与进程表,proc
13、数据结构,PCB表:系统把所有PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表 PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度(注:多道程序中的多道与系统并发度不同)进程队列:不同状态进程分别组成队列运行队列、就绪队列、等待队列相关了解:Linux/Solaris的相关数据结构,PCB组织方式(1/2),PCB组织方式(2/2),William Stallings,5.进程控制,创建、撤消进程以及完成进程各状态之间的转换,由具有特定功能的原语完成 进程创建原语 进程撤消原语 阻塞原语 唤醒原语 挂起原语 激活(解挂)原语 改变进程优先级,(1)进程的创建,给
14、新进程赋予一个唯一的进程标识符为进程映像分配空间初始化进程控制块许多默认值 (如: 状态为 New,无I/O设备或文件.)设置相应的链接如: 把新进程加到就绪队列的链表中创建或扩充其他数据结构,(2)进程的撤消,收回进程所占有的资源撤消该进程的PCB,(3)进程阻塞和进程唤醒,处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入、等待磁盘数据传输完成、等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态,(4)UNIX进程创建,fork() 通过复制调用进程来建立新的进程,是最基本的进程建立过程exec() 包括一系列系统调用,它们都是通
15、过用一个新的程序覆盖原来的内存空间,实现进程的转变wait() 提供初级的进程同步措施,能使一个进程等待,直到另外一个进程结束为止exit() 该系统调用用来终止一个进程的运行,使用fork()的示例代码,fork()的过程,为子进程分配新的PID和进程描述符初始化子进程描述符结构为子进程分配地址转换表以一次一页的方式复制父进程地址数据和堆栈区,并更新子进程地址转换表,指向这些新页面 (运用写时复制技术)获得由子进程继承的共享资源的指针,如打开的文件和当前工作目录子进程就绪,加入调度队列设置子进程从fork返回0向父进程返回子进程PID,(5)Solaris的进程创建,fork系统调用创建一个
16、新的子进程,并把父进程的很多对象复制到子进程中,例如地址空间、线程、文件描述符等 fork有不同的形式,包括fork1、forkall和vfork主要区别1:地址空间的复制与共享fork1和forkall会为子进程创建自己的地址空间,并把父进程的地址空间复制到子进程 vfork在创建子进程后,让子进程共享父进程的地址空间,子进程没有自己独立的地址空间 主要区别2:多线程的复制fork1和vfork只把调用它的线程复制到子进程中 forkall把父进程中所有的线程都复制到子进程中,fork() 后的父子进程的资源共享,vfork() 后的父子进程的资源共享,fork1() 和forkall 的区
17、别,父进程,子进程,子进程,6.进程小结(1/2),并发性任何进程都可以同其他进程一起向前推进动态性进程是正在执行程序的实例进程是动态产生,动态消亡的进程在其生命周期内,在三种基本状态之间转换动态的地址空间独立性进程是资源分配的一个独立单位 例如:各进程的地址空间相互独立,进程小结(2/2),交互性指进程在执行过程中可能与其他进程产生直接或间接的关系异步性每个进程都以其相对独立的、不可预知的速度向前推进进程映像程序 + 数据 + 栈 + PCB可再入程序(可重入): 可被多个进程同时调用的程序,具有下列性质:它是纯代码的,即在执行过程中自身不改变,调用它的进程应该提供数据区,课后作业(1/2)
18、,1、阅读教材第3章3.3节相关内容,掌握相关概念2、教材第3章习题 3.2 假设一个计算机有 A 个输入输出设备和 B 个处理器,在任何时候内存最多容纳 C 个进程。假设 ABC,试问: a. 任一时刻,处于就绪态、运行态、阻塞态、就绪挂起态、阻塞挂起态的最大进程数目各是多少? b. 处在就绪态、运行态、阻塞态、就绪挂起态、阻塞挂起态的最小进程数目各是多少?3、教材第3章习题 3.4 假设我们是一个操作系统的开发人员,该操作系统采用五状态进程模型(如图3.5 所示)。在该操作系统中,所有进程按照轮转方式执行。再假设我们正在为运行 I/O 密集型任务的计算机开发新的操作系统。为了保证这些任务在
19、需要时(即当一个突发 I/O 完成时)能快速获得处理器,我们在进程模型中考虑两个 READY 状态:READY-CPU 状态(为 CPU 密集型进程)和 READY-I/O 状态(为 I/O 密集型进程)。系统中处于 READY- I/O 状态的进程拥有最高权限访问 CPU,并且以 FCFS 方式执行。处于READY-CPU 状态的进程以轮转方式执行。当进程进入系统时,它们被分类为 CPU 密集型或者 I/O 密集型。,课后作业(2/2),a. 讨论用如上所描述的两种就绪状态实现操作系统的优点和缺点。 b. 讨论如何通过五状态进程模型并修改进程调度算法来获得六状态进程模型的好处。4、教材第3章习题 3.7 表 3.9 展示了 UNIX SVR4 操作系统的 9 个进程状态。 a. 列出表 3.9 中的 9 个状态并且指出这 9 个状态与图 3.9b 中 7个状态之间的关系。 b. 给出 UNIX SVR4 操作系统中存在两个运行状态的理由。,Thanks,The End,