操作系统第三章.docx
《操作系统第三章.docx》由会员分享,可在线阅读,更多相关《操作系统第三章.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二部分:进程第三章 进程描述和控制3.1.1 背景在给进程下定义之前,首先总结一下第1章和第2章介绍的一些概念:1)一个计算机平台包括一组硬件资源,比如处理器、内存、I/O 模块、定时器和磁盘驱动器等。2)计算机程序是为执行某些任务而开发的。在典型的情况下,它们接受外来的输入,做一些处理之后,输出结果。3)直接根据给定的硬件平台写应用程序效率是低下的,主要原因如下:a)针对相同的平台可以开发出很多应用程序,所以开发出这些应用程序访问计算机资源的通用例程是很有意义的。b)处理器本身只能对多道程序设计提供有限的支持,需要用软件去管理处理器和其他资源同时被多个程序共享。c)如果多个程序在同一时间都
2、是活跃的,那么需要保护每个程序的数据、I/O 使用和其他资源不被其他程序占用。4)开发操作系统是为了给应用程序提供一个方便、安全和一致的接口。操作系统是计算机硬件和应用程序之间的一层软件(如图2.1 所示),对应用程序和工具提供了支持。5)可以把操作系统想象为资源的统一抽象表示,可以被应用程序请求和访问。资源包括内存、网络接口和文件系统等。一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用,例如一个操作系统可以允许资源共享和资源保护。有了应用程序、系统软件和资源的概念,就可以讨论操作系统怎样以一个有序的方式管理应用程序的执行,以达到以下目的:资源对多个应用程序是可用的。物理处
3、理器在多个应用程序间切换以保证所有程序都在执行中。处理器和I/O 设备能得到充分的利用。所有现代操作系统采用的方法都是依据对应于一个或多个进程存在的应用程序执行的一种模型。3.1.2 进程和进程控制块在进程执行时,任意给定一个时间,进程都可以唯一地被表征为以下元素:标识符:跟这个进程相关的唯一标识符,用来区别其他进程。状态:如果进程正在执行,那么进程处于运行态。优先级:相对于其他进程的优先级。程序计数器:程序中即将被执行的下一条指令的地址。内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享内存块的指针。上下文数据:进程执行时处理器的寄存器中的数据。I/O 状态信息:包括显式的I/O
4、 请求、分配给进程的I/O 设备(例如磁带驱动器)和被进程使用的文件列表等。记账信息:可能包括处理器时间总和、使用的时钟数总和、时间限制、记账号等。3.2进程状态eg1:考虑一个非常简单的例子,图3.2 给出了三个进程在内存中的布局,为简化讨论,假设没有使用虚拟内存,因此所有三个进程都由完全载入内存中的程序表示,此外,有一个小的分派器一1使处理器从一个进程切换到另一个进程。图3.3 给出了这三个进程在执行过程早期的轨迹,给出了进程A 和C 中最初执行的12 条指令,进程B 执行4 条指令,假设第4 条指令调用了进程必须等待的I/O 操作。图3.2 在指令周期13 时的执行快照(如图3.4 所示
5、)现在从处理器的角度看这些轨迹。图3.4 给出了最初的52个指令周期中交替的轨迹(为方便起见,指令周期都给出了编号)。在图中,阴影部分代表由分配器执行的代码。在每个实例中由分派器执行的指令顺序是相同的,因为是分派器的同一个功能在执行。假设操作系统仅允许一个进程最多连续执行6 个指令周期,在此之后将被中断,这避免了任何一个进程独占处理器时间。如图3.4 所示,进程A 最初的6 条指令被执行,接下来是一个超时并执行分派器的某些代码,在控制转移给进程B 之前分派器执行了6 条指令二2。在进程B 的4 条指令被执行后,进程B 请求一个它必须等待的I/O 动作,因此,处理器停止执行进程B,并通过分派器转
6、移到进程C。在超时后,处理器返回进程A,当这次处理超时时,进程B 仍然等待那个I/O 操作的完成,因此分派器再次转移到进程C。图3.3 图3.2 中进程的轨迹图3.4 图3.2 中进程的组合轨迹3.2.1 两状态进程模型在任何时刻,一个进程要么正在执行,要么没有执行一个进程可以处于以下两种状态之一:运行态或未运行态,如图3.5a 所示。当操作系统创建一个新进程时,它将该进程以未运行态加入到系统中,操作系统知道这个进程是存在的,并正在等待执行机会。当前正在运行的进程不时地被中断,操作系统中的分派器部分将选择一个新进程运行。前一个进程从运行态转换到未运行态,另外一个进程转换到运行态。图3.5 两状
7、态进程模型3.2.2 进程的创建和终止进程创建通常有4 个事件会导致创建一个进程,如表3.1 所示。在批处理环境中,响应作业提交时会创建进程;在交互环境中,当一个新用户试图登录时会创建进程。不论在哪种情况下,操作系统都负责新进程的创建,操作系统也可能会代表应用程序创建进程。例如,如果用户请求打印一个文件,则操作系统可以创建一个管理打印的进程,进而使请求进程可以继续执行,与完成打印任务的时间无关。表3.1 导致进程创建的原因进程终止表3.2 概括了进程终止的典型原因。任何一个计算机系统都必须为进程提供表示其完成的方法,批处理作业中应该包含一个Halt 指令或用于终止的操作系统显式服务调用来终止。
8、在前一种情况下,Halt 指令将产生一个中断,警告操作系统一个进程已经完成。对交互式应用程序,用户的行为将指出何时进程完成,例如,在分时系统中,当用户退出系统或关闭自己的终端时,该用户的进程将被终止。在个人计算机或工作站中,用户可以结束一个应用程序(如字处理或电子表格)。所有这些行为最终导致发送给操作系统的一个服务请求,以终止发出请求的进程。此外,很多错误和故障条件会导致进程终止。表3.2 列出了一些最常见的识别条件。最后,在有些操作系统中,进程可以被创建它的进程终止,或当父进程终止时而终止。表3.2 导致进程终止的原因3.2.3 五状态模型eg1:运行态:该进程正在执行。在本章中,假设计算机
9、只有一个处理器,因此一次最多只有一个进程处于这个状态。就绪态:进程做好了准备,只要有机会就开始执行。阻塞/等待态一1:进程在某些事件发生前不能执行,如I/O 操作完成。新建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中。通常是进程控制块已经创建但还没有加载到内存中的新进程。退出态:操作系统从可执行进程组中释放出的进程,或者是因为它自身停止了,或者是因为某种原因被取消。空新建:创建执行一个程序的新进程。这个事件在表3.1 中所列出的原因下都会发生。新建就绪:操作系统准备好再接纳一个进程时,把一个进程从新建态转换到就绪态。大多数系统基于现有的进程数或分配给现有进程的虚拟内存数量设置一些
10、限制,以确保不会因为活跃进程的数量过多而导致系统的性能下降。就绪运行:需要选择一个新进程运行时,操作系统选择一个处于就绪态的进程,这是调度器或分派器的工作。进程的选择问题将在第四部分探讨。运行退出:如果当前正在运行的进程表示自己已经完成或取消,则它将被操作系统终止,见表3.2。运行就绪:这类转换最常见的原因是,正在运行的进程到达了“允许不中断执行”的最大时间段;实际上所有多道程序操作系统都实行了这类时间限定。这类转换还有很多其他原因,例如操作系统给不同的进程分配不同的优先级,但这不是在所有的操作系统中都实现了的。假设,进程A 在一个给定的优先级运行,且具有更高优先级的进程B 正处于阻塞态。如果
11、操作系统知道进程B 等待的事件已经发生了,则将B 转换到就绪态,然后因为优先级的原因中断进程A 的执行,将处理器分派给进程B,我们说操作系统抢占了进程A。最后一种情况是,进程自愿释放对处理器的控制,例如一个周期性地进行记账和维护的后台进程。运行阻塞:如果进程请求它必须等待的某些事件,则进入阻塞态。对操作系统的请求通常以系统服务调用的形式发出,也就是说,正在运行的程序请求调用操作系统中一部分代码所发生的过程。例如,进程可能请求操作系统的一个服务,但操作系统无法立即予以服务,它也可能请求了一个无法立即得到的资源,如文件或虚拟内存中的共享区域;或者也可能需要进行某种初始化的工作,如I/O 操作所遇到
12、的情况,并且只有在该初始化动作完成后才能继续执行。当进程互相通信,一个进程等待另一个进程提供输入时,或者等待来自另一个进程的信息时,都可能被阻塞。阻塞就绪:当所等待的事件发生时,处于阻塞态的进程转换到就绪态。就绪退出:为了清楚起见,状态图中没有表示这种转换。在某些系统中,父进程可以在任何时刻终止一个子进程。如果一个父进程终止,与该父进程相关的所有子进程都将被终止。阻塞退出:前面一项提供了注释。eg2:再回到前面的简单例子,图3.7 显示了每个进程在状态间的转换,图3.8a 给出了可能实现的排队规则,有两个队列:就绪队列和阻塞队列。进入系统的每个进程被放置在就绪队列中,当操作系统选择另一个进程运
13、行时,将从就绪队列中选择。对于没有优先级的方案,这可以是一个简单的先进先出队列。当一个正在运行的进程被移出处理器时,它根据情况或者被终止,或者被放置在就绪或阻塞队列中。最后,当一个事件发生时,所有位于阻塞队列中等待这个事件的进程都被转换到就绪队列中。3.2.4 被挂起的进程另一种解决方案是交换,包括把内存中某个进程的一部分或全部移到磁盘中。当内存中没有处于就绪状态的进程时,操作系统就把被阻塞的进程换出到磁盘中的“挂起队列”(suspendqueue),这是暂时保存从内存中被“驱逐”出的进程队列,或者说是被挂起的进程队列。操作系统在此之后取出挂起队列中的另一个进程,或者接受一个新进程的请求,将其
14、纳入内存运行。“交换”(swapping)是一个I/O 操作,因而也可能使问题更加恶化。但是由于磁盘I/O 一般是系统中最快的I/O(相对于磁带或打印机I/O),所以交换通常会提高性能。因此,我们需要重新考虑设计方式。这里有两个独立的概念:进程是否在等待一个事件(阻塞与否)以及进程是否已经被换出内存(挂起与否)。为适应这种22 的组合,需要4 个状态:就绪态:进程在内存中并可以执行。阻塞态:进程在内存中并等待一个事件。阻塞/挂起态:进程在外存中并等待一个事件。就绪/挂起态:进程在外存中,但是只要被载入内存就可以执行。阻塞阻塞/挂起:如果没有就绪进程,则至少一个阻塞进程被换出,为另一个没有阻塞的
15、进程让出空间。如果操作系统确定当前正在运行的进程,或就绪进程为了维护基本的性能要求而需要更多的内存空间,那么,即使有可用的就绪态进程也可能出现这种转换。阻塞/挂起就绪/挂起:如果等待的事件发生了,则处于阻塞/挂起状态的进程可以转换到就绪/挂起状态。注意,这要求操作系统必须能够得到挂起进程的状态信息。就绪/挂起就绪:如果内存中没有就绪态进程,操作系统需要调入一个进程继续执行。此外,当处于就绪/挂起态的进程比处于就绪态的任何进程的优先级都要高时,也可以进行这种转换。这种情况的产生是由于操作系统设计者规定调入高优先级的进程比减少交换量更重要。就绪就绪/挂起:通常,操作系统更倾向于挂起阻塞态进程而不是
16、就绪态进程,因为就绪态进程可以立即执行,而阻塞态进程占用了内存空间但不能执行。但如果释放内存以得到足够空间的唯一方法是挂起一个就绪态进程,那么这种转换也是必需的。并且,如果操作系统确信高优先级的阻塞态进程很快将会就绪,那么它可能选择挂起一个低优先级的就绪态进程,而不是一个高优先级的阻塞态进程。新建就绪/挂起以及新建就绪:当创建一个新进程时,该进程或者加入到就绪队列,或者加入到就绪/挂起队列中。不论哪种情况,操作系统都必须建立一些表以管理进程,并为进程分配地址空间。操作系统可能更倾向于在初期执行这些辅助工作,这使得它可以维护大量的未阻塞的进程。通过这个策略,内存中经常会没有足够的空间分配给新进程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第三
限制150内