(五)处理器调度

CPU调度

按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程。其任务是控制、协调进程对CPU的竞争。

CPU调度要解决的三个问题

  1. what:按什么原则选择下一个要执行的进程(调度算法)
    调度算法衡量指标:
  • 吞吐量Throughput:每单位时间完成的进程数目
  • 周转时间TT(Turnaround Time):每个进程从提出请求到运行完成的时间
  • 响应时间RT(Response Time):从提出请求到第一次回应的时间
  • CPU利用率(CPU Utilization):CPU做有效工作的时间比例
  • 等待时间(Waiting time):每个进程在就绪队列中等待的时间
  1. when:何时进行选择(调度时机)
  • 进程正常终止 或 由于某种错误而终止
  • 新进程创建 或 一个等待进程变成就绪
  • 当一个进程从运行态进入阻塞态
  • 当一个进程从运行态变为就绪态
  1. how:如何让被选中的进程上CPU运行(调度过程,进程的上下文切换)
    进程切换:是指一个进程让出处理器,由另一个进程占用处理器的过程。主要包括两部分工作:
  • 切换全局页目录以加载一个新的地址空间
  • 切换内核栈和硬件上下文,其中硬件上下文包括了内核执行新进程需要的全部信息。
    切换过程包括了对原来运行进程各种状态的保存和对新的进程各种状态的恢复。

设计调度算法的要点

  1. 需考虑数据结构,进程控制块PCB中,需要记录哪些与CPU调度有关的信息,设计相应的字段
  2. 进程优先级及就绪队列的组织
    优先级表现了进程的重要性和紧迫性。优先数是一个数值,反映了某一个优先级。
  • 静态优先级
    进程创建时指定,运行过程中不再改变
  • 动态优先级
    进程创建时指定了一个优先级,运行过程中可以动态改变。如:等待时间较长的进程可提升其优先级
  1. 抢占式调度与非抢占式调度
  • 可抢占式(可剥夺式)
    当有比正在运行的进程优先级更高的进程就绪时,系统可强行剥夺正在运行进程的CPU,提供给具有更高优先级的进程使用。
  • 不可抢占式(不可剥夺式)
    某一进程被调度运行后,除非由于它自身的原因不能运行,否则一直运行下去。
  1. I/O密集型与CPU密集型进程
  • I/O密集型或I/O型
    频繁的进行I/O,通常会花费很多时间等待I/O操作的完成。
  • CPU密集型
    需要大量的CPU时间进行计算
  1. 时间片
    指一个时间段,分配给调度上CPU的进程,确定了允许该进程运行的时间长度。

批处理系统的调度算法

  1. 先来先服务FCFS-First Come First Server
    按照进程就绪的先后顺序使用CPU。使用一个队列就可以实现,新就绪的排在队尾。
    是非抢占的。
  • 优点:公平 实现简单
  • 缺点:长进程后面的短进程需要等很长时间,不利于用户体验。
FCFS举例
  1. 最短作业优先SJF-Shortest Job First
    具有最短完成时间的进程优先执行。
    非抢占式。
  • 优点:最短的平均周转时间(在所有进程同时可运行时)
  • 缺点:不公平。源源不断的短任务到来,可能使长的任务长时间得不到运行,产生“饥饿”现象。


    SJF
  1. 最短剩余时间优先SRTN-Shortest Remaining Time Next
    SJF抢占式版本。即当一个新就绪的进程比当前运行进程具有更短的完成时间时,系统抢占当前进程,选择新就绪的进程执行。
  2. 最高响应比优先HRRN-Highest Response Ratio Next
    调度时,首先计算每个进程的响应比R,之后总是选择R最高的进程执行。
响应比计算的一种方式

交互式系统中采用的调度算法

  1. 时间片轮转调度RR-Round Robin
    目标:为短任务改善平均响应时间
    解决问题的思路:周期性切换;每个进程分配一个时间片;时钟中断-->轮换。
  • 优点:公平;有利于交互式计算,响应时间快;
  • 缺点:由于进程切换,时间片轮转算法要花费较高的开销。(如果一个进程运行时间为10,时间片为1,则上下文切换次数要9次,开销较大);RR对不同大小的进程是有利的,但对于相同大小的进程就不一定了。
image.png
  1. 最高优先级调度HPF-Highest Priority First
    选择优先级最高的进程投入运行。
  • 系统进程优先级 高于 用户进程
  • 前台进程优先级 高于 后台进程
  • 操作系统更偏好 I/O型进程
  1. 多级反馈队列Multiple feedback queue
    是一个综合调度算法。
  2. 最短进程优先Shortest Process Next
各种调度算法的比较

典型系统所采用的调度算法

  1. UNIX 动态优先数法
  2. 5.3BSD 多级反馈队列法
  3. Linux 抢占式调度
  4. Windows 基于优先级的抢占式多任务调度
  5. Solaris 综合调度算法

线程的时间配额

时间配额不是一个时间长度值,而一个称为配额单位的整数。
一个线程用完了自己的时间配额时,如果没有其他相同优先级的线程,Windows将重新给该线程分配一个新的时间配额,让它继续运行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 一、CPU调度的相关概念 1.1 cpu调度 其任务是控制、协调进程对cpu的竞争,即按一定的调度算法从就绪队列中...
    yjaal阅读 1,142评论 4 5
  • 引言 当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有...
    程序猿胖子阅读 7,746评论 1 3
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,105评论 0 23
  • 为值得的人赴汤蹈火,对闲杂人等别在乎太多 ,如此,你的善良才显矜贵 。永远不要怪别人不帮你,也别怪他人不关心你。在...
    笃学青衿阅读 158评论 0 0
  • 01 我身边曾经有一位男性朋友,说话分分钟能将你气到爆炸的那种。 每次约着一起逛街,见面时他都会对着我穿着的衣服惊...
    菀彼青青阅读 7,426评论 50 127