操作系统的调度

操作系统的调度是指操作系统根据一定的策略和算法,对系统中的进程或线程进行资源分配和执行顺序的安排,以实现高效、公平地利用系统资源,满足不同应用程序和用户的需求。以下从调度的层次、算法和时机等方面为你详细介绍:

调度层次

  • 高级调度(作业调度):主要用于批处理系统中。它决定了哪些作业可以进入系统的内存中进行处理。作业调度从外存的后备队列中选择作业,为其分配内存等资源,并将其放入就绪队列。
  • 中级调度(内存调度):其主要任务是根据内存资源情况,决定将哪些暂时不能运行的进程从内存中换到外存的对换区,以及在适当的时候将外存中的进程换入内存。中级调度可以提高内存利用率和系统的并发度。
  • 低级调度(进程/线程调度):是操作系统中最基本的调度,它决定了就绪队列中的哪个进程或线程能够获得CPU资源并执行。低级调度的频率较高,通常在毫秒级甚至更短的时间内进行一次调度。

调度算法

  • 先来先服务(FCFS):按照进程或作业到达的先后顺序进行调度。优点是实现简单、公平;缺点是如果前面的进程执行时间较长,会导致后面的进程等待时间过长,特别是对于短进程,可能会使其响应时间过长。
  • 短作业优先(SJF):选择预计执行时间最短的进程或作业优先调度。可以有效减少平均周转时间,但可能会导致长作业长时间等待,甚至出现饥饿现象。
  • 优先级调度:为每个进程或作业分配一个优先级,优先级高的先执行。可以根据系统的需求和进程的重要性来设置优先级,但如果不采取适当的措施,可能会导致低优先级的进程长期得不到执行。
  • 时间片轮转:将CPU时间划分为固定大小的时间片,就绪队列中的进程轮流获得一个时间片来执行。如果在时间片内进程没有执行完,就会被暂停并放回就绪队列,等待下一次调度。这种算法可以保证每个进程都能得到一定的CPU时间,适用于分时系统,能提供较好的交互性。
  • 多级反馈队列调度:设置多个就绪队列,每个队列具有不同的优先级和时间片大小。新进程进入系统后,先进入最高优先级队列,如果在该队列中一个时间片内没有执行完,则会被移到下一个队列。随着队列优先级的降低,时间片大小会逐渐增大。这种算法综合了多种算法的优点,能较好地适应不同类型的进程。

调度时机

  • 进程状态转换时:如进程从运行状态变为阻塞状态(例如等待I/O操作完成),或者从阻塞状态变为就绪状态(例如I/O操作完成)时,需要进行调度,以决定是否让其他就绪进程占用CPU。
  • 时间片用完时:对于时间片轮转调度算法,当进程的时间片用完后,系统会进行调度,将CPU分配给其他就绪进程。
  • 有更高优先级的进程进入就绪队列时:在优先级调度算法中,如果有更高优先级的进程进入就绪队列,系统可能会立即进行调度,让高优先级的进程优先执行。
  • 进程主动放弃CPU时:例如进程执行了 sleep 函数或者调用了其他会导致其主动暂停执行的系统调用,此时系统会进行调度,选择其他就绪进程来运行。
#春招进度记录##牛客创作赏金赛##诺瓦星云求职进展汇总##你想吐槽公司的哪些规定##一觉醒来,秋招难度下降一万倍……#
操作系统I 文章被收录于专栏

操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的核心程序,是用户与硬件之间的桥梁,也是计算机系统的核心组成部分。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务