1、1.程序的顺序执行在任何时刻,机器只执行一个操作,只有 在前一操作执行完后,才能执行后继操作。例作业i的输入操作、计算操作和打印操 作分别用Ii、Ci、Pi表示。则顺序执行过程为:,2.1 进程概念的引入,I1,I2,I3,P1,C1,P2,P3,C2,C3,程序顺序执行的特点:,顺序性: 在任何时刻,机器只执行一个操作,只有在前一个操作完成后,才进行下一个操作。 封闭性:程序在运行时独占全机资源。因此,这些资源的状态只能由运行的这个程序决定和改变。不受外界因素影响。 可再现性:程序执行时,只要初始条件相同,无论程序连续运行,或断断续续地运行,程序的执行结果与其执行速度无关,其最终结果不变。,
2、优点: 由于顺序程序的封闭性和可再现性,为程序员调试程序带来了很大方便。缺点: 由于资源的独占性,使得系统资源利用率非常低。,2.程序的并发执行是指若干个程序(或程序段)同时在系统中 运行,这些程序(或程序段)的执行在时间上是 重叠的,一个程序(或程序段)的执行尚未结束, 另一个程序(或程序段)的执行已经开始。 以资源的共享为条件 提高了系统资源利用率、系统吞吐量。,例在下面的有向无环图中,作业i的输入操作、计算操作和打印操作分别用Ii、Ci、Pi表示。虽然同一作业中的输入操作、计算操作和打印操作必须顺序执行,但对一批作业而言,情况就不同了。,I1,I2,I3,I4,P1,C1,P2,P3,C
3、2,C3,P4,C4,并发执行,并发执行,程序并发执行特征(1)失去了程序封闭性和可再现性程序在并发执行时,多个程序共享系统中的 各种资源,因而这些资源的状态将由多个程序来 改变,致使程序的运行失去了封闭性;由于失去 了封闭性,也将导致失去其可再现性。,例有两个循环程序A和B,共享一个变量N。A每执行 一次时都要做 N=N+1;B每执行一次都要做print(N) ,N=0。并以不同的速度运行。这样,可能出项下述三 种情况(假设某时刻变量N的值为n)。 N=N+1,print(N),N=0:N分别为 n+1,n+1,0。 Print(N),N=N+1,N=0 :N分别为 n,n+1,0。 Pri
4、nt(N),N=0,N=N+1:N分别为 n,0,1 。其计算结果与并发程序的执行速度有关,从而失去 了可再现性,(2) 并行执行的程序间产生了相互制约关系 因共享资源或协调完成同一任务,使得并发程序 之间发生了相互制约关系。 例 系统中并发执行的程序段A和B在运行过程中都希 望使用打印机输出计算结果,若系统只有一台打印机, 分得打印机的程序段(假设A得到)可以继续运行,而没 有得到打印机的程序段B就不得不暂停,等到有可用 打印机时才能继续执行。我们称这种制约关系为间接 关系。,(3)程序与CPU执行活动之间不再一一对应 程序:是完成某一特定功能的指令序列,是静态的概念; CPU执行的活动:是
5、一个动态概念,它是程序的执行过程。 例在分时系统中,多个用户都调用C编译对自己的源程序进行编译,实际系统只保留一个编译程序,多个用户通过共享执行它完成各自源程序的编译工作。这样,系统虽然只保留一个编译程序,但CPU现正在为多个用户执行编译。,由于并发程序的上述这些特点,使得系统中的活动以及各种活动之间的相互关系非常复杂。因此,“程序”这个静态的概念已不能如实地反映系统中的活动情况。为此,现代操作系统引入了进程的概念。,3.进程定义 一个具有一定独立功能的程序对某个数据集在处 理机上的一次执行过程和分配资源的基本单位。 进程这个概念是为了描述系统中各并发活动而引入的。 “进程”(process)
6、这一术语,在60年代初期,首先在美国 的麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统中 引入的。只是IBM/360使用了另一个术语任务(task),但两 者的实际含义是相同的。,进程内涵 进程是程序的一次执行。 进程是可以和其它计算并行执行的计算。 进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。 进程是程序在一个数据集合上的运行过程。 进程是系统进行资源分配和调度的一个独立单位。 进程是可以和其他程序并行执行的程序的一次执行 OS设置进程是为了描述程序的动态执行过程.,进程特征 (1)动态性:进程是程序的一次执行,它是一个 动态的概念,是临时的,有生命期的,
7、表现在它由 创建而产生,完成任务后被撤消。程序是完成某个 特定功能的指令的有序序列,它是一个静态的概念。 程序可以作为一种软件资源长期保存。进程是把程 序作为它的运行实体,没有程序,也就没有进程。我们把程序看成是一个菜谱,而进程则是按照 菜谱进行烹调的过程。,(2)并发性:多个进程实体,同存于内存中,能 在一段时间内同时执行;程序是不能并发执行的。(3)独立性:进程是系统进行资源分配和调度的 一个独立单位;程序则不是。例以多用户进程共享一个编译程序为例,为多 个用户执行编译时,显然CPU的分配是以进程为单位, 而不是以程序为单位。因为主存只有一个编译程序, 但几个用户的源程序都得到编译。,(4
8、)异步性:进程以各自独立的、不可预知的 速度向前推进;或者说,进程按异步方式运行。正 是这一特征,将导致程序执行的不可再现性。因此, 在OS中必须采取措施来保证各程序之间能协调运行。 进程间可以相互作用。(5)结构特性:为了描述和记录进程的运行变 化过程,并使之能正确运行,应为每个进程配置一 个进程控制块。这样,从结构上看,每个进程是由 程序段、数据段和进程控制块三部分组成。,进程与程序的区别,进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件,是静态和可以复制的。 进程是暂时的,程序是永久的:进程是一个状态变化的过程,动态地
9、被创建,执行后消亡;程序可长久保存。 进程与程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)。 进程具有并发特征(独立性和异步性) ;而程序没有。 进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。,作业与进程的区别,作业是用户向计算机提交任务的实体,被提交后进入外存的作业等待队列。而进程是完成用户任务的执行实体,被创建后,总有相应部分常驻内存; 一个作业至少由一个进程来执行完成,反之不然; 作业的概念主要用于批处理操作系统;而进程的概念几乎用于所有的多道系统中。,2.2 进程的描述,1. 进程控制块 PCBOS在管理和控制
10、进程时必须知道什么?它必须知道有哪 些进程及他们位置。它必须知道在管理时所必需的进程属性 进程控制块:与每个进程相关联的所有OS用于控制进 程的属性的集合。 PCB是进程存在系统中的唯一标识。 进程映像(进程实体):用户程序、用户数据、系统栈和进程控制块。,进程映像,用户程序:将被执行的程序。 用户数据:用户空间中的可修改部分。可以包括程序数据、用户栈区域和可修改的程序。 系统栈:每个进程有一个或多个系统栈,用于保存参数、过程调用地址和系统调用地址。 PCB:OS控制进程所需要的数据。,进程空间,任一进程都有自己的地址空间,称为进程空间,由用户空间和系统空间组成。 用户程序在用户空间执行,只能
11、执行普通指令,称处于用户态;操作系统内核在系统空间执行,可执行所有指令,称处于系统态(核心态、管理态)。,PCB中的基本信息,进程标识符:用于唯一地标识一个进程。外部标识符:由创建者提供,通常是由字母、数字所组成,往往是由用户访问进程时使用,便于记忆。如计算进程、打印进程、发送进程、接收进程等。内部标识符:OS为每一个进程赋予了一个唯一的整数,作为内部标识。父进程标识符、子进程标识符、用户标识符。,进程的状态:说明进程目前所处的状态,进程可能的状态在下一节描述。 CPU现场保护区:当进程由于某种原因不能继续运行时,要将其CPU运行的现场信息保存起来,以便下次继续运行。通常,CPU的现场信息包括
12、:程序计数器(PC)、工作寄存器、程序状态字等。 CPU的调度信息:包括进程优先级、进程所在各种队列的指针。 进程要执行的程序在主存和外存起始地址,及存取保护信息。,进程使用的资源信息:包括分配给进程的I/O设备、正在执行的I/O请求信息、当前进程正打开的文件等。 记帐信息:包括CPU占用量,实际所用时间量,帐号等。 进程之间的家族关系:在进程的树型结构系统(如UNIX)中,进程之间存在着家族关系。创建进程的进程称为父进程,被创建进程称为子进程。 进程的连接指针:将相同状态的进程连接在一起。,PCB表,系统把所有PCB组织在一起,并把它们放在内存的固定区域,就构成了PCB表 PCB表的大小决定
13、了系统中最多可同时存在的进程个数,称为系统的并发度 可以根据进程的不同状态进行组织,图2.1 PCB链表队列,进程上下文,进程上下文是对进程执行活动全过程的静态描述。 进程上下文由进程的用户地址空间内容(正文段、数据集等)、硬件寄存器内容及与该进程相关的核心数据结构组成。 一个进程的执行是在该进程的上下文中执行的,当系统调度新进程占用处理机时,新老进程的上下文将进行切换。,2.进程的状态三种基本状态。进程执行时的间断性,决定了进程可能 具有多种状态。(1)运行态(running):正在CPU上执行的进程所处状态为 运行状态。单CPU系统只有一个进程处于运行状态;多CPU系 统可能有多个进程处于
14、执行状态。(2)阻塞态(blocked):又称等待态。当一个进程因等待某 个条件发生而不能运行时处于阻塞态。处于阻塞态的进程在 逻辑上是不能运行的,即使CPU空闲,它也不能占用CPU。,(3)就绪态(ready):已分配到除CPU之外的所有必要的 资源后,只要能再获得CPU,便可立即执行。多个处于就绪 状态的进程排成一个或多个队列-就绪队列。这三种状态的相互转换如下图所示:,运行态,就绪态,阻塞态,时间片用完,进程调度,等待某个 事件发生,某个事件已经发生,图2.2 进程的状态及其转换,就绪态-运行态:处于就绪态的某进程被进程调度程序的执行选中时。 运行态-阻塞态:是由运行进程自己主动改变的。
15、 例一个正在运行的进程启动了某一外围设备后,等待该外围设备传输完成时,使自己由运行态变为阻塞态。 阻塞态-就绪态:是由外界事件引起的。 例上面所述的外围设备传输已经完成时,请求中断,由I/O中断处理程序把因等待这一I/O完成而阻塞的进程变为就绪态。,由进程状态转换图可以看出:,运行态-就绪态:处于运行态的进程被剥夺CPU时。例 采用时间片轮转法调度时,当前运行进程用完分给它的时间片后,将由运行态变为就绪态;或采用优先级调度时,若有更高优先级的进程变为就绪态,当前进程被迫放弃CPU,使自己由运行态变为就绪态,之后转进程调度。 由于系统、进程自身和外界的原因,可能使一个进程多次反复地经历三个基本状
16、态的转换,才能最终达到完成而撤消。,(4)创建态:刚刚建立,还未送入就绪队列的状态。 刚创建,并为它分配资源。(5)终止状态:已正常结束或异常结束,但尚未撤消 时。暂留在系统中,以便其它进程去收集该进程有关信息。创建态就绪态:OS准备好再接纳一个进程时,把一 个进程从新建状态转换到就绪状态。大多数系统基于现有 的进程数或分配给现有进程的虚存数量设置一些限制,以 确保不会因为活跃进程的数量过多而导致系统的性能下降。,图2.3 进程的五种状态,创建态,运行态,阻塞态,终止态,进程调度,被抢占,事件完成,等待事件,进程完成,就绪态,Fork(),接纳,3.进程队列 PCB是系统对进程进行统一管理的依
17、据。一个系统可有几十个、几百个PCB。为了便于系统查找,目前常用的组织方式如下:(1)线性方式:,图2-4 PCB线性队列示意图,(2)链接方式:把具有相同状态的PCB,用其中的连 接字,链接成一个队列。每一个队列有一个专用队列指针指出该队列中第一 个进程PCB所在位置。这样就形成了就绪队列、阻塞队列。 处于就绪态的进程可按照某种策略排成多个就绪队列。 处于阻塞态的进程又可以根据阻塞的原因不同组织成多 个阻塞队列。例等待磁盘I/O队列,等待磁带I/O队列 等。,图2-5 PCB链接队列示意图,(3)索引方式:系统根据进程的状态,建立几张 索引表,并把索引表在内存的首地址记录于内存 中一些专用单
18、元。,图2-6 PCB索引结构示意图,2.3 进程的控制,进程控制:指系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各状态间转换。 原语:是原子操作。一个操作中的所有动作,要么全做,要么全不做,不允许中断。不可分割的操作。用于进程控制的程序段。 用于进程控制的原语有:创建原语;撤消原语;阻塞原语;唤醒原语等。,为了防止OS及关键数据如PCB等,受到破坏,通常处理机有两种执行状态: 系统态:核心态(管态)。具有较高的特权,能执行一切指令,访问所有寄存器和存储区。 用户态:目态,具有较低特权,只能执行规定的指令,访问指定的寄存器和存储区。用户程序:运行在用户态,不能去执行OS指令和访
19、问OS区域。OS内核:运行在系统态。进程控制:是由OS内核实现的。,(1)创建进程的时机 用户登录:在分时系统中,用户在终端键入登录命 令后,系统将为该终端用户建立一进程,并把它插入 就绪队列。 提供服务:当运行中的用户程序提出某种请求后, 系统将专门创建一个进程来提供用户所需要的服务。 如用户程序请求文件打印,OS将为之创建一个 打印进程,打印进程和用户进程可并发执行。,1. 创建原语(UNIX系统用fork() ),作业调度:在批处理系统中,将作业装入内存 时,为它分配必要的资源,系统并立即为它创建 进程,再插入就绪队列。 应用请求:基于应用进程的需要,由它自己创 建一个新进程(子进程),
20、可并发执行。如某应用程序需要:从键盘读入数据(建立 键盘输入进程)、处理数据、以表格形式在屏幕 上显示结果(表格输出进程)。,(2)进程的创建 一旦OS发现了要求创建新进程的事件后,便调动进程创 建原语,步骤如下 申请空白PCB,分配唯一的数字标识符。 为新进程分配资源。为其程序和数据,以及用户栈分配 必要的内存空间。 初始化进程控制块。把调用者提供的参数:进程名、进程优先级、实体所在主存的起始地址、所需的资源清单、 记帐信息及进程家族关系等填入PCB结构中。 将新进程插入就绪队列。,入口,查PCB链表,有空PCB?,PCB(I)入进程家族或进程链,PCB( I )入就绪队列,将有关参数填入P
21、CB(I)相应项,取空表PCB(I),返回,创建失败,无,创建原语流程图,有,2.撤消原语 撤消:是指撤消进程存在的标志(PCB)。(1)进程终止的时机 正常结束:进程运行完,将产生一个中断,通知OS进程已运行完毕。 异常结束:进程运行期间,出现某些错误或故障,而迫使进程终止。故障中断。 外界干预: 操作员或OS干预。如发生死锁。 父进程请求。父进程有权终止子进程。 父进程终止。此时,OS将其子进程终止。,(2)进程终止的过程 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出其状态。 若正处于执行状态,则终止。 若有子孙进程,也须终止,以防成为不可控的。 将其全部资源或归还
22、其父进程或归还系统。 将其PCB从所在队列中移出,等待其它程序来搜集信息。,入口,返回,查进程链表或进程家族,有此PCB吗?,该PCB有子进程吗?,释放该进程所占有的资源,释放该PCB结构本身,出错处理,有,无,有,无,3.进程的阻塞和唤醒 (1) 引起进程的阻塞和唤醒的事件 请求系统服务,暂得不到满足。例一进程请求打印机,无,被阻塞,由释放打印机者将其唤醒。 启动某种操作。例进程启动某I/O操作。 新数据尚未到达。相互合作的进程,一个须等待另一个提供的数据后才能运行。 无新工作可做。例发送进程,无新的发送请求时,边将自己阻塞起来。,(2) 阻塞过程无法运行的进程自己调用阻塞原语阻塞自己。 中
23、断CPU. 将其运行现场保存在其PCB的CPU现场保护区。 置状态为阻塞态。 插入相应事件的等待队列(阻塞队列)中。 转进程调度。,(3)醒过程被阻塞进程所期待的事件出现了,则由有关进程调用唤 醒原语将其唤醒。 把被阻塞进程从阻塞队列中移出。 将其PCB的现行状态改为就绪状态。 插入就绪队列中。 (4)阻塞原语和唤醒原语是一对刚好相反的原语。若在某进程中调用了阻塞原语,则须在另一相关进程调 用唤醒原语,否则,被阻塞进程会长久地处于阻塞状态,无 机会运行。,入口,入口,保存当前进程的CPU现场,从等待队列中摘下被唤醒进程,置该进程的状态,被阻塞进程入等待队列,转进程调度,将被唤醒进程置为就绪状态
24、,将被唤醒进程送入就绪队列,转进程调度返回,阻塞原语,唤醒原语,4.挂起和解挂(激活)(1)挂起状态的引入 用户的需要:用户在自己的程序运行期间,发现有问题 时,希望暂时使自己的进程静止下来。把这种静止状态称 为挂起状态。执行状态暂停执行;就绪状态-暂不接受调度。 父进程的需要:考查和修改子进程或协调子进程间的活动时。 交换的需要:内存不够,从内存换至外存。 负荷调整的需要:实时系统工作负荷较重。,(2)进程的挂起过程 运行态静止就绪 活动就绪静止就绪 活动阻塞静止阻塞(3)解挂(激活)过程 发生激活进程的事件,系统调用激活原语将指定的进程激活。静止就绪活动就绪静止阻塞活动阻塞若在外存处于静止就绪,则从外存调入内存,活动就绪。,