进程,进程的调度,进程的调度算法(详解)ฅ( ̳• · • ̳ฅ)
一.先来先服务(FCFS,First ComeFirstServe)
二.短作业优先(SJF,Shortest JobFirst):
三.高响应比优先(HRRN, Highest Response Ratio Next):
😇进程的概念:
程序:程序是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合
进程(Process):进程是动态的,是程序的一次执行过程。同一个程序多次执行会对应多个进程。
进程与程序的区别与联系:
区别:
①.进程是动态的,程序是静态的
②.进程具有独立性,能并发执行;程序不能并发执行
③.二者无一一对应关系
④.进程异步运行,会相互制约;程序不具备此特性
⑤.组成不同,程序是一个包含了所有执行和数据的静态实体。本身除了占有磁盘的存储空间外,并不占有系统如CPU,内存等运行资源。进程是由程序段,数据段和PCB构成,会占用CPU,内存等运行资源。
联系:进程不能脱离具体程序而虚设,程序规定了相应的进程所需要完成的动作。
😚进程的组成:
在上面我们提到,同一个程序多次执行会对应多个进程,那么操作系统是这些进程的管理者,它要如何区分各个进程呢?
答案是:当进程被创建时,操作系统会对该进程分配一个唯一的,不重复的“身份表示”-----PID(Process ID,进程ID)除此之外,操作系统还要记录:
操作系统要记录PID,进程所属的用户ID(UID),这是基本的进程描述信息,可以让操作系统区分各个进程。
还要记录给进程分配了哪些资源(如:分配了多少内存,正在使用哪些I/O设备,正在使用哪些文件),可用于实现操作系统对资源的管理
还要记录进程的运行结果(如:CPU使用时间,磁盘使用情况,网络流量使用情况等),可用于操作系统对进程的控制,调度
这些信息都被保存在一个数据结构PCB(Process Control Block)中,即进程控制块,操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中
PCB时进程存在的唯一表示,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB,PCB的组成:
程序段,数据段,PCB三部分组成了进程的实体(进程映像)。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质上就是创建进程实体中的PCB,而撤销进程,实质上就是撤销进程实体中的PCB。
引入进程实体的概念之后,可以把进程定义为:
进程是进程实体运行的过程,是系统进行资源分配和调度的一个独立单位
🥰进程的调度:
在了解进程调度的概念前,我们先来看看处理机与CPU的概念与区别:
处理机概念:处理机是计算机系统中存储程序和数据,并按照程序中规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(CPU),主存储器,输入-输出接口。处理器加外围设备就构成完整的计算机系统。
CPU概念:中央处理器(CPU,Central processing Unit) 是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(Control Unit)。它的主要功能是解释计算机指令以及处理计算机软件中的数据.
二者的区别:
1.指代不同:
处理机:是计算机系统中存储程序和数据,并按照程序规定的步骤执行的指令的部件。
CPU处理器:作为计算机系统的运算和控制核心,是信息处理,程序运行的最终执行单位。
2.构成不同:
处理机:包括中央处理器,主存储器,输入-输出接口,加外围设备就构成了完整的计算机系统
CPU处理器:主要包括两个部分,即控制器,运算器,其中还包含高速缓冲存储器以及实现它们之间联系的数据,控制的总线
一.进程调度的概念:
在多道程序系统中,进程的数量往往多于处理机的个数,因此进程争用处理机的情况在所难免。处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平,高效)选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
二.进程调度的方式:
非剥夺调度:非剥夺调度方式,又称非抢占方式。即,只允许进程主动放弃处理机。在运行过程中即便有更紧迫 的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。特点:实现简单,系统开销小但是无法及时处 理紧急任务,适合于早期的批处理系统
剥夺调度:剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进 程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。特点:可以优先处理更紧急的进程,也可实现让各 进程按时间片轮流执行的功能(通过时钟中 断)。适合于分时操作系统、实时操作系统
三.进程调度的时机:
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机
🤪进程的调度算法:
一.先来先服务(FCFS,First ComeFirstServe)
FCFS是一种最简单的调度算法,它既可以用于作业的调度,又可以用于进程调度。在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分噢诶给它,使之投入运行,直到完成或尹某种原因而阻塞时才释放处理机。
FCFS属于不可剥夺(抢占)算法。从表面上看,它对所有作业都是公平的,但是如果有一个长作业先到达系统,就会使后面许多短作业等待很长时间,因此这种方法肯定不能作为分时系统和实时系统的调度方法,但是它常被结合在其他调度策略使用。比如在使用优先级作为调度策略的系统中,往往对多个具有相同优先级的进程按FCFS原则处理。
二.短作业优先(SJF,Shortest JobFirst):
短作业(进程)优先调度算法是指对短作业(进程)优先调度算法。短作业优先调度算法从后备队列中选择一个或若干估计运行时间最短的作业,将它们调入内存运行;短进程优先(SPF)调度算法是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即指向,直到完成或发生某时间而阻塞时,才释放处理机。
但是这种算法有着不容忽视的缺点:
①该算法对长作业不利,SJF中长作业的周转时间会增加。更糟的是,若一旦有长作业进入系统的后备队列,由于调度程序总是优先调度那些短作业(即使是后来的短作业也会被优先安排给处理机),导致长作业长期不被调度,饿死在后备队列中。
②完全没有考虑作业的紧迫程度,因而不能保证紧迫的作业会被及时处理。
③由于作业的长短只是根据用户所提供的预估的执行时间而定的,而用户又可能会有意无意地缩短其作业的估计运行时间,使得算法不一定能真正做到短作业优先调度。
三.高响应比优先(HRRN, Highest Response Ratio Next):
主要用于作业调度,是对FCFS调度算法和SJF调度算法的一种综合平衡,同时考虑了每个作业的等待时间和估计的运行时间。在每次进行作业调度时,先计算后备队列中每个作业的响应比,从中选出响应比最高的作业投入运行。
响应比的变化规律可描述为:
根据公式可知:
①作业的等待时间相同时,要求服务时间越大,响应比越高,有利于短作业。
②要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高,因而它实现的是先来先服务。
③对于长作业,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比便可升到很高,从而可以获得处理机,不会饿死。
四.时间片轮转算法:
时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中的第一个进程执行,即先来先服务的原则,但是仅能运行一个时间片。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被抢占)处理机给下一个就绪的进程,而被抢占的进程返回到就绪队列的末尾重新排队,等候再次运行。
在时间片轮转的调度算法中,时间片的大小对系统性能有很大影响。如果时间片足够大,以至于所以进程都能在一个事件内执行完毕,则时间片轮转调度算法就退化成FCFS算法。如果时间片很小,则处理机将在进程间过于频繁地切换,使得处理机开销增大,而真正用于运行用户进程的时间将减少。因此,时间片的选择要适当,可以根据系统响应时间、就绪队列中的进程数目和系统的处理能力等决定。
五.优先级调度算法:
又称优先权调度算法,它既可以用于作业调度,又可用于进程调度。该算法的优先级用于描述作业运行的紧迫程度。
在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最该的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,并分配处理机,运行。
根据新的更高的优先级进程能否抢占正在执行的进程,可将该调度算法分为如下两种:
①非剥夺(抢占)式优先级调度算法:当一个进程正在处理机上运行时,即使有某个更在重要或者紧迫的进程进入就绪队列,仍然让正在运行的进程继续运行,直到由于自身的原因而主动让出处理机时(任务完成或等待),才把处理机分配给更重要或紧迫的进程。
②剥夺式优先级调度算法:当一个进程正在处理机上运行,若有某个更为重要或紧迫的进程进入就绪队列,则立即暂停正在运行的进程,将处理机分配给更重要或紧迫的进程。
而根据进程创建后其优先级是否可以改变,可以将进程优先级分为一下两种:
①静态优先级:优先级是在创建进程时确定的,并且进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。
②动态优先级:在进程运行过程中,根据进程情况的变化动态调整优先级。动态调整优先级的主要依据有进程占有CPU的时间的长短、就绪进程等待CPU时间的长短。
六.多级反馈队列调度算法:
参考资料:
https://www.bilibili.com/video/av70156862?p=7
结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!
Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!