<Operating System>进程调度
在多道程序环境下,进程数目往往多于处理机数目,致使它们争用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完成的。
三级调度
一个作业从提交开始直到完成,往往要经历下述三级调度:
- 高级调度:又称为作业调度或宏观调度。其主要功能是根据一定的算法,从输入的一批任务(作业)中选出若干个作业(从磁盘的作业后备队列中选择作业调入内存),分配必要的资源并建立与作业相对应的进程,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程(如输入/输出进程),最后把它们的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。
- 中级调度:又称为中程调度,引入中级调度的主要目的是为了提高内存的利用率和系统的吞吐量。内存中不能有太多的进程,把进程从内存移到外存,当内存有足够空间时,再将合适的进程换入内存,等待进程调度。中级调度实际上就是存储器管理中的对调功能。
- 低级调度:又称为进程调度、短程调度,它决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。在批处理,分时,实时三类系统中,进程调度必须被配置,因而是一种最基本的调度。
低级调度的功能:
- 保存处理机的现场信息
- 按某种算法选取进程
- 把处理器分配给进程
在上述三个调度中,低级调度是各类操作系统必备的功能。在纯粹的分时操作系统或实时操作系统中,通常不需要高级调度。一般的操作系统都具有高级调度和低级调度。而功能完善的操作系统,为了提高系统主存的利用率和作业吞吐量,引进中级调度。
进程调度方式
- 非剥夺方式:分派程序一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。
- 剥夺方式:又称抢先式调度。当进程/线程正在处理器上运行时,系统可根据所规定的原则剥夺分配给此进程/线程的处理器,并将其移入就绪列队,选择其他进程/线程运行。有两种常用的处理器剥夺原则,一是高优先级进程/线程可剥夺低优先级进程/线程;二是当运行进程/线程的时间片用完后被剥夺,在动态改变进程/线程优先级的系统中,经常会出现这样的情况
剥夺式的开销比非剥夺式的开销通常要大,很多操作系统适用两种策略结合使用的方式,内核关键程序是非剥夺式的,用户级别是剥夺式的。
进程调度算法
先来先服务(FCFS)
策略:该算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。这是一种非剥夺式算法。
性能:算法容易实现,效率不高,只顾及作业等候时间,没考虑作业要求服务时间的长短,不利于短作业而优待了长作业。有利于CPU繁忙型作业而不利于I/O繁忙型作业。
短进程优先(SPF)
策略:该算法从就绪队列中选出“下一个CPU执行期”最短的进程,为之分配处理机。这是一种非剥夺式调度算法。
性能:算法易于实现,效率不高(相对于剥夺式算法),弱点是需要预先知道进程所需的CPU时间,而这个时间只能靠估计,估计值很难精确,若估计过低,系统可能提前终止该进程。忽视了进程等待时间,会出现饥饿现象。由于缺少剥夺机制,对分时、实时处理很不理想。
最短剩余时间优先(SRT)
策略:把SJF算法改为抢占式的调度算法。当一个进程正在执行时,一个新进程进入就绪状态,如果新进程需要的CPU时间比当前正在执行的进程剩余下来还需的CPU时间短,SRT强行赶走当前正在执行进程。
性能:不像FCFS偏向长进程,也不像轮转法那样产生额外的中断,从而减少了开销。另一方面,它必须记录过去的服务时间,从而又增加了开销。从周转时间上看,较SPF有更好的性能。
最高响应比优先(HRN)
策略:同时考虑每个进程的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的进程投入执行。
响应比R定义:
R=(W+T)/T=1+W/T
T——该进程估计需要的执行时间
W——进程在就绪队列中的等待时间
性能:吞吐量小于SPF。另外由于每次调度之前要计算响应比,系统开销也要相应增加。
最高优先权优先(FPF)
策略:该算法总是把处理机分配给就绪队列中具有最高优先权的进程。常用以下两种方法来确定进程的优先权:
- 静态优先级:在创建进程时确定的,在整个运行期间不再改变。依据有:进程类型、进程对资源的要求、用户要求的优先权。
- 动态优先级:基于某种原则,使进程的优先权随时间改变而改变。
轮转法(RR)
- 时间片轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的处理机而运行。
- 多级反馈轮转法:多级反馈队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。
引起进程调度的原因
- 正在执行的进程执行完毕。这时,如果不选择新的就绪进程执行,将浪费处理机资源
- 执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等状态
- 执行中进程调用了P原语操作,从而因资源不足而被阻塞或调用了V原语操作激活了等待资源的进程队列
- 执行中进程提出I/O请求后被阻塞
- 在分时系统中时间片已经用完
- 在执行完系统调用等系统程序后返回用户进程时,这时可看作系统进程执行完毕,从而可调度选择一新的用户进程执行
以上都是在不可剥夺方式下的引起进程调度的原因。在CPU执行方式是可剥夺时,就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。
<Operating System>进程调度的更多相关文章
- DBCC CHECKDB 遭遇Operating system error 112(failed to retrieve text for this error. Reason: 15105) encountered
我们一个SQL Server服务器在执行YourSQLDBa的作业YourSQLDba_FullBackups_And_Maintenance时遇到了错误: Exec YourSQLDba.Maint ...
- The World's Only Advanced Operating System
The World's Only Advanced Operating System
- Unable to open the physical file xxxx. Operating system error 2
在新UAT服务器上,需要将tempdb放置在SSD(固态硬盘)上.由于SSD(固态硬盘)特性,所以tempdb的文件只能放置在D盘下面,而不能是D盘下的某一个目录下面. ALTER DATABASE ...
- CREATE FILE encountered operating system error 5(Access is denied.)
这篇博文主要演示"CREATE FILE encountered operating system error 5(Access is denied.)"错误如出现的原因(当然只是 ...
- Linux启动报错missing operating system
用UltraISO制作了一个Red Hat Enterprise Linux Server release 5.7系统的U盘启动盘,然后在一台PC上安装,由于安装过程中在干别的事情,有些选项没有细看. ...
- Learning Roadmap of Robotic Operating System (ROS)
ROS Wiki: http://wiki.ros.org/ Robots Using ROS Textbooks: A Gentle Introduction to ROS Learning ROS ...
- Full exploitation of a cluster hardware configuration requires some enhancements to a single-system operating system.
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Operating System Desi ...
- Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION An SMP operating syst ...
- u盘安装CENTOS后,启动missing operating system ,只能用U盘才能启动系统
好久之前就想把家里闲置的那台老的不能再老的笔记本换成linux的,用来学习 从N久之前用光盘安装的时候发现光驱坏掉了之后就没有再装过,最近又想安装于是就试了U盘安装 U盘安装过程也很简单,只需要制作一 ...
随机推荐
- Windows版的各种Python库安装包下载地址与安装过程
在用Python开发时(Windows环境),会碰到需要安装某个版本的第三方库,为了以后查找.安装方便,总结如下: windows版的各种Python库安装包下载地址:http://www.lfd.u ...
- 模板:正则替换之后生成标准的php文件 然后include该文件
http://www.360doc.com/content/12/0808/16/10388890_229034643.shtml
- JQuery Mobile入门——设置后退按钮文字(转)
http://www.tuicool.com/articles/AZnYVz JQuery Mobile入门——设置后退按钮文字 时间 2013-01-09 20:24:28 CSDN博客原文 h ...
- TCP、UDP、IP 协议分析(转)
http://blog.chinaunix.net/uid-26833883-id-3627644.html
- [OC笔记] protocol之我的见解
OC中的protocol就是和JAVA中interface差不多的东西,但是又不是完全一样的.这个protocol常用来实现委托,也就是自己不实现,当事件产生的时候去回调委托者. 让委托者去执行响应的 ...
- linux python升级和ipython的安装
==CentOS 6.X 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本.所以需要进行版本升级.由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python ...
- 如何将数据库中的表导入到PowerDesigner中
1. 打开PowerDesigner12,在菜单中按照如下方式进行操作file->Reverse Engineer->DataBase 点击后,弹出 New Physical ...
- MySQL数据库设置远程访问权限方法总结
1,设置访问单个数据库权限 mysql>grant all privileges on test.* to 'root'@'%'; 说明:设置用户名为root,密码为空,可访问数据库test 2 ...
- 5ucms后台调用标签
<%=Rs.Data(1,i)%>栏目 <%=Rs.Data(2,i)%>标题 <%=Rs.Data(3,i)%>推荐 <%=Rs.Data(4,i)%> ...
- 《笨办法学C》笔记之基础语法
这篇笔记不怎么系统,只记录自己比较生疏的知识 变量定义 类型 定义 格式化符号 备注 整数 int %d 长整型 long %ld 单精度浮点 float %f 双精度浮点 double %f 字符 ...