操作系统调度算法(上)

来源:互联网 发布:微博来自mac客户端 编辑:程序博客网 时间:2024/05/01 07:06


操作系统的分类:(按环境分):

批处理操作系统:

     又分为:

         1.单通道批处理系统:如dos用户一次可以提交多个作业,但系统一次只处理

        一个作业,处理完一个作业后再调入下一个作业进行处理。这些调度、切换系

        统自动完成。不需人工干预

          2.多通道批处理系统:同一个批次的作业调入内存,存放在内存的不同部分,

         当一个作业由于等待输入输出操作而让处理机出现空闲,系统自动进行切换,

         处理另一个作业

    特点:

     不需人工干预,进行批量处理。由于作业是以批量的方式进行处理的,在整个处

     理过程中,用户不能进行干预。

分时操作系统( LinuxUNIX):

          一个作业只能在一个时间片的时间内使用CPU,时间一到,系统将剥夺作业的  

       CPU使用权,CPU分配给其他作业使用。

       特点:多路性(多个用户同时执行)、独占性(独立操作互不干扰)、及时性、

            交互性(用户可以通过键盘输入命令请求系统服务和控制作业的)    

实时操作系统Windows):

        保证在一定时间限制内完成特定功能的操作系统,指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统

网络操作系统:

              待续

分布式操作系统:

                               待续

 

 

作业

  最早出现在批处理系统中,指的是用户向系统提交的一项工

 作的基本单位,是 户在一次事务处理或计算过程中要求计

 算机所做的工作的和

任务:是抽象的一般性的术语,计算机件完成的一个活动。一个任务既可以是

        一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一

         目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为

          一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实

          现。

进程:

   进程=  程序  +  不同的数据集 自己理解就是,例如输入程序,编译到执行,生成的可执行文件并未变化,但每次输入不同的数据,则输出数据不同,动态变化的。

 

 

任务和进程区别:

      相对而言,任务是由> =  1 的进程构成。

        当单任务单进程,此时任务和进程一样。

任务和作业的区别:

          任务是一次性的,执行了就不能再用了,就像构造函数,  

          只会执行一次作业就想一个普通函数,可以反复调用

 

计算机的调度:

     计算机系统主要做:分配资源,任务调度,进程控制

 

通常要经历:

1 .高级调度 :又称作业调度,主要在批处理系统

  1. 中级调度:  主要发生虚拟内存时,此时有个swap算法(页面  

                     替换算法)

    3 .低级调度:  所谓的  进程调度算法

     

     

     

    也就是说作业 >= 1个进程组成。在批道处理系统,更侧重任务,因为没有人机交互,计算机完成一件工作。所以一般描述为   ------作业调度

     

     

    进程调度:

     

    在分时系统中,为解决批处理系统没有的人机互动,从运行到结束,即使中间有错误,也不能停止,所以引进分时系统,让每个进程都有机会得到cpu,轮询访问,所以更强调的不是任务结果,而是计算机和进程之间的交互,所以再分时系统中,进程的调度

作业调度和进程调度的区别:

一个作业从进入系统到最后完成,一般至少要经历级调度:作业调度、中级调度、进程调度。

作业调度是宏观上的高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。

进程调度是微观上的低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。一般的操作系统都必须有进程调度。

可见在多道系统中,作业调度与进程调度是相互配合来实现多道作业的并行执行的。两者的关系可用下图表示。

 

 

 

 

一、常见的批处理作业调度算法

1.先来先服务调度算法(FCFS:就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。

2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。 

3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。

4. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

5.均衡调度算法,即多级队列调度算法

基本概念:

   作业周转时间(Ti)=完成时间(Tei)-提交时间(Tsi)

   作业平均周转时间(T)=周转时间/作业个数

   作业带权周转时间(Wi)=周转时间/运行时间

   响应比=(等待时间+运行时间)/运行时间

二、进程调度算法

1.先进先出算法(FIFO):按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行。

 

2. 时间片轮转算法(RR):分时系统的一种调度算法。轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。

3. 最高优先级算法(HPF):进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占式最高优先级算法。

 

当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种。

1)非抢占式优先权算法

在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法主要用于批处理系统中;也可用于某些对实时性要求不严的实时系统中。

2)抢占式优先权调度算法

在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。因此,在采用这种调度算法时,是每当系统中出现一个新的就绪进程i时,就将其优先权Pi与正在执行的进程j的优先权Pj进行比较。如果Pi≤Pj,原进程Pj便继续执行;但如果是Pi>Pj,则立即停止Pj的执行,做进程切换,使i进程投入执行。显然,这种抢占式的优先权调度算法能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统中

 

4. 多级队列反馈法:几种调度算法的结合形式多级队列方式。

三、空闲分区分配算法swap算法

1. 首先适应算法:当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法简单,可以快速做出分配决定。

2. 最佳适应算法:当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为“碎片”。

3. 最坏适应算法:当接到内存申请时,查找分区说明表,找到能满足申请要求的最大的空闲区。该算法的优点是避免形成碎片,而缺点是分割了大的空闲区后,在遇到较大的程序申请内存时,无法满足的可能性较大。

四、虚拟页式存储管理中的页面置换算法

1.理想页面置换算法(OPT):这是一种理想的算法,在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

2.先进先出页面置换算法(FIFO):选择最先进入内存的页面予以淘汰。

3. 最近最久未使用算法(LRU):选择在最近一段时间内最久没有使用过的页,把它淘汰。

4.最少使用算法(LFU):选择到当前时间为止被访问次数最少的页转换。

五、磁盘调度

1.先来先服务(FCFS):是按请求访问者的先后次序启动磁盘驱动器,而不考虑它们要访问的物理位置

2.最短寻道时间优先(SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题

3.扫描算法(SCAN)或电梯调度算法:总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

4.循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的哪个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求

 

 

 

 

所以小结:

   对于这部分的题,不要太抠字眼,因为他们之间可以相互转化的,因为操作系统是由初版本进行改进,升级的,现在的操作系统,但共同点都是 多用户,提高系统并发,提高吞吐量,已经到达多线程了,不再提任务了,但说任务也对,可以说任务由多个进程构成,进程里有多个线程。

     所以有时的任务调度和进程调度是一样的意思,那就是看系统了,

 

 

   在做题shi

 

  1. 先来先处理

    1  2   3

    则处理123 等待,1 2 运行,3等待

  2. 优先级调度

    Nice值来确定优先级,越小越高,例如Linux主服务,0号进程,不能  用命令kill -9  0

     谁高谁运行,其他等待。

  3. 时间片轮转法

算法描述:用于分时系统中的进程调度。每次调度时,总是选择就绪队列的队首进程,让其在CPU上运行一个系统预先设置好的时间片。一个时间片内没有完成运行的进程,返回到绪队列末尾重新排队,等待下一次调度。

就是一个循环队列

很好的题

进程ABCD需要运行的时间分别为20ms10 ms15 ms5 ms,均在0时刻到达。到达的先后次序为ABCD。如果时间片分别为1 ms5ms,计算各个进程的带权周转时间和平均带权周转时间。

 

分析在掌握了时间片轮转法概念的基础上,我们可以用一个执行时间图来形象地表示作进程的执行情况,帮助我们理解此题。具体如下:

根据执行时间图就可以计算各个进程的带权周转时间和平均带权周转时间了。这里要注意的是,要记住带权周转时间和平均带权周转时间的算术公式:

带权周转时间W,即:

 W = T/R

其中T为周转时间,R为实际运行时间。

平均带权周转时间为:

 

 

 

 

 

到达时间

运行时间

开始时间

完成时间

周转时间

带权

周转时间

时间片=1

A

0

20

0

50

50

2.5

B

0

10

1

34

34

3.4

C

0

15

2

45

45

3.0

D

0

5

3

20

20

4.0

平均周转时间=37.25     平均带权周转时间=3.225

时间片=5

A

0

20

0

50

50

2.5

B

0

10

5

30

30

3.0

C

0

15

10

45

45

3.0

D

0

5

15

20

20

4.0

平均周转时间=36.25     平均带权周转时间=3.125

 

 

 

0 0
原创粉丝点击