第7章 操作系统调度

合集下载

几种常见操作系统典型功能的实现方法举例ppt

几种常见操作系统典型功能的实现方法举例ppt

调度
内存中有可运行的进程 ?
Y 选择内存中优先级最高、驻留时间最长的就绪 或被剥夺进程
从就绪队列中移出
切换到该进程的上下文
恢复其执行
N CPU空闲
图7.3 UNIX进程调度算法
返回本节
7.3 UNIX进程通信与同步机制
UNIX系统V中的进程通信可分为4个部分: 低级通信、管道通信、进程间通信和网络进 程间通信。
7.1.2 进程管理程序 7.1.3 线程调度
返回首页
路漫漫其修远兮,吾将上下而求索!
豫章故郡,洪都新府。星分翼轸,地 接衡庐 。襟三 江而带 五湖, 控蛮荆 而引瓯 越。物 华天宝 ,龙光 射牛斗 之墟; 人杰地 灵,徐 孺下陈 蕃之榻 。雄州 雾列, 俊采星 驰。台 隍枕夷 夏之交 ,宾主 尽东南 之美。 都督阎 公之雅 望,棨 戟遥 临;宇文新州之懿范,襜帷暂驻。十 旬休假 ,胜友 如云; 千里逢 迎,高 朋满座 。腾蛟 起凤, 孟学士 之词宗 ;紫电 青霜, 王将军 之武库 。家君 作宰, 路出名 区;童 子何知 ,躬逢 胜饯。 时维九月,序属三秋。潦水尽而寒潭 清,烟 光凝而 暮山紫 。俨骖 騑于上 路,访 风景于 崇阿; 临帝子 之长洲 ,得天 人之旧 馆。层 峦耸翠 ,上出 重霄; 飞阁流 丹,下 临无地 。鹤汀 凫渚, 穷岛屿 之萦回 ;桂殿 兰宫, 即冈峦 之体势 。 披绣闼,俯雕甍,山原旷其盈视,川 泽纡其 骇瞩。 闾阎扑 地,钟 鸣鼎食 之家; 舸舰迷 津,青 雀黄龙 之舳。 云销雨 霁,彩 彻区明 。落霞 与孤鹜 齐飞, 秋水共 长天一 色。渔 舟唱晚 ,响穷 彭蠡之 滨;雁 阵惊寒 ,声断 衡阳之 浦。 遥襟甫畅,逸兴遄飞。爽籁发而清风 生,纤 歌凝而 白云遏 。睢园 绿竹, 气凌彭 泽之樽 ;邺水 朱华, 光照临 川之笔 。四美 具,二 难并。 穷睇眄 于中天 ,极娱 游于暇 日。天 高地迥 ,觉宇 宙之无 穷;兴 尽悲来 ,识盈 虚之有 数。望 长安 于日下,目吴会于云间。地势极而南 溟深, 天柱高 而北辰 远。关 山难越 ,谁悲 失路之 人?萍 水相逢 ,尽是 他乡之 客。怀 帝阍而 不见, 奉宣室 以何年 ? 嗟乎!时运不齐,命途多舛。冯唐易 老,李 广难封 。屈贾 谊于长 沙,非 无圣主 ;窜梁 鸿于海 曲,岂 乏明时 ?所赖 君子见 机,达 人知命 。老当 益壮, 宁移白 首之心 ?穷且 益坚, 不坠青 云之志 。酌贪 泉而觉 爽,处 涸辙以 犹欢。 北海 虽赊,扶摇可接;东隅已逝,桑榆非 晚。孟 尝高洁 ,空余 报国之 情;阮 籍猖狂 ,岂效 穷途之 哭! 勃,三尺微命,一介书生。无路请缨 ,等终 军之弱 冠;有 怀投笔 ,慕宗 悫之长 风。舍 簪笏于 百龄, 奉晨昏 于万里 。非谢 家之宝 树,接 孟氏之 芳邻。 他日趋 庭,叨 陪鲤对 ;今兹 捧袂, 喜托龙 门。杨 意不逢 ,抚凌 云而自 惜;钟 期既 遇,奏流水以何惭? 呜乎!胜地不常,盛筵难再;兰亭已 矣,梓 泽丘墟 。临别 赠言, 幸承恩 于伟饯 ;登高 作赋, 是所望 于群公 。敢竭 鄙怀, 恭疏短 引;一 言均赋 ,四韵 俱成。 请洒潘 江,各 倾陆海 云尔: 滕王高阁临江渚,佩玉鸣鸾罢歌舞。 画栋朝飞南浦云,珠帘暮卷西山雨。 闲云潭影日悠悠,物换星移几度秋。 阁中帝子今何在?槛外长江空自流。

第7章操作系统接口(系统调用部分)资料

第7章操作系统接口(系统调用部分)资料

中断是指CPU对系统发生某事件时的这样一种响应:
CPU暂停正在执行的程序,在保留现场后自动地转去执行
该事件的中断处理程序;执行完后,再返回到原程序的断
点处继续执行 。
2020/11/11
15
被中断程序
中断处理开始
中断点
中断处理 程序
中断处理结束
图 7 - 4 中断时的CPU轨迹
2020/11/11
2020/11/11
5
系统调用
操作系统中提供了系统调用,使应用 程序可以通过系统调用的方法,间接调用 操作系统的相关过程,取得相应的服务。
应用程序使用系统调用命令,以取得 操作系统服务时,操作系统将CPU的状态从 用户态转换到系统态,然后执行操作系统 中相应的子程序,完成所需的功能,执行 完成后,系统又将CPU状态从系统态转换到 用户态,再继续执行应用程序。
其次,是分析系统调用类型,转入相应的系统调用处理 子程序。
最后,在系统调用处理子程序执行完后,应恢复被中断
的或设置新进程的CPU现场,然后返回被中断进程或新进程,
继续往下执行。
2020/11/11
18
练习:
系统调用的目的是() A、请求系统服务 B、终止系统服务 C、申请系统资源 D、释放系统资源 用户程序通过系统调用creat来创建一新文件时,在执行 系统调用前,用户进程是运行在()下,在执行creat()的 过程中,用户进程是运行在()下。
操作系统在系统态运行,应用程序只能在用 户态运行。
2020/11/11
4
特权指令与非特权指令
CPU的指令分为特权指令和非特权指令。
特权指令:在系统态时运行的指令,关系到全 局的指令。只允许操作系统使用,不允许应用程 序使用。

【RTX操作系统教程】第7章任务管理

【RTX操作系统教程】第7章任务管理

【RTX操作系统教程】第7章任务管理第7章 任务管理对于初学者,特别是对于没有RTOS基础的同学来说,了解RTX的任务管理⾮常重要,了解任务管理的⽬的就是让初学者从裸机的,单任务编程过渡到带OS的,多任务编程上来。

搞清楚了这点,那么RTX学习就算⼊门了。

本章教程配套的例⼦含Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407。

7.1 单任务系统7.2 多任务系统7.3 任务设置7.4 任务栈设置7.5 系统栈设置7.6 栈溢出检测7.7 RTX初始化和启动7.9 任务删除7.10 空闲任务7.11实验例程说明7.12 总结7.1 单任务系统学习多任务系统之前,我们先来回顾下单任务系统的编程框架,即裸机时的编程框架。

裸机编程主要是采⽤超级循环(super-loops)系统,⼜称前后台系统。

应⽤程序是⼀个⽆限的循环,循环中调⽤相应的函数完成相应的操作,这部分可以看做后台⾏为,中断服务程序处理异步事件,这部分可以看做是前台⾏为。

后台也可以叫做任务级,前台也叫作中断级。

图7.1 单任务系统对于前后台系统的编程思路主要有以下两种⽅式:7.1.1 查询⽅式对于⼀些简单的应⽤,处理器可以查询数据或者消息是否就绪,就绪后进⾏处理,然后再等待,如此循环下去。

对于简单的任务,这种⽅式简单易处理。

但⼤多数情况下,需要处理多个接⼝数据或者消息,那就需要多次处理,如下⾯的流程图所⽰:⽤查询⽅式处理简单的应⽤,效果⽐较好,但是随着⼯程的复杂,采⽤查询⽅式实现的⼯程就变的很难维护,同时,由于⽆法定义查询任务的优先级,这种查询⽅式会使得重要的接⼝消息得不到及时响应。

⽐如程序⼀直在等待⼀个⾮紧急消息就绪,如果这个消息后⾯还有⼀个紧急的消息需要处理,那么就会使得紧急消息长时间得不到执⾏。

7.1.2 中断⽅式对于查询⽅式⽆法有效执⾏紧急任务的情况,采⽤中断⽅式就有效的解决了这个问题,下⾯是中断⽅式简单的流程图:采⽤中断和查询结合的⽅式可以解决⼤部分裸机应⽤,但随着⼯程的复杂,裸机⽅式的缺点就暴露出来了u 必须在中断(ISR)内处理时间关键运算:l ISR 函数变得⾮常复杂,并且需要很长执⾏时间。

计算机四级操作系统-7-IO设备管理

计算机四级操作系统-7-IO设备管理

计算机四级操作系统-7-IO设备管理第7章I/O设备管理设备管理是操作系统的主要功能之⼀,它负责管理所有输⼈输出设备以完成期望的数据传设备管理可能是操作系统设计中最凌乱的部分,这主要是由于计算机系统中存在着⼤量的输⼊/输出设备,其性能和应⽤特点可能完全不同。

所以要建⽴⼀个通⽤的、⼀致的设备访问接⼝,使⽤户和应⽤程序开发⼈员能够⽅便地使⽤输⼊/输出设备,⽽⽆须关⼼每种设备各⾃的特性,这正是设备管理的主要⽬的。

本章⾸先讲述设备管理的基本概念,然后讨论I/O硬件组成、I/O软件结构、设备管理的相关技术,最后阐述I/O性能问题及解决⽅案。

7.1设备与设备分类输⼊/输出设备(I/O设备)也称为外部设备(Peripheral Device),有时简称为设备或外设,包括计算机系统中除CPU和内存储器以外的所有的设备和装置,还包括所有外部存储设备。

在不同的上下⽂中,I/O设备⼀词有⼴义和狭义两种含义,⼴义的I/O设备即上述定义,狭义的I/O设备不包括外存设备。

可见,计算机系统中外部设备⾮常多,并且这些设备在功能、速度和控制⽅式等⽅⾯都有较⼤的差异,本节将讨论这些问题。

7.1.1设备管理的重要性为了理解操作系统中设备管理的重要性,⾸先要了解I/O设备在计算机系统中所起的作⽤。

如果说处理器和内存是计算机系统的⼤脑部分的话,那么I/O设备就是计算机系统的五官和四肢。

各种需要处理的信息和操作⼈员对计算机系统的操作命令,都要通过输⼊设备进⼊计算机系统,处理后的信息和结果也要通过输出设备从计算机系统输出。

计算机系统中的I/O设备种类繁多,从简单的键盘到⿏标、打印机、图形显⽰终端、磁盘驱动器以⾄于⽹络设备,变化万千,造就计算机应⽤的多样性和普及性。

可以说没有I/O设备,就没有计算机的应⽤。

然⽽,正如⼈们已经认识到的,操作系统复杂和庞⼤的主要原因是它所管理的资源的庞杂和并发技术的采⽤,⽽I/o设备的庞杂正是操作系统所管理的资源庞杂的主要原因,I/O设备的速度远低于处理器的速度正是导致并发技术产⽣的直接原因。

DBS第七章(第3版)

DBS第七章(第3版)

一旦发生数据库故障,分情况处理:
据库未被破坏,某些数据不可靠:用日志撤消
第七章
系统实现技术
7.2
数据库的恢复
三、故障类型与恢复对策
(1) 事务故障 事务故障――事务因不可预知的原因而中途(在提交前)夭折 原因:无法执行 ( 数据库中无要访问的数据、运算溢出、 不满足约束条件)
件,依登入日志文件的次序,重新执行所登记的操作
-对撤消队列中每个事务进行undo操作,反向扫描日志文
件,依据登入日志文件中相反次序,对每个更新操作执 行逆操作,从而恢复原状 *若是Update,将BI写入数据库 *若是insert,则将数据对象删去 *若是delete操作,则做插入操作,插入值为记录中的BI
第七章 系统实现技术 7.2 数据库的恢复
(1) 仅使用后备副本的恢复技术 原理:由DBA定期地将整个数据库转储(DUMP)到磁带或 另一个磁盘上,形成数据库副本,称后备副本。
脱机存放、故障时取最近的后备副本来恢复
转储 恢复 运行事务
最近转储点 故障发生点 重新运行事务
装入后备副本
效果:#数据库只能恢复到最近转储时状态
的更新操作的文件。
是记录式文件,由运行记录组成。 日志文件的主要内容:

前像:事务所涉及的物理块更新前的映像(旧值)BI
前像可以使数据库恢复到更新前的状态
对应的操作是撤销(undo)更新 → 回滚rollback

后像:事务所涉及的物理块更新后的映像(新值)AI
后像可以使数据库恢复到更新后的状态(更新丢失时) 对应的操作是重做一次更新 → 重做(redo)
#从最近转储点至故障时所有数据库的更新将丢失 #需通过重运行更新事务来恢复
第七章 系统实现技术 7.2 数据库的恢复

《操作系统导论》-书摘

《操作系统导论》-书摘

《操作系统导论》-书摘前⾔在真实系统上运⾏真实代码是了解操作系统的最佳⽅式,因此建议你尽可能这样做。

根据我们近15年来教授本课程的经验,学⽣很难理解并发问题是如何产⽣的,或者很难理解⼈们试图解决它的原因。

那是因为他们还不了解地址空间是什么、进程是什么,或者为什么上下⽂切换可以在任意时间点发⽣。

然⽽,⼀旦他们理解了这些概念,那么再引⼊线程的概念和由此产⽣的问题就变得相当容易,或者⾄少⽐较容易。

第1章关于本书的对话他讲的是物理学,⽽我们将探讨的主题是操作系统的3个简单部分。

这很合适,因为操作系统的难度差不多是物理学的⼀半。

第2章操作系统介绍由于操作系统提供这些调⽤来运⾏程序、访问内存和设备,并进⾏其他相关操作,我们有时也会说操作系统为应⽤程序提供了⼀个标准库(standard library)。

每个CPU、内存和磁盘都是系统的资源(resource),因此操作系统扮演的主要⾓⾊就是管理(manage)这些资源,以做到⾼效或公平,或者实际上考虑其他许多可能的⽬标。

遗憾的是,上⾯的程序中的关键部分是增加共享计数器的地⽅,它需要3条指令:⼀条将计数器的值从内存加载到寄存器,⼀条将其递增,另⼀条将其保存回内存。

你可能想知道操作系统为了实际写⼊磁盘⽽做了什么。

我们会告诉你,但你必须答应先闭上眼睛。

这是不愉快的。

⽂件系统必须做很多⼯作:⾸先确定新数据将驻留在磁盘上的哪个位置,然后在⽂件系统所维护的各种结构中对其进⾏记录。

这样做需要向底层存储设备发出I/O请求,以读取现有结构或更新(写⼊)它们。

⼀个最基本的⽬标,是建⽴⼀些抽象(abstraction),让系统⽅便和易于使⽤。

抽象对我们在计算机科学中做的每件事都很有帮助。

抽象使得编写⼀个⼤型程序成为可能,将其划分为⼩⽽且容易理解的部分,⽤C[SPAN]这样的⾼级语⾔编写这样的程序不⽤考虑汇编,⽤汇编写代码不⽤考虑逻辑门,⽤逻辑门来构建处理器不⽤太多考虑晶体管。

系统调⽤和过程调⽤之间的关键区别在于,系统调⽤将控制转移(跳转)到OS中,同时提⾼硬件特权级别(hardware privilege level)。

嵌入式操作系统_第7章 ucOS-II - 任务的同步互斥通信

释印做畅与系是黄宋黄时缓态之放机,宏丹宏地人和依(冲,后:丹:同们谐靠后的那别:腿缓区只,步依、任,使么走我是冲得有才啊自你运靠工务系用也!己自区到等应行通作之统权会的己信 顺 间,为有任该腿的才。造,,来 利 的而空效务通能如成我但互 的 良不A时数知爱手向唤果极相 做 好致走是)据任缓醒这大就咱沟 法 通导,而务走俩通 一 信致冲任两的,的B任应, 样 来灾区去务个混你呀务该管!从 , 保难写取B任乱不B使处而计证性入因数务着。使算任的其于!了据不不人机务后获等数。能这际系与果得待据从样关统任。打状
IO)N;SO当就T_函8SE任绪USV数e务状EmON等P态S的TeS待n。e*返dmp的允如ePv回o时许果esnt间用值t参(/超参数/为信过数ti号已mttii量emmo创eeu的ootu被u建指tt时设设针的可置置信以一为结个0号,束等量则等待表的待时明状间指任态的针务而限。的进制入,等
待时间为无限长。 调用函数成功后,函数返回值为OS_ON_ERR,否则会根据具体 错误返回OS_ERR_EVENT_TYPE、OS_SEM_OVF。
函块以8 位IO)表数,N;至函vOS赋o明TO把S_占数i8低号号优_EdS这以U成EMVO用O8 先为值V是ESu员pOS这ENtMre无位级(M一SiNOTxo个uMTuCS个t效和(反该*te资uEre*pxet互xvpee)高转值Pa欲源Pevxete斥enevePn的,8现为(提ntneodT型dnts()y其t高位象0t从升,)p/信(/x的e他(/互/空8两而F赋互的号原任F斥事位部要斥以量时优型务型件型常用分提,为,先释信控信数然:来:升放信号级制号后O了存低的量号别S块量再该指_放8优为链指E)把信针V为位先有针表成,E号N了用级获效员量低T取避来别O_,。8TS一免存pY否位ErPv个i出放则oeE赋n。事_t现信M信C以件nUt常控的TE制数高X

作业管理练习题

第七章作业管理练习题(一)单项选择题1 •用户要求计算机处理的一个计算问题称为一个()。

A •进程B程序C •作业D系统调度2 •一个作业的完成要经过若干加工步骤,这每个步骤称为()。

A •作业流B •子程序C.子进程 D •作业步3 •通常一个批处理作业要经过若干作业步才能完成,系统要求用户()给岀说明。

A•只能在作业提交时B •只能在作业执行过程中C.在作业提交时或作业执行过程中 D •不必4•在批处理方式下,操作员把一批作业组织成()向系统成批输入。

A .作业步B.作业流C •子程序 D .程序组5.在批处理系统中,作业控制说明书是用操作系统提供的()编写而成的。

A.C 语言B命令语言C .作业控制语言D 会话语言6.用户使用操作系统提供的操作控制命令表达对作业执行的控制意图,这种作业控制方式是()。

A .自动控制方式 B .脱机控制方式 C .批处理方式 D .交互方式7.采用批处理控制方式时,操作员只要用预输入命令就能把作业流中的信息存放到输入井中,完成输入工作后被输入的作业处于()。

A •输入状态 B •收容状态C执行状态D •完成状态8 •批处理作业调度必须遵循的一个必要条件是()可以满足被选作业的资源要求。

A•系统的主存容量B,系统中的磁带机台数C系统配置的资源D•系统现有的尚未分配的资源9 •作业调度程序的设计原则中并不考虑()。

A •公平性B •均衡使用资源C •用户界面友好 D .极大的流量10 •从系统的角度岀发,希望批处理控制方式下进入输入井的作业()尽可能地小。

A •等待装入主存的时间B•执行时间C •周转时间 D •平均周转时间11 •()只考虑用户估计的计算机时间,可能使计算时间长的作业等待太久。

A •先来先服务算法B •计算时间短的作业优先算法C响应比最高者优先算法 D •优先数算法12 •先来先服务算法以()去选作业,可能会使计算时间短的作业等待时间过长。

A •进入输入井的先后次序B •计算时间的长短C响应比的高低 D •优先数的大小13 •可以证明,采用()能使平均等待时间最小。

操作系统概念(第九版)答案

操作系统概念(第九版)答案简介《操作系统概念(第九版)答案》是一本针对《操作系统概念(第九版)》教材的答案集合。

本文档旨在提供读者对操作系统相关概念的理解和应用基础。

目录1.引论2.进程管理3.处理机调度4.进程同步5.死锁6.内存管理7.虚拟内存8.文件系统9.输入与输出10.磁盘存储管理11.安全性和保护12.分布式系统13.多媒体操作系统14.实时系统第一章引论本章的目标是介绍操作系统的概念和功能,包括定义了什么是操作系统、操作系统的历史和发展、操作系统的分类以及操作系统的基本组成部分。

问题1:操作系统是什么?答案:操作系统是一个管理计算机硬件和软件资源的软件系统。

它为用户提供一个在硬件和软件之间进行交互的接口,同时协调和控制计算机的各个组件,以实现有效和可靠的计算机操作。

问题2:操作系统的历史和发展?答案:操作系统的历史可以追溯到大约20世纪50年代,当时计算机的使用范围相对较小,操作系统也比较简单。

随着计算机技术的发展,操作系统逐渐变得复杂而且功能强大。

在20世纪60年代,随着多道程序设计的发展,操作系统开始支持同时运行多个程序。

这就导致了对资源的合理分配和进程调度的需求。

同时,操作系统的文件系统和输入输出功能也得到了改进和扩展。

在20世纪70年代,个人计算机的出现使得操作系统变得更加普及。

同时,分时操作系统和分布式操作系统的概念也开始出现。

到了20世纪80年代和90年代,图形用户界面(GUI)的引入和互联网的普及使得操作系统更加用户友好和功能丰富。

现在,操作系统已经成为计算机系统中不可或缺的一部分,为计算机用户提供各种功能和服务。

问题3:操作系统的分类有哪些?答案:操作系统可以根据不同的标准进行分类。

以下是国际上常用的操作系统分类方法:1.目标计算机系统:大型机操作系统、小型机操作系统、微型机操作系统、嵌入式系统操作系统。

2.处理方式:批处理系统、分时操作系统、实时操作系统。

3.用户数量:单用户操作系统、多用户操作系统。

第7章-计算机系统结构(第五版)李学干


第7章 多处理机
图 7-4 通过消息传送系统连接的松耦合多处理机结构
第7章 多处理机
卡内基-梅隆大学设计的松耦合多处理机Cm*是层次型总 线式多处理机,其结构如图7 - 5所示。
第7章 多处理机
图 7-5 Cm*多处理机结构
第7章 多处理机
2. 多处理机机间互连的形式是决定多处理机性能的一个重 要因素。 1) 多个处理机、存储器模块和外围设备通过接口与公用总 线相连,采用分时或多路转接技术传送。
第7章 多处理机
图7 - 10给出了一个42×32的Delta网络,这种互连网络比 较适用于输入端数和输出端数不等或通信不规则的多处理机 中。
第7章 多处理机
图 7-10 42×32的Delta网络(榕树形互连网络的特例)
第7章 多处理机
4) 如果每个存储器模块都有多个访问端口,将分布在交叉 开关矩阵中的控制、转移和优先级仲裁逻辑分别移到相应存 储器模块的接口中,就构成了多端口存储器形式的结构。图 7- 11是一个四端口存储器形式的结构。
第7章 多处理机
图 7-25 嵌套并行进程的优先执行过程
第7章 多处理机
7.3.4
使用多处理机的主要目的是用多个处理机并发执行多 个任务来提高解题速度。
第7章 多处理机
7.4 多处理机的操作系统
7.4.1
在主从型操作系统中,管理程序只在一个指定的处理机 (主处理机)上运行。
1. 优点 2. 缺点 3. 适用场合
图 7-21 计算Z=E+A*B*C/D+F的并行程序数据相关图
第7章 多处理机
这条语句又派生出S4,分配给空闲的处理机1,而处理机 2接着执行S3。同样,等S4和S3都先后结束后,才满足JOIN语 句的汇合条件,经GOTO 50进入S5。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。



最短作业优先(SJF)
选择需要最小服务时间的线程作为最高优先级的作 业. 采用SJF调度算法过程如下:

所以平均等待时间为W=(450+75+800+200+0) /5=305


优先级调度 是基于外部分配的优先级来为进程/线程分配 CPU的. 常常使用静态优先级,意味着一个线程的优先 级只计算一次,并且从不会改变.
7.2 调度机制
调度程序 调度程序会将就绪进程/线程变为运行状态,也 会将运行线程/进程变为就绪状态,用排队计数 器来将进程置入就绪队列,分派器为进程分配 CPU,上下文切换器来将一个进程从CPU上移 出,并使另一个进程占用CPU运行.
调度程序
上下文切换 上下文切换就是将CPU寄存器上的信息保存 起来,并将另一进程的相应信息写入寄存器中, 描述表用来保存进程/线程没有运行时CPU寄 存器的一份拷贝. 调度程序中的上下文切换部分通常使用一般 的load 和store操作指令来保存寄存器内容, 需要(n+m)b*K个时间单元来保存处理器的状 态


在最简单的情形中,假设就绪队列被分配成J 个更小的子就绪队列,每个子就绪队列中的所 有进程都有相同的优先级,如果进程Pi的优先 级为k,那么它就位于就绪子队列k中,如果假 设队列间采用剥夺式优先级调度,那么子队列I 中的所有进程就可以在子队列2~ J中的进程 之前竞争CPU运行.
示例:Linux 调度机制
第7章 调度
前言 CPU调度指的是在一组就绪的进程/线程 中进行CPU分配.调度策略是作为操作系统进 程管理器的一部分而实现的.本章引进了机制 并考虑了两类通用的策略:非剥夺式和剥夺式 算法.
7.1 概述
调度策略:确定什么时候线程应该放弃使用 CPU和选择哪个就绪线程来执行. 调度机制:确定进程管理器如何分时复用CPU, 线程怎样被分配CPU和放弃CPU.
7.7 小结
调度程序负责在一组就绪进程间复用CPU,可 以通过计时器中断定期调用程序、或者通过 系统调用、其他的设备中断激活运行程序调 用,或者当运行进程通过执行yield指令或请 求资源自愿释放CPU时调用调度程序。 调度策略可以分为非剥夺式和剥夺式两种。 调度是CPU资源管理器的核心,它实现了在 一组进程间共享CPU。


轮转(RR) 要求在所有请求处理器的进程/线程之间,公平的分 配处理时间. 假设CPU空闲,并且有n个任意Pi(0<=i<n)进程已经 就绪,且进程按索引循序出现在就绪队列中,如果i<j, 即进程pi在进程pj之前,那么处理器就会按照 p0,p1,p2……的次序进行分配使用,然后在返回到 P0开始,如此往复循环下去.

非自愿的CPU共享:中断系统能够定期强制中 断任何任何进程的执行,即它能够强制一个进 程有效地执行yield指令,可以通过结合一个间 隔计时器设备来完成.
间隔计时器
IntervalTimer(){ InterruptCount= InterruptCount-1; if(InterruptCount<=0){ InterruptRequest=TRUE; InterruptCount=K;} } } SetInterval(<programmableValue){ K=<programmableValue>; InterruptCount=K; }
带静态优先级的示例负载


期限调度
指定的线程必须在某个时间期限之前执行完成. 带期限的示例负载
使用期限调度的几种可能调度
7.5

剥夺式策略
在剥夺式调度算法中,分配CPU给就绪队列中 具有最高优先级的线程,只要最高优先级线程 请求CPU,所有低优先级线程就要让出CPU. 当每次间隔计时器超时,即经过一个时间定量 时,调度程序也会被调度.

从图中,我们可以确定等待时间为: W(P0)=0 W(P1)= TTRnd(P0) =350 W(P2)= TTRnd(P1) =475 W(P3)= TTRnd(P2) =950 W(P4)= TTRnd(P3) =1200 所以平均等待时间为 W=(0+350+475+950+1200)/5=595

使用yield指令进行调度

非剥夺式调度程序:使用资源CPU共享的调度程序 建立依赖yield指令的系统会引起一个问题:进程可 能不是自愿地与另一个进程合作.一个进程不按时执 行yield指令,会阻塞所有其他进程使用处理器,直到 那个进程终止,或者它请求资源,才会让出处理器.如 果运行进程恰好在执行一个没有资源请求的无限循 环,那么这个问题就会变得尤为严重.则需要非自愿 CPU共享方式.


根据上图的调度算法,确定每个线程的周转时间。 TTRnd(P0)=µ (P0)=350 TTRnd(P1)=µ (P1)+ TTRnd(P0) =125+350=475 TTRnd(P2)=µ (P2)+ TTRnd(P1) =475+475=950 TTRnd(P3)=µ (P3)+ TTRnd(P2) =250+950=1200 TTRnd(P4)=µ (P4)+ TTRnd(P3) =75+350=1275 从而平均周转时间为: TTRnd=(350+475+950+1200+1275)/5 =850
Yield 指令 Yield 指令类似于一个过程调用指令,它保存 了下一条要执行的指令地址,然后分支ory[r]=pc; pc=memory[s]; }

当进程P1执行指令yield(r,s)时,参数r是由P1的进程 标识符相关的函数确定的地址,通常是保存在P1的 进程描述表中的一个地址.可通过当前的运行的哪个 进程来确定地址r.



运行着的线程可能由于下面4个原因而放弃CPU: 线程执行完成并离开状态. 线程请求一个资源,但资源管理器确定不能为与线程 关联的进程分配资源. 线程决定资源放弃使用CPU并返回到就绪状态. 线程不自愿地释放CPU,因为系统决定剥夺线程对 CPU的使用.


下图展示了单CPU系统中线程调度的系统视图.当一 个新的线程进入系统时,它被设置成就绪状态并链入 到调度程序的就绪队列中.在单CPU中,一次仅能有 一个线程使用CPU,也就是在某一个时刻仅有一个线 程处于运行状态. 线程调度

上下文切换

假设处理器有n个通用寄存器和m个状态寄存 器,保存一个寄存器内容需要b 个store操作, 每个 store 指令需要K个时间单位.在最坏的 情况下,当应用程序被复用时,至少会发生两对 (4个)上下文切换.在第一对中,操作系统需要 保存原来运行进程的上下文,然后分派器上的 上下文被加载.第二对是分配器被移出,然后被 选择的应用进程加载到CPU上执行.

在Linux1.0.9版本调度程序中,分派器时一个内核函
数,这个函数会被其他的系统函数所调用,也会在每 个系统调用和中断处理后被调用.每次分派器被调用 后,它执行周期性的工作,根据调度策略选择一个任 务来执行,并将任务分派到CPU上运行直到中断发生.

下列的有注释的代码段取自Linux版本1.0.9源代码. 它表示了调度程序的主流程,警告处理代码和调试代 码已经被移走了.

IntervalTimer()算法表示了间隔计时器设备 的行为,它对K进行倒计数,当计数为0时,引发 一个中断. SetInterval()表示了驱动程序可以发送
给设备的一个命令,用来改变命令之间的时间间隔.
7.3 策略选择


选择策略的准则是什么呢?
如何设计调度程序为竞争的进程分配CPU,以满足外 部的目标要求? 应该基于外部优先级来分配CPU? 应该尽可能地满足公平分配的原则吗? 应该试图让执行时间长(短)的线程有高的优先级吗?
时间量为50的RR调度


确定等待时间为
W(P0)=0 W(P1)=50 W(P2)= 100 W(P3)= 150 W(P4)=200


所以平均等待时间为
W=(0+50+100+150+200)/5=100


多级队列
是优先级调度的扩展,把所有进程中优先级相同的进 程都放在同一个单独的队列中. 调度程序在进程间分配CPU时,首先根据它们所在队 列的优先级选择,然后在优先级相同的队列中采用第 二种策略进行选择.

简化的处理器调度模型
7.4 非剥夺策略
非剥夺调度算法,允许任一进程/线程一旦被分 配处理器,它会一直使用完成逻辑任务,然后释 放CPU给调度程序. 先来先服务调度策略:线程的优先级时由排队 器根据所有到来线程的时间戳计算得到的,然 后让分配器选择时间戳最早的线程.

FCFS调度示例

假设就绪队列中有5个线程,它们进入就绪队 列的次序为P0,P1,P2,P3,P4.过程如图所示:


一个调度策略的选择标准将会部分取则于操作系统 的目标,这些目标可能强调进程的优先级、公平性、 整体资源使用情况、最大化吞吐量、平均或最大周 转时间、平均或最大响应时间、最佳的系统可靠性、 以及服务期限等不同要素。



最优调度:CPU分配给每个进程的时间数,枚举出 所有可能的调度次序。 该方法的不切实际的假定: 在服务当前的进程时,来了一个新的进程。 在每个进程运行之前,必须知道它的实际运行时间, 而这几乎时不可能的。 如果就绪队列中有n个进程,使用列举的方法,那 么算法的耗时量几乎到O(n² )。
示例:windows NT/2000/Xp的线程调度



示例:windows NT/2000/Xp中的线程调度程序也采用多级 反馈调度技术,其中试图给那些需要很快响应的线程以很高 的优先级,时间定量为时钟中断间隔的倍数,在大多数的 windows NT/2000/Xp机器中,时间定量大约为20~200毫秒 之间. 调度程序支持32个不同的调度级别,前16个高优先级队列称 为实时级队列,后面15个较高优先级队列称为可变级别队列, 最低优先级队列称为系统级队列. 调度程序是完全剥夺方式的,意味着只要一个线程就绪,就会 根据优先级被放入响应的运行队列中.
相关文档
最新文档