还剩10页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
操作系统读书工程报告范文 定义进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动它是操作系统动态执行的根本单元,在传统的操作系统中,进程既是根本的分配单元,也是根本的执行单元 根本介绍多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念 进程的概念第一,进程是一个实体每一个进程都有它自己的地址空间,一般情况下,包括文本区域(textregion)、数据区域(dataregion)和堆栈(stackregion)文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量第二,进程是一个“执行中的程序”程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程 主要特征 动态性进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的 并发性任何进程都可以同其他进程一起并发执行 独立性进程是一个能独立运行的根本单位,同时也是系统分配资源和调度的独立单位; 异步性由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进 结构特征进程由程序、数据和进程控制块三局部组成 状态分类 1)就绪状态(Ready)进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行就绪进程可以按多个优先级来划分队列例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列 2)运行状态Running进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目在没有其他进程可以执行时如所有进程都在阻塞状态,通常会自动执行系统的空闲进程 3)阻塞状态Blocked由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行该事件发生前即使把处理机分配给该进程,也无法运行 进程控制的根本领件 进程的创立
1.引起创立进程的事件 2在多道程序环境中,只有(作为)进程(时)才能在系统中运行因此,为使程序能运行,就必须为它创立进程导致一个进程去创立另一个进程的典型事件,可以有以下四类 1)用户 在分时系统中,用户在终端键入命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中 2)作业调度 在批处理系统中,当作业调度程序按照一定的算法调度到某作业时,便将该作业装入到内存,为它分配必要的资源,并立即为它创立进程,再插入到就绪队列中 3)提供效劳 当运行中的用户程序提出某种请求后,系统将专门创立一个进程来提供用户所需要的效劳,例如,用户程序要求进行文件打印,操作系统将为它创立一个打印进程,这样,不仅可以使打印进程与该用户进程并发执行,而且还便于计算出为完成打印任务所花费的时间 4)应用请求 在上述三种情况中,都是由系统内核为它创立一个新进程,而这一类事件那么是基于应用进程的需求,由它创立一个新的进程,以便使新进程以并发的运行方式完成特定任务 一旦操作系统发现了要求创立新进程的事件后,便调用进程创立原语Creat()按下述步骤创立一个新进程 1)申请空白PCB为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB 2)为新进程分配资源为新进程的程序和数据以及用户栈分配必要的内存空间显然,此时操作系统必须知道新进程所需要的内存大小 3)初始化进程控制块PCB的初始化包括
①初始化标识信息将系统分配的标识符和父进程标识符,填入新的PCB中;
②初始化处理机状态信息使程序计数器指向程序的入口地址,使栈指针指向栈顶;
③初始化处理机控制信息将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求 4)将新进程插入就绪队列如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中 进程终止
1.引起进程终止的事件 1)正常结束 在任何计算机系统中,都应该有一个表示进程已经运行完成的指示例如,在批处理系统中,通常在程序的最后安排一条Hold指令或终止的系统调用当程序运行到Hold指令时,将产生一个中断,去通知OS本进程已经完成 2)异常结束 在进程运行期间,由于出现某些错误和故障而迫使进程终止这类异常事件很多,常见的有越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术运算错,I/O故障 3)外界干预 外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行这些干预有操作员或操作系统干预,父进程请求,父进程终止
2.进程的终止过程 如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按下述过程去终止指定的进程 1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态 2)假设被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真用于指示该进程被终止后应重新进行调度 3)假设该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程 4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统 5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息 进程的阻塞和唤醒
1.引起进程阻塞和唤醒的事件 1)请求系统效劳 当正在执行的进程请求操作系统提供效劳时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待,一旦要求得到满足后,进程被唤醒 2)启动某种操作 当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,那么必须先使该进程阻塞,以等待该操作完成,该操作完成后,将该进程唤醒 3)新数据尚未到达 对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据才能运行以对数据进行处理,那么是要其所需数据尚未到达,该进程只有(等待)阻塞,等到数据到达后,该进程被唤醒 4)无新工作可做 系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来,新任务到达后,该进程被唤醒
2.进程阻塞过程 正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞可见,进程的阻塞是进程自身的一种主动行为进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列如果系统中设置了因不同事件而阻塞的多个阻塞队列,那么应将本进程插入到具有相同事件的阻塞(等待)队列最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保存被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境 当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,那么由有关进程(比方,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒唤醒原语执行的过程是首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中 在许多操作系统中,传统的进程概念被分为两局部一局部负责管理资源所有权;另一局部负责指令流的执行一个单独的进程可包含多个线程使用多线程的组织方法对程序的结构化和性能方面都有很大的帮助SMP是一个拥有多处理器的计算机系统,其中的每一个处理器都可以执行所有应用程序和系统代码SMP的组织方法增强了系统的性能和可靠性SMP通常和多线程机制一起使用,即使没有多线程机制也能很大幅度的提高系统性能微内核是操作系统为了减少运行在内核模式的代码量的一种设计方式,并且分析了这种方法的优点 相交进程之间的关系主要有两种同步与互斥所谓互斥是指散步在不同进程之间的假设干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行 在操作系统中调度实质上是一种资源的分配,因而调度算法是指根据系统的资源分配策略所规定的资源分配算法对于不同的操作系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中,为了照顾为数众多的短作业,应采用短作业优先的调度算法;又如在分时系统中,为了保证系统具有合理的相应时间,应采用轮转法进行调度目前存在的多种调度算法中,有的使用于作业调度,也有的适用于进程调度;但也有些算法既可适用于作业调度又适用于进程调度 先来先效劳(FCFSFirstComeFirstServe)是最简单的调度算法,按先后顺序进行调度
1.1FCFS算法 按照作业提交或进程变为就绪状态的先后次序,分派CPU;当前作业或进程占用CPU,直到执行完或阻塞,才出让CPU(非抢占方式)在作业或进程唤醒后(如I/O完成),并不立即恢复执行,通常等到当前作业或进程出让CPU最简单的算法
1.2FCFS的特点 比拟有利于长作业,而不利于短作业有利于CPU繁忙的作业,而不利于I/O繁忙的作业 短作业优先(SJFShortestJobFirst)又称为“短进程优先”SPNShortestProcessNext;这是对FCFS算法的改良,其目标是减少平均周转时间 对预计执行时间短的作业(进程)优先分派处理机通常后来的短作业不抢先正在执行的作业
2.1SJF的特点 1优点 比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间; 提高系统的吞吐量; 2缺点 对长作业非常不利,可能长时间得不到执行;未能依据作业的紧迫程度来划分执行的优先级; 难以准确估计作业(进程)的执行时间,从而影响调度性能
2.2SJF的变型 “最短剩余时间优先”SRTShortestRemainingTime(允许比当前进程剩余时间更短的进程来抢占) “最高响应比优先”HRRNHighestResponseRatioNext(响应比R=等待时间+要求执行时间/要求执行时间,是FCFS和SJF的折衷) 优先级算法(PriorityScheduling)是多级队列算法的改良,平衡各进程对响应时间的要求适用于作业调度和进程调度,可分成抢先式和非抢先式
3.1静态优先级 作业调度中的静态优先级大多按以下原那么确定 由用户自己根据作业的紧急程度输入一个适当的优先级由系统或操作员根据作业类型指定优先级系统根据作业要求资源情况确定优先级进程的静态优先级确实定原那么按进程的类型给予不同的优先级 将作业的情态优先级作为它所属进程的优先级
3.2动态优先级 进程的动态优先级一般根据以下原那么确定根据进程占用有CPU时间的长短来决定根据就绪进程等待CPU的时间长短来决定 最高响应比优先法HRN,HighestResponseratioNext是对FCFS方式和SJF方式的一种综合平衡FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短因此,这两种调度算法在某些极端情况下会带来某些不便HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行 响应比R定义如下R=W+T/T=1+W/T 其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间每当要进行作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行这样,即使是长作业,随着它等待时间的增加,W/T也就随着增加,也就有时机获得调度执行这种算法是介于FCFS和SJF之间的一种折中算法由于长作业也有时机投入运行,在同一时间内处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF法时的吞吐量另外,由于每次调度前要计算响应比,系统开销也要相应增加 轮转法RoundRobin是让每个进程在就绪队列中的等待时间与享受效劳的时间成正比例 将系统中所有的就绪进程按照FCFS原那么,排成一个队列每次调度时将CPU分派给队首进程,让其执行一个时间片时间片的长度从几个ms到几百ms在一个时间片结束时,发生时钟中断调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前的队首进程进程可以未使用完一个时间片,就出让CPU(如阻塞) 长度确实定 时间片长度变化的影响过长-退化为FCFS算法,进程在一个时间片内都执行完,响应时间长过短-用户的一次请求需要多个时间片才能处理完,上下文切换次数增加,响应时间长对响应时间的要求T响应时间=N进程数目*q时间片 就绪进程的数目数目越多,时间片越小 系统的处理能力应当使用户输入通常在一个时间片内能处理完,否那么使响应时间,平均周转时间和平均带权周转时间延长
6.1多级反应队列的原理
1、设有N个队列(Q1Q
2....QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业进程的优先级也是不一样的一般来说,优先级PriorityQ1PriorityQ
2...PriorityQN怎么讲,位于Q1中的任何一个作业进程都要比Q2中的任何一个作业进程相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列
2、对于某个特定的队列来说,里面是遵循时间片轮转法也就是说,位于队列Q2中有N个作业,它们的运行时间是通过Q2这个队列所设定的时间片来确定的(为了便于理解,我们也可以认为特定队列中的作业的优先级是按照FCFS来调度的)
3、各个队列的时间片是一样的吗?不一样,这就是该算法设计的精妙之处各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短同时,为了便于那些超大作业的完成,最后一个队列QN优先级最低的队列的时间片一般很大不需要考虑这个问题
6.2多级反应队列调度算法描述
1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待
2、首先调度优先级高的队列中的进程假设高优先级中队列中已没有调度的进程,那么调度次优先级队列中的进程例如Q1Q2Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1Q2都为空时才会去调度Q3
3、对于同一个队列中的各个进程,按照时间片轮转法调度比方Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后假设还没有完成,那么进入Q2队列等待,假设Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成
4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式) linux内核的三种调度方法 1,SCHEDOTHER分时调度策略, 2,SCHEDFIFO实时调度策略,先到先效劳3,SCHEDRR实时调度策略,时间片轮转 实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程那么通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度 SHCEDRR和SCHEDFIFO的不同 当采用SHCEDRR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾放在队列尾保证了所有具有相同优先级的RR任务的调度公平 SCHEDFIFO一旦占用cpu那么一直运行一直运行直到有更高优先级任务到达或自己放弃 如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务而RR可以让每个任务都执行一段时间 相同点 RR和FIFO都只用于实时任务模板内容仅供参考 。