操作系统学习第二章ppt课件.ppt

上传人:小飞机 文档编号:1349952 上传时间:2022-11-12 格式:PPT 页数:61 大小:372KB
返回 下载 相关 举报
操作系统学习第二章ppt课件.ppt_第1页
第1页 / 共61页
操作系统学习第二章ppt课件.ppt_第2页
第2页 / 共61页
操作系统学习第二章ppt课件.ppt_第3页
第3页 / 共61页
操作系统学习第二章ppt课件.ppt_第4页
第4页 / 共61页
操作系统学习第二章ppt课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《操作系统学习第二章ppt课件.ppt》由会员分享,可在线阅读,更多相关《操作系统学习第二章ppt课件.ppt(61页珍藏版)》请在三一办公上搜索。

1、第二章 进程管理,在多道程序批处理系统和分时系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位是进程。,本章主要内容,进程的概念进程的描述:PCB、状态、进程的控制:创建、撤消、阻塞、唤醒进程的低级通信:互斥、同步、P/V操作进程的高级通信:消息传递进程的调度:分配CPU给某一进程死锁:多进程竞争有限资源,一、 程序的顺序执行程序的顺序执行:在任何时刻,机器只执行一个操作,只有在前一个操作执行完后,才能执行后继操作。例作业i的输入操作、计算操作和打印操作分别用Ii、Ci、Pi表示。则顺序执行过程为:,2.1 进程的引入和概念,I1,I2,I3,P1,C1,P2,P3,C2,C3,程序

2、顺序执行的特点:,顺序性: 在任何时刻,机器只执行一个操作,只有在前一个操作完成后,才进行下一个操作。封闭性:程序在运行时独占全机资源。因此,这些资源的状态只能由运行的这个程序决定和改变。不受外界因素影响。可再现性:程序执行时,只要初始条件相同,无论程序连续运行,或断断续续地运行,程序的执行结果与其执行速度无关,其最终结果不变。,优点: 由于顺序程序的封闭性和可再现性,为程序员调试程序带来了很大方便。缺点: 由于资源的独占性,使得系统资源利用率非常低。,二、 程序的并发执行 程序的并发执行:是指若干个程序(或程序段)同时在系统中运行,这些程序(或程序段)的执行在时间上是重叠的,一个程序(或程序

3、段)的执行尚未结束,另一个程序(或程序段)的执行已经开始。以资源的共享为条件提高了系统资源利用率、系统吞吐量。,例在下面的有向无环图中,作业i的输入操作、计算操作和打印操作分别用Ii、Ci、Pi表示。虽然同一作业中的输入、计算和打印操作必须顺序执行,但对一批作业而言,情况就不同了。,I1,I2,I3,I4,P1,C1,P2,P3,C2,C3,P4,C4,并发执行,并发执行,程序并发执行的特征:(1,2,3),1. 失去了程序的封闭性和可再现性 程序在并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性;由于失去了封闭性,也将导致失去其可再现

4、性。,(1) 失去了程序的封闭性和可再现性 程序的并行执行,使得系统中的资源的状态由并行执行的多道程序决定。 举例说明: 假如系统中有两道程序A和B,这两个程序都正在打印机上输出。程序输出完成后将打印机释放。 假定系统用变量N来记录打印机的可用数量。假定N的当前值为1 ,也即还有一台空闲。,当A、B程序释放打印机后,系统的打印机数量为3台 (即N=3)。但由于两个程序并发执行,各程序执行释放操作是随机的,有可能使得N的值结果不正确。 下面是两个程序释放打印机的操作:int N=1;program A: program B:begin begin execute program A; execu

5、te program B; 释放打印机:N=N+1 ; 释放打印机: N=N+1 ; end; end;,“N=N+1”的操作分解成机器指令为: 取N到寄存器A; A+1A; 存A到N; 由于程序A和B都以各自独立的速度向前推进,故程序A执行N=N+1的操作与程序B执行N=N+1操作是随机的。而这两个程序执行N的序列可用表描述如下:,若系统只有一台打印机,分得打印机的程序段(假设A得到)可以继续运行,而没有得到打印机的程序段B就不得不暂停执行,等到有可用打印机时才能继续执行。我们称这种制约关系为间接关系。 还有一种直接制约关系,是各并发执行的程序段之间需要协调共同完成同一个任务而引起的。 例如

6、:type a.c | more 或 dir|sort; 这两条命令就需要两个程序通过管道实现两者之间协作完成用户希望的工作。 在并发环境下程序的执行是间断性的: 执行停执行,2. 并行执行的程序间产生了相互制约关系 因共享资源或协调完成同一任务,使得并发程序之间发生了相互制约关系。 例 系统中并发执行的程序段A和B在运行过程中都希望使用打印机输出计算结果,若系统只有一台打印机,分得打印机的程序段(假设A得到)可以继续运行,而没有得到打印机的程序段B就不得不暂停,等到有可用打印机时才能继续执行。我们称这种制约关系为间接关系。,还有一种直接制约关系,是各并发执行的程序段之间需要协调共同完成同一个

7、任务而引起的。 例如:type a.c | more 或 dir|sort; 这两条命令就需要两个程序通过管道实现两者之间协作完成用户希望的工作。 在并发环境下程序的执行是间断性的: 执行停执行,3.程序与CPU执行的活动之间不再一一对应 程序:是完成某一特定功能的指令序列,是静态的概念; CPU执行的活动:是一个动态概念,它是程序的执行过程。例在分时系统中,多个用户都调用C编译对自己的源程序进行编译,实际系统只保留一个编译程序,多个用户通过共享执行它完成各自源程序的编译工作。这样,系统虽然只保留一个编译程序,但CPU现正在为多个用户执行编译。,由于并发程序的上述这些特点,使得系统中的活动以及

8、各种活动之间的相互关系非常复杂。因此,“程序”这个静态的概念已不能如实地反映系统中的活动情况。为此,现代操作系统引入了进程的概念。,三、 进程的概念1、进程定义 进程这个概念是为了描述系统中各并发活动而引入的。 “进程”(process)这一术语,在60年代初期,首先在美国的麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统中引入的。只是IBM/360使用了另一个术语任务(task),但两者的实际含义是相同的。,进程的定义进程是程序的一次执行。进程是可以和其它计算并行执行的计算。进程是一个程序与其使用的数据在处理机上顺序执行时发生的活动。进程是程序在一个数据集合上的运行过程。进

9、程是系统进行资源分配和调度的一个独立单位。,2、进程与程序的联系和区别(5个)(1) 动态性:进程是程序的一次执行,它是一个动态的概念,是临时的,有生命期的,表现在它由创建而产生,完成任务后被撤消。程序是完成某个特定功能的指令的有序序列,它是一个静态的概念。程序可以作为一种软件资源长期保存。进程是把程序作为它的运行实体,没有程序,也就没有进程。 我们把程序看成是一个菜谱,而进程则是按照菜谱进行烹调的过程。,(2)并发性:多个进程实体,同存于内存中,能在一段时间内同时执行;程序是不能并发执行的。(3)独立性:进程是系统进行资源分配和调度的一个独立单位;程序则不是。 例以多用户进程共享一个编译程序

10、为例,为多个用户执行编译时,显然CPU的分配是以进程为单位,而不是以程序为单位。因为主存只有一个编译程序,但几个用户的源程序都得到编译。,(4)异步性:进程以各自独立的、不可预知的速度向前推进;或者说,进程按异步方式运行。正是这一特征,将导致程序执行的不可再现性。因此,在OS中必须采取措施来保证各程序之间能协调运行。(5)结构特性:为了描述和记录进程的运行变化过程,并使之能正确运行,应为每个进程配置一个进程控制块。这样,从结构上看,每个进程是由程序段、数据段和进程控制块三部分组成。,四、OS的控制结构,OS为了管理进程和资源,必须掌握关于每个进程和资源当前状态的信息。OS构造并维护它所管理的每

11、个实体的信息表。共分四种不同类型的表。存储器-存储表I/O设备-I/O表文件-文件表进程-基本进程表,存储表:用于跟踪主存储器和辅助(虚拟)存储器。保留在辅存中的进程使用某种类型的虚拟存储或简单的交换机制。I/O表:用于管理计算机系统中的I/O设备和通道。是否已分配给某个进程?文件表:提供关于文件是否存在、文件在辅存中的位置、当前状态和其它属性的信息。进程表:用于管理进程。进程控制块中的基本控制块占有进程表(proc)中的一项。,2.2 进程的描述,一、进程控制块PCB(Process Control Block)OS在管理和控制进程时必须知道什么?它必须知道进程的位置。它必须知道在管理时所必

12、需的进程属性进程控制块:与每个进程相关联的所有OS用于控制进程的属性的集合。进程映像(进程实体):用户程序、用户数据、系统栈和进程控制块。PCB是进程存在系统中的唯一标识。,进程映像(进程实体),用户程序:将被执行的程序。用户数据:用户空间中的可修改部分。可以包括程序数据、用户栈区域和可修改的程序。系统栈:每个进程有一个或多个系统栈,用于保存参数、过程调用地址和系统调用地址。PCB:OS控制进程所需要的数据。,PCB中的基本信息,进程标识符:用于唯一地标识一个进程。 外部标识符:由创建者提供,通常是由字母、数字所组成,往往是由用户访问进程时使用,便于记忆。如计算进程、打印进程、发送进程、接收进

13、程等。 内部标识符:OS为每一个进程赋予了一个唯一的整数,作为内部标识。父进程标识符、子进程标识符、用户标识符。进程的状态:说明进程目前所处的状态,进程可能的状态在下一节描述。CPU现场保护区:当进程由于某种原因不能继续运行时,要将其CPU运行的现场信息保存起来,以便下次继续运行。通常,CPU的现场信息包括:程序计数器(PC)、工作寄存器、程序状态字等。,CPU的调度信息:包括进程优先级、进程所在各种队列的指针。进程要执行的程序在主存和外存起始地址,及存取保护信息。进程使用的资源信息:包括分配给进程的I/O设备、正在执行的I/O请求信息、当前进程正打开的文件等。记帐信息:包括CPU占用量,实际

14、所用时间量,帐号等。进程之间的家族关系 在进程的树型结构系统(如UNIX系统)中,进程之间存在着家族关系。创建进程的进程称为父进程,被创建进程称为子进程。,二、进程的状态1、三种基本状态。进程执行时的间断性,决定了进程可能具有多种状态。(1)运行态(running):正在CPU上执行的进程所处状态为运行状态。单CPU系统只有一个进程处于运行状态;多CPU系统可能有多个进程处于执行状态。(2)阻塞态(blocked):又称等待态。当一个进程因等待某个条件发生而不能运行时处于阻塞态。处于阻塞态的进程在逻辑上是不能运行的,即使CPU空闲,它也不能占用CPU。,(3)就绪态(ready):已分配到除C

15、PU之外的所有必要的资源后,只要能再获得CPU,便可立即执行。多个处于就绪状态的进程排成一个或多个队列-就绪队列。 这三种状态的相互转换如下图所示:,运行态,就绪态,阻塞态,时间片用完,进程调度,等待某个事件发生,某个事件已经发生,图2.2 进程的状态及其转换,由进程状态转换图可以看出:就绪态-运行态:处于就绪态的某进程被进程调度程序的执行选中时。运行态-阻塞态:是由运行进程自己主动改变的。 例一个正在运行的进程启动了某一外围设备后,等待该外围设备传输完成时,使自己由运行态变为阻塞态。阻塞态-就绪态:是由外界事件引起的。 例上面所述的外围设备传输已经完成时,请求中断,由I/O中断处理程序把因等

16、待这一I/O完成而阻塞的进程变为就绪态。,运行态-就绪态:处于运行态的进程被剥夺CPU时。例 采用时间片轮转法调度时,当前运行进程用完分给它的时间片后,将由运行态变为就绪态;或采用优先级调度时,若有更高优先级的进程变为就绪态,当前进程被迫放弃CPU,使自己由运行态变为就绪态,之后转进程调度。由于系统、进程自身和外界的原因,可能使一个进程多次反复地经历三个基本状态的转换,才能最终达到完成而撤消。,2、新状态和终止状态 新状态(创建态):刚刚建立,还未送入就绪队列的状态。刚创建,并为它分配资源。终止状态:已正常结束或异常结束,但尚未撤消时。暂留在系统中,以便其它进程去收集该进程的有关信息。 创建态

17、就绪态:OS准备好再接纳一个进程时,把一个进程从新建状态转换到就绪状态。大多数系统基于现有的进程数或分配给现有进程的虚存数量设置一些限制,以确保不会因为活跃进程的数量过多而导致系统的性能下降。,图2.3 进程的五种状态,创建态,运行态,阻塞,终止态,进程调度,被抢占,事件完成,等待事件,进程完成,就绪态,Fork(),接纳,三、进程队列 PCB是系统对进程进行统一管理的依据。一个系统可有几十个、几百个PCB。为了便于系统查找,目前常用的组织方式如下:(1)链接方式:把具有相同状态的PCB,用其中的连接字,链接成一个队列。 每一个队列有一个专用队列指针指出该队列中第一个进程PCB所在位置。这样就

18、形成了就绪队列、阻塞队列。处于就绪态的进程可按照某种策略排成多个就绪队列。处于阻塞态的进程又可以根据阻塞的原因不同组织成多个阻塞队列。例 等待磁盘I/O队列,等待磁带I/O队列等。,(2) 索引方式:系统根据进程的状态,建立几张索引表,并把索引表在内存的首地址记录于内存中一些专用单元。,PCB1,PCB2,PCB8,PCB3,PCB4,PCB5,PCB6,PCB7,执行指针,就绪表指针,阻塞表指针,阻塞索引表,2.3 进程控制,进程控制:指系统使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各状态间转换。原语:是原子操作。一个操作中的所有动作,要么全做,要么全不做,不允许中断。不可分割

19、的操作。用于进程控制的程序段。用于进程控制的原语有:创建原语;撤消原语;阻塞原语;唤醒原语等。,为了防止OS及关键数据如PCB等,受到破坏,通常处理机有两种执行状态:系统态:核心态。具有较高的特权,能执行一切指令,访问所有寄存器和存储区。用户态:具有较低特权,只能执行规定的指令,访问指定的寄存器和存储区。 用户程序:运行在用户态,不能去执行OS指令和访问OS区域。 OS内核:运行在系统态。 进程控制:是由OS内核实现的。,一.创建原语(UNIX系统用fork()系统调用实现进程创建)。1.引起创建进程的事件用户登录:在分时系统中,用户在终端键入登录命令后,系统将为该终端用户建立一进程,并把它插

20、入就绪队列。提供服务:当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务。如用户程序请求文件打印,OS将为之创建一个打印进程,打印进程和用户进程可并发执行。,作业调度:在批处理系统中,将作业装入内存时,为它分配必要的资源,系统并立即为它创建进程,再插入就绪队列。应用请求:基于应用进程的需要,由它自己创建一个新进程(子进程),可并发执行。 如某应用程序需要:从键盘读入数据(建立键盘输入进程)、处理数据、以表格形式在屏幕上显示结果(表格输出进程)。,2. 进程的创建一旦OS发现了要求创建新进程的事件后,便调动进程创建原语,步骤如下:申请空白PCB,分配唯一的数字标识符。

21、为新进程分配资源。为其程序和数据,以及用户栈分配必要的内存空间。初始化进程控制块。把调用者提供的参数:进程名、进程优先级、实体所在主存的起始地址、所需的资源清单、记帐信息及进程家族关系等填入PCB结构中。将新进程插入就绪队列。,二、撤消原语撤消:是指撤消进程存在的标志(PCB)。1.引起进程终止的事件正常结束:进程运行完,将产生一个中断,通知OS进程已运行完毕。异常结束:进程运行期间,出现某些错误或故障,而迫使进程终止。故障中断。外界干预: 操作员或OS干预。如发生死锁。 父进程请求。父进程有权终止子进程。 父进程终止。此时,OS将其子进程终止。,2. 进程的终止过程 根据被终止进程的标识符,

22、从PCB集合中检索出该进程的PCB,从中读出其状态。若正处于执行状态,则终止,置调度标志为真,待以后重调度。若有子孙进程,也须终止,以防成为不可控的。将其全部资源或归还其父进程或归还系统。将其PCB从所在队列中移出,等待其它程序来搜集信息。,三. 进程的阻塞和唤醒1. 引起进程的阻塞和唤醒的事件请求系统服务,暂得不到满足。例一进程请求打印机,无,被阻塞,由释放打印机者将其唤醒。启动某种操作。例进程启动某I/O操作。新数据尚未到达。相互合作的进程,一个须等待另一个提供的数据后才能运行。无新工作可做。例发送进程,无新的发送请求时,边将自己阻塞起来。,2.阻塞过程无法运行的进程自己调用阻塞原语阻塞自

23、己。中断CPU.将其运行现场保存在其PCB中。置状态为阻塞态。插入阻塞队列。转进程调度。,3. 唤醒过程 被阻塞进程所期待的事件出现了,则由有关进程调用唤醒原语将其唤醒。把被阻塞进程从阻塞队列中移出。将其PCB的现行状态改为就绪状态。插入就绪队列中。4. 阻塞原语和唤醒原语是一对作用刚好相反的原语。 若在某进程中调用了阻塞原语,则须在另一相关进程调用唤醒原语,否则,被阻塞进程会长久地处于阻塞状态,无机会运行。,四. 进程的挂起和激活1. 挂起状态的引入用户的需要:用户在自己的程序运行期间,发现有问题时,希望暂时使自己的进程静止下来。把这种静止状态称为挂起状态。 执行状态暂停执行; 就绪状态-暂

24、不接受调度。父进程的需要:考查和修改子进程或协调子进程间的活动时。对换的需要:内存不够,从内存换至外存。负荷调整的需要:实时系统工作负荷较重。,2. 进程的挂起过程运行态静止就绪活动就绪静止就绪活动阻塞静止阻塞3. 解挂(激活)过程 发生激活进程的事件,系统调用激活原语将指定的进程激活。 静止就绪活动就绪 静止阻塞活动阻塞 若在外存处于静止就绪,则从外存调入内存,活动就绪。,2. 4 线程的概念(thread)1. 线程的引入引入进程的目的:为了使多个程序并发执行,以改善资源利用率及提高系统吞吐量。进程的两个基本属性:进程是一个可拥有资源的独立单位;进程同时又是一个可以独立调度和分派的基本单位

25、。进程数目不宜过多,进程切换的频率也不宜过高。进程是一个资源拥有者,因而在进程的创建、撤消和切换中,系统必须为了付出较大的时空开销。因而限制了并发程度的进一步提高。,线程的引入,则是减少程序并发执行时系统付出的时空开销,使操作系统更加有效。试图提高系统内程序并发执行程度和提高系统吞吐量线程是80年代引入的。MS-DOS是一种支持单用户进程和单线程的OS;UNIX支持多用户进程,但只支持每个进程一个线程;支持多线程的多进程的包括Windows 2000、Solaris、Linux、OS/2等。每个进程由若干代码和数据块组成,此外它还拥有文件、主存以及至少一个线程。,进程被创建时,系统同时为进程创

26、建第一个线程。进程中的其它线程是通过调用线程创建原语显式创建;一线程可创建和撤消另一线程。将进程的两个属性分开。即让进程只作为资源的容器,而让线程作为系统的调度单位。线程是进程中的一个执行单位。同一进程中的各个线程分别有一组CPU指令、一组CPU寄存器和一个堆栈。它们共享进程的主存和文件。这些线程被操作系统调度执行。,单线程进程模式:,进程控制块,用户地址空间,用户栈,核心栈,多线程进程模式:,进程控制块,用户地址空间,线程控制块,用户栈,核心栈,线程控制块,用户栈,核心栈,线程控制块,用户栈,核心栈,线程,线程,线程,一个进程内的多线程共享该进程的所有资源,进程在逻辑上表示操作系统必须做的一

27、个作业,线程表示完成该作业的许多可能的子任务。线程是进程中的一个可执行实体,是被操作系统独立调度和分派的一个独立单位。一个进程内的多线程共享该进程的全部资源,如代码段、数据段以及系统资源(已打开文件、I/O设备等)。线程自己拥有很少资源。同一线程组中的线程共享它们的全局变量,并有相同的堆,因此使用malloc给线程组中的一个线程分配的内存可以被该线程组中的其他线程读写。但拥有不同的堆栈。,一个线程一般由如下部分组成:有一个唯一的标识符;有一组表示处理机状态的寄存器;有两个堆栈,分别用于用户态执行和核心态执行;有一个独立的程序计数器。由于线程拥有较少的资源,又具有传统进程的许多特性,因此有的把线

28、程叫做轻型进程。,2、 线程与进程的比较 为了更好地认识进程和线程,下面从拥有的资源、调度和并发性诸方面进行两者的比较:(1)拥有的资源 进程是拥有资源的一个独立单位。 线程自己不拥有系统资源(只有一点必不可少的资源),可以访问其隶属进程的资源。,(2)调度在引入线程的OS中,把线程作为调度和分派的基本单位。进程调度时,系统要进行进程上下文的切换,需要系统大量的开销;线程调度时,由于同一进程内的线程共享进程的资源,其切换是把线程仅有的一小部分资源变换即可,从而提高了系统的效率。线程切换比进程切换快得多。在由一个进程的线程向另一个进程的线程切换时,将引起进程上下文的切换。,(3)并发性引入线程后

29、,使得系统的并发执行程度更高。 进程之间可以并发执行,同一进程内的多线程也可并发执行。例在引入了线程的操作系统中,可以在一个文件服务进程中,设置多个服务线程,当第一个线程等待时,第二个线程可以继续运行;当第二个线程受阻塞时,第三个线程可以继续执行,从而显著地提高了文件服务的质量以及系统吞吐量。多线程共享进程的所有资源(如存取同一主存区),使用不当,可能使系统不安全。,3、用户级线程和内核支持线程系统进程和用户进程在进行切换时都要依赖于内核中的进程调度。内核支持线程:在内核中保留了一张线程控制块,内核根据该控制块而感知该线程的存在并对线程进行控制。所有线程的创建、撤消和切换都由内核实现。用户级线程:存在于用户级,内核并不知道其存在,因而其创建、撤消和切换都不利用系统调用来实现(无须通过中断进入OS内核)。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号