<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上Python2和3如何兼容
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有,转载请联系作者获得授权.想学习Python ...
- 放假回来啦!!小技能:一个div不给width,怎么让它居中捏?`(*∩_∩*)′
答案是:这个div没有浮动的话,就用text-align: center; 有的话...我也不知道了
- Git学习(一)——Git介绍与安装
一.Git诞生 Linus在1991年创建了Linux,从此,Linux系统不断发展,成为最大的服务器系统软件. 2005年,Linus用C编写了一个分布式版本控制工具--Git. 二.集中式vs分布 ...
- 启用与关闭 Ad Hoc Distributed Queries
在数据库里执行以下脚本: 启用: exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Dis ...
- Twitter的分布式自增ID算法snowflake (Java版)
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种 ...
- 用POI读取具有任意合并单元的excel数据
maven依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ ...
- django TEMPLATES
?: (1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dic ...
- Archlinux 上 Nginx + PHP + Mariadb + DiscuzX2.5 安装小记
因为不好找下载集成服务器工具,而且他们自己又打包了一份 php 之类的程序,本身系统就已经有 php 还有数据库什么的了再搞一份受不了,最后选择了手动配置…… 这是一个在 Archlinux 上手动从 ...
- WPF Image控件的Source属性是一个ImageSource对象
1.固定的图片路径是可以的,如下: <Image Source="../test.png" /> 2.绑定的Path是一个String类型的图片路径,而实际情况它需要的 ...
- nfs:环境搭建
准备环境 通过VirtualBox创建两台虚拟机client1和client2,这两台虚拟机和物理主机组成一个网络.将物理主机作为NFS的服务端,虚拟机client1和client2作为NFS的客户端 ...