进程调度 订阅
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。 展开全文
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
信息
基本属性
多态性
领    域
操作系统
处    理
高级
中文名
进程调度
基本状态
等待态、运行态、就绪态
进程调度基本属性
1.多态性 从诞生、运行,直至消灭。 2.多个不同的进程可以包括相同的程序3.三种基本状态 它们之间可进行转换4.并发性并发执行的进程轮流占用处理器
收起全文
精华内容
下载资源
问答
  • 进程调度

    千次阅读 2019-07-03 14:43:54
    进程调度 CPU调度是操作系统的基本功能。每当CPU空闲的时候,操作系统就会从就绪队列中选择一个程序来执行。进程选择由短期调度程序执行。 CPU调度决策一般发生在如下四种情形。 当一个进程从运行状态切换到等待...

    进程调度

    CPU调度是操作系统的基本功能。每当CPU空闲的时候,操作系统就会从就绪队列中选择一个程序来执行。进程选择由短期调度程序执行。

    CPU调度决策一般发生在如下四种情形。

    1. 当一个进程从运行状态切换到等待状态。
    2. 当一个进程终止。
    3. 当一个进程从运行状态切换到就绪状态。
    4. 当一个进程从等待状态切换到就绪状态。

    1,2两种情形下,操作系统必须选择一个新的进程去执行。当调度只出现1,2两种情形的时候,调度方案是非抢占式的。1是进程需要等待某种事件的发生(例如,等待打印机,等待子进程),主动让出CPU。2是进程终止了,它的所有资源都被操作系统回收,CPU处于空闲状态。也是主动让出了CPU。所以这两种情形下的调度其实是等待进程自动让出CPU的。采用非抢占式调度,一个进程一旦拥有了CPU,那么它会一直使用CPU直到它主动让出CPU为止,主动让出就是1,2两种情形。

    抢占式调度是进程让出CPU不是主动的,自愿的。上面3,4就是。例如一个中断来了,进程就需要从运行状态切换到就绪状态。执行中断程序。进程等到了某个事件的发生,它将会从等待状态切换为就绪状态,然后它就可以试图去抢占CPU。抢占式调度是有代价的。而且代价比较大。

    CPU调度是由内核进行的,这个短期调度程序在进行调度之后,需要切换上下文,切换到用户模式,跳转到用户程序的合适位置来重新启动这个程序。

    对于现在的交互式系统,人们对系统的响应时间和等待时间的要求是很高的。响应时间长了,用户就会觉得很卡。

    先到先服务(first-come,first-served)

    先到先服务很容易理解。先来的程序先执行,执行完毕后让出CPU给接下来到来的程序。这种策略可以使用FIFO的队列来容易实现。这样的调度策略实现简单,但是它的平均等待时间一般是较长的。更为糟糕的是,当正在执行的程序是一个有许多I/O操作的进程,那么这将导致CPU在空闲的时间里无法运行后面等待的进程,造成了CPU空闲。FCFS策略是非抢占式的,一旦CPU分配给某个进程,那么直到该进程结束之前,CPU都是属于该进程的。从CPU利用率这个指标来评估FCFS,它并不是一个很好的调度策略。

    最短作业优先调度(shortest-job-first)

    最短作业调度是将后续具有最短处理时间的进程先放到CPU上运行,如果就绪队列中有同样长度的进程,那么它们之间是采用FCFS调度的。最短下一个CPU区间,需要操作系统知道接下来是那个进程的CPU区间最短。SJF就是调度这个最短CPU区间的进程。SJF算法具有最短的平均等待时间,它是最佳的调度算法。但是SJF面对的难题是恐怖的,那就是操作系统是如何获知后面就绪队列中哪一个进程具有最短的CPU区间。对于一个批处理系统而言,这不是问题,因为用户会设定进程执行时间。但是现代的操作系统是多任务的交互式系统,操作无法获知下一个CPU区间的长度,我们只能去近似SJF,而不能做到SJF。近似的方法就是去估计,预测它的值。可以认为下一个CPU区间的长度和以前的相似。下一个CPU区间通常可以预测为以前CPU区间的测量长度的指数平均。

    SJF算法可以是抢占的,也可以是非抢占的。一般而言,抢占式的SJF算法比非抢占式的SJF算法更好一些,但这需要调度程序优化的非常好,在切换上下文的时候能极快速的做完。抢占式的SJF是指最短剩余时间优先,当正在执行的进程剩余执行时间和就绪队列中进程剩余执行时间相比,其中时间最短将会被优先执行。

    优先权调度(priority-scheduling algorithm)

    SJF算法可以看做是时间优先级的一种优先级调度算法。在现代的操作系统中,每一个进程都会有一个优先权与其相关。具有最高优先级的进程会被分配到CPU。具有相同优先级的进程按照FCFS算法调度。优先权可以通过内部或者外部方式来定义。优先权调度可以是可抢占的或者非抢占的。

    优先权调度算法的一个主要问题是无穷阻塞问题(饥饿)。优先权调度会使得低优先级的进程可能在无穷等待CPU的到来。通常这种情形发生的时候,可能就会导致很严重的后果。老化是一种解决该问题的方案,老化以逐渐增加在系统中等待很长时间的进程的优先级。

    时间片轮转法(round-robin)

    时间片轮转法是专门为分时系统设计的。它是现代的桌面系统,服务器系统广泛采用的一种调度策略。它定义一个较小的时间单元,称为时间片。CPU调度程序为每个进程分配不超过一个时间片间隔的CPU时间。时间片轮转算法的关键在于时间片大小的选择。

    RR算法的性能基本取决于时间片设计的大小是否合理。时间片设计的过大,将会导致响应很慢。这时候的RR算法可能就接近于FCFS算法。同样,如果时间片设计的很小,那么RR算法可以看做是处理器共享的。但是这样会使得每个进程的处理速度都下降到1/n(假设n个进程),上下文切换对于RR算法的影响也是非常大,频发的在进程之间切换可能会导致开销的时间占比很大,相应的进程实际的执行时间就会被压缩。所以时间片的大小选择是RR算法的核心问题。

    多级队列调度(multilevel queue)

    将就绪队列分成多个独立的队列。根据进程的某些属性,将进程永久的分配到某个队列之中。每个队列都有自己的调度算法。同时队列与队列之间有调度,通常采用固定优先级可抢占式调度。

    也可以在不同的队列之间划分时间片,每个队列拥有一定的CPU时间。

    多级反馈队列调度

    对于多级队列调度算法,进程会被永久的分配至某个队列。这样不够灵活。多级反馈队列调度允许进程在队列之间移动。它依据不同CPU区间特点来划分进程。如果进程使用的CPU时间过多,那么它将会被移到更低优先级的队列。目的是将I/O约束和交互式进程留在较高的优先级。以增加系统的响应。当然了,当它在低优先级等待的时间过长了,老化算法就会让它提升优先级。这样,进程的优先级就会是一个动态的变化。

    多级反馈队列调度是现在的大多数操作系统普遍采用的方案。

     

    ____________________________________________________________________________________________________

    操作系统相对而言是公平的,他来维持系统的一个调度,协调各个进程之间的执行。

     

     

     

    展开全文
  • 进程调度算法进程调度算法进程调度算法进程调度算法进程调度算法进程调度算法
  • 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟 进程调度程序模拟
  • 有关进程调度的小程序,安排进程执行顺序,并输出每步就绪队列的情况
  • 进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文
  • 进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文进程调度论文
  • 进程调度 进程调度的时机 在上篇中说到,进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。我们现在来说说什么时候需要使用到进程调度。 其实,进程调度与切换的时机分为两种情况,...

    进程调度


    进程调度的时机

    在上篇中说到,进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。我们现在来说说什么时候需要使用到进程调度与切换。
    进程调度与切换的时机分为两种情况,一种是当前运行的进程主动放弃处理机,还有一种是当前运行的进程被动放弃处理机。接下来看看它们分别对应什么事件。

    • 当前运行的进程主动放弃处理机
      1. 进程正常终止。
      2. 运行过程中发生异常而终止。(如 内中断)
      3. 进程主动请求阻塞。(如 请求使用打印机)
    • 当前运行的进程被动放弃处理机
      1. 分配给该进程的时间片用完。
      2. 有更紧急的事情要处理。(如 外中断)
      3. 有更高优先级的进程进入就绪队列。

    注意:有的系统只允许进程主动放弃处理机,而在有的系统,进程可以既主动放弃处理机,又可以被剥夺处理机(当有更紧急的任务需要处理时)。

    当然,有时候我们也不能进行进程调度与切换,比如以下的情况。

    • 不能进行进程调度与切换的情况
      1. 在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理的过程中进行进程调度与切换。
      2. 在原子操作过程中(原语)。原子操作不可中断,要一气呵成。
      3. 进程在操作系统内核程序临界区中时。 (这个在下面会解释)

    对遗留问题的解释

    在解释上述问题之前,先说说什么是临界资源,什么是临界区。

    • 临界资源:一段时间内只允许一个进程使用的资源。即 各个进程只能互斥的访问临界资源。
    • 临界区:程序中访问临界资源的那段代码

    内核程序临界区一般是用来访问某种内核数据结构(临界资源)的代码。对于就绪队列这种内核临界资源,当有一个进程访问就绪队列时,该进程会给就绪队列上锁,以防其他进程的访问,所以此时我们不能进行进程调度,因为就绪队列被上锁了,进程调度相关进程无法访问该队列。

    所以,进程在操作系统内核程序区时的确不能进行进程调度,但进程处于(普通)临界区时还是可以进行进程调度的,下面对其解释。
    内核程序临界区和普通临界区不一样,普通临界区访问的临界资源不会直接影响到操作系统内核的管理工作,比如进程请求打印机这种临界资源,由于打印机准备需要时间,CPU总不能一直等待打印机准备完毕吧,所以此时需要进行进程调度。


    进程调度的方式

    进程调度的方式分为两种,分别是非剥夺式调度方式和剥夺式调度方式

    • 非剥夺调度方式
      该方式又称非抢占方式。该方式只允许进程主动放弃处理机。在运行过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。这种方式实现简单,系统开销小,但是无法及时的处理紧急任务,适合于早期批处理系统。

    • 剥夺调度方式
      该方式又称抢占方式。该方式允许进程处理机被剥夺。当有一个进程正在处理机上运行时,如果有一个更重要的进程需要使用处理机,操作系统会立即暂停正在运行的进程,将处理机分配给更重要的那个进程。这种方式实现相对复杂,但是可以优先处理紧急任务,也可以实现让各进程按时间片规划轮流执行相应的功能(通过时钟中断),适合于分时操作系统、实时操作系统。

    以上两种方式类似于银行排队,非剥夺调度方式就是每个人都按照顺序排好,顺序的完成需求,安分守己,而剥夺调度方式就是,当你正在处理需求的时候,来了一个彪形大汉,强制的把你从队头中踢出。

    进程调度的狭义与广义

    • 狭义的进程调度
      狭义的进程调度只是指从就绪队列中选择一个进程,为其分配处理机资源,不包括进程切换。
    • 广义的进程调度
      广义的进程调度包括了选择进程和切换进程两个过程。

    小贴士:进程切换是有代价的,如果过于频繁的进行进程调度、切换,必然会导致整个系统的工作效率降低,使系统大部分时间都花在进程切换上,而使真正用于运行进程的时间减少。


    总结

    在这里插入图片描述

    感谢

    以上内容大部分来自王道操作系统系列视频教学。

    展开全文
  • 作业进程调度

    2018-11-06 20:02:31
    操作系统实验 进程调度1,进程调度算法-FCFS算法;2、编写短作业优先调度算法
  • Linux进程调度

    2021-01-09 10:02:31
    Linux进程调度 1.Linux进程类型 普通进程: 采用动态优先级来调度; 调度程序周期性地修改优先级 实时进程: 采用静态优先级来调度; 由用户预先指定,以后不会改变 2.Linux进程优先级 静态优先级: 进程创建时指定...
  • 进程调度的问题进程调度的问题进程调度的问题进程调度的问题
  • 进程调度器.rar进程调度器.rar进程调度器.rar进程调度器.rar
  • 教育资料 xx大学 操作系统 实验报告 姓名 学号 班级 实验日期 实验名称先来先服务FCFS和短作业优先SJF进程调度算法 实验一 先来先服务FCFS和短作业优先SJF进程调度算法 1. 实验目的 通过这次实验理解FCFS和SJF进程...
  • 进程调度系统的算法进程调度系统的算法进程调度系统的算法进程调度系统的算法进程调度系统的算法进程调度系统的算法
  • 进程调度实验

    2018-06-28 12:20:50
    编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创建进程时确定的,并在...
  • 进程调度代码

    2015-12-21 14:28:36
    操作系统课程实验一,进程调度算法,FCFS LRU进程调度算法
  • 进程调度算法

    2011-11-23 18:19:08
    进程调度算法进程调度算法进程调度算法进程调度算法进程调度算法
  • 进程调度

    2011-12-29 14:55:05
    进程调度进程调度进程调度进程调度
  • 多线程模拟进程调度多线程模拟进程调度多线程模拟进程调度多线程模拟进程调度
  • 进程调度算法Linux进程调度算法

    千次阅读 2018-02-06 20:02:27
    这次介绍一下操作系统的进程调度算法 操作系统的调度分为三种:1.远程调度(创建新进程);2.中程调度(交换功能的一部分);3.短程调度(下次执行哪个进程) 这次讲述的就是短程调度,可以简单的看作咱们平时...

    这次介绍一下操作系统的进程调度算法

    • 操作系统的调度分为三种:1.远程调度(创建新进程);2.中程调度(交换功能的一部分);3.短程调度(下次执行哪个进程)

    这次讲述的就是短程调度,可以简单的看作咱们平时所说的进程调度啦

    当发生下面几种情况的时候会调用短程调度器,然后就看下次执行那个进程啦

    • 时钟中断
    • I/O中断
    • 操作系统调用
    • 信号(如信号量)

     

    • 进程调度算法:
      • 先来先服务(FCFS)
      • 短作业优先(SPN)
      • 最短剩余时间(SRT)
      • 时间片轮转
      • 最高响应比优先
      • 公平共享调度

     

     

    • 先来先服务


    就和名字一样,哪个进程先来就先获得处理器时间,,用一个队列暂存等待处理器的进程,优点是实现简单(太简单了吧喂),缺点,遇到那种又臭又长的进程就很不爽了,好比食堂打饭,前面的人不买一直问,后面的人一直排队,那么后面的人就怎么了呢?后面的人就饥饿!同时如果现在有一个马上就要饿死的人急需吃饭,这就很尴尬了(紧急的进程无法处理,优先级高的进程处于饥饿状态),所以有了优先级队列的先来先服务算法,这样也不是很好,因为总有又臭又长的进程,排队是谁都不乐意的吧,而且处理器时间就不公平了。

    • 短作业优先

    因为先来先服务不好,所以有了短作业优先,通过设置执行时间短的进程作业的优先级为高来实现,也很简单粗暴,就是说进程时间越短就越先执行,看着是比较好了,不浪费时间了,但是有没有想过长进程的感受,来了一群短的进程,然后一直来短进程,这是要饿死长进程的节奏,人家长有错么?如果是可抢占的方式(见最短剩余时间版本),就更惨了,只要来了更短的就别想好好执行了。。。

    • 最短剩余时间

    就是刚才说的短作业优先的抢占版本,说过他的缺点了,当前执行的进程还剩10个时间单位,但是一直来了一群只要2个时间单位就跑完的进程,那当前的进程就会被抢占,然后含恨饿死。。

    • 时间片轮转

    既然上面几种算法都有可能出现饥饿进程,那么我就干脆让每个进程都执行那么一会,这样不就比较公平了?每个进程都有机会在处理器上跑,看起来很和谐,但是还是没有解决优先级的问题,优先级不好控制,比如有什么紧急的进程需要立即执行,就不好办了。而且每个进程的具体情况也是不一样的,比如有I/O消耗型进程,和处理器消耗型进程,在同样的事件片里真正占用处理器的时间是不一样的,而我们是真正占用处理器的时间希望能一样的,这样就公平了嘛。这样看来,时间片轮转也是有缺点的。

    • 最高响应比优先

    什么是响应比?看一下这个公式:R=(w+s)/s,其中R是响应比,w是等待处理器的时间,s是期待的服务时间,简单的来说响应比就是,进程从加入等待队列开始一直到执行完毕经历的时间除以进程使用处理器的时间,这个响应比比较高的就证明该进程等待比较久了,它估计会很饿,先让它吃!

    • 公平共享调度

    Linux系统中普通进程使用的调度方法就是公平共享调度的一个实例,被称作完全公平调度算法(CFS),虽然一定不可能公平。。。详情参照我的另一篇博客。。传送门召唤!!:http://www.cnblogs.com/lenomirei/p/5516872.html

    • Linux系统中的进程调度方案

    Linux在进行进程调度的时候把进程分为两种:1.普通进程;2.实时进程

    实时进程的优先级永远比普通进程的优先级高,也就是说实时进程只要来了就可以抢占普通进程,而且还抓住处理器就不撒手,直到所有的实时进程都执行完毕,才会把处理器让出来给普通进程使用

    之前也说了,普通进程的调度采用的是完全公平调度(CFS)对应的是SCHED_NORMAL

    而实时进程采用的调度方法就比较简单粗暴了,Linux提供了两种实时调度策略:SCHED_FIFO和SCHED_RR。

    SCHED_FIFO:简单的先入先出的调度算法,不使用时间片,只可能被更高优先级的FIFO或者SCHED_RR抢占

    SCHED_RR:时间片轮转的方式,优先级比SCHED_FIFO还要高,可以抢占SCHED_FIFO

    实时进程的调度没有实时优先级这一说法,采用的是静态优先级,一开始定好优先级之后就不会改变了。

    展开全文
  • 操作系统os进程调度,作业调度以及请求分页系统的实现,其中进程调度涉及FCFS算法,时间片轮转法以及多级反馈队列实现。作业调度涉及FCFS以及短作业优先等。有源代码以及文档解释
  • 操作系统 实验报告三 进程调度 进程调度实验 进程调度原理

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 356,484
精华内容 142,593
关键字:

进程调度