您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 《操作系统》2进程与线程课件
第2章进程与线程本章目录2.1进程的概念2.1.1多道程序设计环境下的程序特点2.1.2进程的定义2.2进程的管理2.2.1进程控制块2.2.2进程控制块队列2.4.3Linux进程的生存过程2.2.3进程控制的系统调用命令2.1.3进程的状态及状态变迁2.3线程2.3.1线程的概念2.3.2线程的实现2.3.3线程与进程的关系2.4Linux的进程2.4.1Linux进程2.4.2Linux的几种链接信息2.1进程的概念2.1.1多道程序设计环境下的程序特点.单道程序设计环境下的程序特点1.资源的独占性程序A程序B程序C时间4234245330469141820232630图例:打印机输出CPU执行..执行的顺序性结果的再现性多道程序设计环境下的程序特点2.程序A时间0469121517131822程序B程序C.执行的并发性:宏观上,在内存的多个程序都按自己程序规定的操作步骤向前推进;微观上,CPU在任何时刻只执行一个程序,它们轮流占用CPU,交替地执行着。.相互的制约性:内存里的多个程序共享系统中的资源,相互间必然有各种制约。一种是“间接制约关系”,另一种是“直接制约关系”。程序P1调用echo()函数,getchar()接收到从键盘输入的字符x,在将其存于变量chin后被中断;程序P1从断点恢复执行。此时由于P2调用了echo(),chin里原先的x被y所覆盖。于是,在屏幕上显示的是y,而不是x。程序P1调用echo()函数,getchar()接收到从键盘输入的字符x,然后在屏幕上显示出字符x;.状态的多变性:诸多程序在运行过程中有着各种制约关系,致使内存中每一个程序的状态总在不断的变化之中:时而获得CPU处于运行状态;时而由于输入/输出或申请某种资源未得到满足而只好挂起来等待。它们走走停停,停停走走,交替式地向前推进,直至终点。例2-1:在多道程序设计环境下,“结果再现性”被打破的简单例子voidecho(){chin=getchar();chout=chin;putchar(chout);}执行顺序1:程序P2调用echo()函数,getchar()接收到从键盘输入的字符y,然后在屏幕上显示出字符y。(1)(2)..执行顺序2:(1)(2)(3)程序P2获得CPU使用权,调用echo()函数,从头做到尾,屏幕上显示字符y;返回目录.2.1.2进程的定义1.进程的定义.进程是程序的一次运行活动;进程的运行活动是建立在某个数据集合之上的;进程要在获得资源的基础上从事自己的运行活动。所谓“进程”是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。可从三个方面来描述进程:(1)(2)(3)例2-2:驼峰溜放控制过程中的进程驼峰到达场编组场溜放中的一勾车雷达测速、测长道岔(轨道电路)一列新货车一列解体货车缓行器12345678股道号溜放中的一勾车扳道岔程序..缓行器控制程序.雷达测速程序.雷达测长程序.巡回检测程序2.进程与程序的关系进程是一个动态的概念,强调的是程序的一次“执行”过程;程序则是一组有序指令的集合,在多道程序设计环境下,它不涉及“执行”,是一个静态的概念。..不同进程可执行同一个程序。由进程的定义可知,区分进程的条件一是所执行的程序,二是数据集合。即使多个进程执行相同的一个程序,只要它们运行在不同的数据集合上,它们就是不同的进程。.每个进程都有自己的生命期。进程的本质是程序的一次执行过程,当系统要完成某项工作时,它就“创建”一个进程,以便执行事先编写好的、完成该工作的那段程序。程序执行完毕、完成预定的任务后,系统就“撤消”这个进程,收回它所占用的资源。一个进程创建后,系统就感知到它的存在;一个进程撤消后,系统就无法再感知到它。于是从创建到撤消,这个时间段就是一个进程的“生命期”。.进程之间具有并发性。在一个系统中,同时会存在多个进程,与它们对应的多个程序同时在系统中运行,轮流占用CPU和各种资源。这正是多道程序设计的初衷,说明这些进程在系统中并发执行着。.进程间会相互制约。由于进程是系统中资源分配和运行调度的单位,因此在对资源共享和竞争中,必然会相互制约,影响了各自向前推进的速度。通常,系统进程运行在核心态,用户进程运行在用户态。不过,在微内核模式下,只有那些执行基本功能程序的进程,运行在核心态,那些执行非基本程序的进程,则以各种服务的形式运行在用户态。系统进程与用户进程都要使用系统中的各种资源,它们都是资源分配与运行调度的独立单位,但系统进程的使用级别,应该高于用户进程。也就是说,在双方出现对资源的竞争时,系统进程有优先获得资源、优先得到运行的权利。只有这样,才能保证计算机系统高效、有序的工作。系统进程直接管理软、硬件资源的有关活动;而用户进程则不得插手资源管理,在需要使用资源时,必须向系统提出申请,由系统统一调度与分配。系统进程间的相互关系由操作系统负责协调,以利于增加系统的并行性,提高资源的整体利用率;用户进程间的相互关系由用户自己(在程序中)安排。不过,操作系统会向用户提供一定的协调手段(以系统调用命令的形式)。3.系统进程与用户进程.在多道程序设计系统中,既有操作系统程序,又有用户程序,因此整个系统中存在着两类进程:一类是系统进程,一类是用户进程。.操作系统中用于管理系统资源的那些可以并发执行的程序,构成了一个个系统进程,它们提供系统的服务,分配系统的资源;而可以并发执行的用户程序段,形成一个个用户进程,它们是操作系统的服务对象,是系统资源的实际享用者。.系统进程与用户进程的主要区别:(1)(2)(3)(4)返回目录终止:进程或正常结束,或因某种原因被强制结束。这时,系统正在为其进行善后处理。阻塞:进程正在等待某事件(如I/O完成)的发生。在事件到来之前,即使把CPU分配给这个进程,它也无法运行。阻塞状态有时也被称为等待状态。运行:进程获得CPU正在被执行中。若系统只有一个CPU,那么任何时候系统中最多只有一个进程处于运行状态。就绪:进程已具备运行的条件,只要有机会获得CPU,它就可以投入运行。创建:进程正在初创时期,操作系统还没把它列入可执行的进程行列。2.1.3进程的状态及状态变迁1.进程的基本状态和状态变迁..就绪提交运行阻塞终止调度撤销超时事件发生三种最基本的状态创建进程的五种状态(1)(2)(3)(4)(5)进程状态的变迁进程从一个状态改变成另一个状态,称为进程状态的“变迁”。箭头上的文字,是引起状态变迁的原因。并不是所有的进程状态之间都可发生变迁。.可能的变迁为:创建→就绪,就绪→运行,运行→就绪,运行→阻塞,阻塞→就绪,运行→终止就绪/挂起:进程在辅存。只要被激活,进程就可以调入内存,如果获得CPU就可以投入运行。2.对进程状态更细致的划分就绪/挂起就绪激活运行阻塞终止调度撤销超时事件发生挂起阻塞/挂起激活挂起事件发生创建提交挂起..若内存中现有的进程都在等待I/O的完成,CPU只能空闲运转。这无疑是对系统资源的一种浪费。.使用磁盘与内存间的交换技术,可达到提高CPU利用率的目的。新增两个状态(1)(2)阻塞/挂起:进程在辅存等待事件的发生。只要被激活,进程就可以调入到内存里去等待事件的发生。.处于这两种状态的进程,表示它们是在辅存而不是内存。只有通过“激活”,才可以使这些进程的状态变迁为“就绪”或“阻塞”,从而进入内存。.这时,比较重要的变迁是:阻塞→阻塞/挂起,阻塞/挂起→就绪/挂起,就绪/挂起→就绪,就绪→就绪/挂起,创建→就绪,创建→就绪/挂起,阻塞/挂起→阻塞,运行→就绪/挂起。返回目录进程控制块里包括四种基本信息:标识信息、现场保护区信息、调度信息以及管理信息。程序代码及与代码相关联的数据集合,是组成一个进程的实体。但它们都是静态文本,无法反映进程的各种动态特征。2.2进程的管理2.2.1进程控制块...1.进程控制块为便于管理和控制进程的执行,为随时刻画进程的动态特性,为反映进程间的相互关系,操作系统用一个与进程有关的数据结构来完成这样的任务。这个数据结构被称为“进程控制块(PCB)”,它由操作系统创建和管理。标识信息现场保护区信息调度信息管理信息进程标识符(进程名)进程标识数(PID)家族关系(父进程)家族关系(子孙进程)通用寄存器指令计算器程序状态字(PSW)用户栈指针进程状态进程优先数(级/权)等待原因队列指针程序存放位置资源使用历史打开的文件数据存放位置由于进程控制块PCB里包含着一个进程所需要的所有信息,因此它是操作系统中最重要的一种数据结构。进程的PCB是系统感知一个进程实际存在的唯一实体。.2.进程的三个组成部分..操作系统中进程由三个部分组成,称为“进程映像”。(1)(2)(3)程序:进程将要执行的程序;数据:用户空间中的可修改部分,如数据、堆栈、可修改程序;进程控制块PCB:记录操作系统管理、控制进程所需要的数据信息。进程映像的表示PCBPCBPCB1PCB2程序程序程序数据集合数据集合数据集合1数据集合2(a)(b)(c)3.进程间的切换进程P0进程P1操作系统中断或系统调用保护现场到PCB0从PCB1现场保护区获取现场信息中断或系统调用保护现场到PCB1从PCB0现场保护区获取现场信息执行执行执行被打断的断点x从断点x恢复执行被打断的断点y返回目录PCB中可以有多个队列指针,以反映进程间的不同关系,比如用另一个指针反映出进程间的家族关系。还可以有就绪/挂起队列、阻塞/挂起队列等;队列最后一个PCB的“队列指针”里,放队列结束标志,如“-1”;操作系统要为每个队列设置一个头指针,通过它及队列中各PCB里的队列指针,可以得到该队列里的所有进程的PCB;2.2.2进程控制块队列.操作系统是通过PCB来管理系统中的进程的。最常用的办法是根据进程所处状态的不同,通过PCB中的链接指针,形成各种管理队列。.运行队列头指针就绪队列头指针PCBPCBPCBPCBPCB-1阻塞队列1头指针PCBPCB-1阻塞队列2头指针PCBPCBPCBPCB-1PCB队列指针(a)带有队列指针的PCB(b)由PCB组成的各种队列几点说明(1)(2)(3)(4)返回目录按系统所采用的调度算法,将其PCB排入就绪队列或就绪/挂起队列。调用创建进程原语后,系统中出现一个新的进程,就会感知到这个进程的存在。一个进程创建(或“派生”)另一个进程,前者称为父进程,后者称为子进程。2.2.3进程控制的系统调用命令在执行期间不能被打断、不能被分割的程序段,在操作系统里称作“原语”、“原子操作”或“不可分割的操作”。...有关进程控制的系统调用命令都是以原语的形式出现的。1.创建进程原语屏蔽中断申请一个PCB分配一个标识填写PCB将进程置为就绪或就绪/挂起状态,到相应队列排队开中断不能被分割的整体.创建进程原语程序主要应该完成的工作(1)为新进程申请一个PCB;(2)为新进程分配一个唯一的标识;(3)根据创建者提供的信息,填写进程控制块PCB里的各项内容;(4).创建进程原语的图中,“屏蔽中断”及“开中断”两个操作,是为了保证整个执行流程不被分割而设置的。也就是说,这四项工作必须作为一个整体一次执行完毕,中间不能被别的操作打断。这是原语的要求。2.撤消进程原语.调用撤消进程原语后,一个原来在系统里存在的进程就消失了,系统再也不会感知到它的存在。.撤消进程原语应该完成的工作(1)(2)根据进程标识,找到相应的PCB,若该进程正在运行,则立即终止运行;(3)释放该进程使用的所有资源(如程序、数据所占用的存储空间等);(4)若有子孙进程,终止它们,释放资源;归还所占用的PCB空间。3.阻塞进程原语.在生命期里,进程走走停停。“停”的原因,就是为等待某个事件的发生而被阻塞。调用阻塞原语后,一个原来处于运行的进程变为阻塞状态,操作系统将会重新对CPU进行分配。.阻塞进程原语应该完成的工作(1)(2)停止进程的运行,将CPU的运行现场保护到该进程PCB的现场保护区;(3)把进程的状态由运行修改为阻塞,并到相关的阻塞队列里排队;转向操作系统的进程调度程序
本文标题:《操作系统》2进程与线程课件
链接地址:https://www.777doc.com/doc-3770554 .html