OSIDP-单处理器调度-09
处理器调度的类型
处理器调度的目的是为了满足系统的目标,将进程分配到处理器上执行。
系统并发度:正等待处理器处理的进程个数。(这里的表述和08里面的不同,以这里为准。主要是懒得改,见谅= =)
长程调度程序决定哪个用户程序可以进入内存,因而它控制了系统并发度。
何时创建一个新进程由系统并发度相关管理程序决定。
允许哪个程序进入内存中基于先来先服务(FCFS)原则、优先级、计算密集型和I/O密集型等各种因素决定。
中程调度主要是进程在内存和外存之间的换入换出,与系统并发度有关。
短程调度程序也称分派器(dispatcher),用于决定将哪个进程交由处理器执行。调用短程调度程序的事件有:
1.时钟中断。
2.I/O中断。
3.OS 调用。
4.信号。
调度算法
短程调度的主要目的是优化系统的某一方面行为而分配处理器时间。
调度规则根据两个维度可以分为面向用户和面向系统的。另一种分法是是否直接与性能相关。
面向用户
-性能相关
周转时间:一个进程从提交到完成之间的时间间隔。
响应时间:从提交一个请求到开始接收响应之间的时间间隔。
最后期限:当进程完成的截止期限可以被指定时,尽量最大化满足最后期限的进程所占百分比。
-其他
可预测性:进程的执行情况和预测的情况不能相差太大。
面向系统
-性能相关
吞吐量:单位时间内完成的进程数量最多。
处理器利用率:处理器处于忙状态的时间所占的百分比。
-其他
公平性:所有进程一般情况下应该被公平对待。
强制优先级:高优先级进程可以抢占低优先级。
平衡资源:尽可能地使计算机各种资源得到充分利用。
对于优先级的使用,可以将就绪态或者阻塞态(或者两种都使用)进程根据优先级划分成不同的等待队列,优先调用高优先级队列中的进程。
选择函数(selection function)决定选择哪个就绪进程下次执行。
决策模式(decision mode)分为非抢占式和抢占式两种。抢占式可避免单个进程长时间使用处理器。
服务时间:进程在处理器上执行完成需要的时间。
周转时间(turnaround time):进程从创建到执行完成花费的时间。
**归一化周转时间(normalized turnaround time):周转时间和服务时间的比值,最小情况为1。
先来先服务(FCFS)策略:最简单,适用于长进程。缺点是不利于I/O密集型进程。
轮转策略:周期性产生时钟中断,中断时,当前运行的进程调入就绪队列,根据FCFS选择另一个就绪进程执行。也称时间片(slicing)技术。时间片最好稍微大于一次典型交互花费的时间。缺点是计算密集型进程使用了大部分时间片,I/O密集型进程的性能降低。
虚拟轮转法(virtual round robin, VRR):当阻塞的I/O进程解除阻塞时,将其放入一个辅助队列中,进程置为就绪态。调度时,该辅助队列的优先级高于一般就绪队列。
最短进程优先(shortest process next, SPN):非抢占策略。原则是选择预计处理时间最短的进程交由处理器执行。难点在于需估计进程所需处理时间。缺点是经常出现短进程时,长进程会出现饥饿现象。
所需时间一般通过多次同一进程获取。
\(S_{n+1}=\frac{1}{n}\sum_{i=1}^{n}T_{i}\)
\(T_i\) 是进程的第\(i\)次运行花费的时间。\(S_i\) 为第\(i\)个进程的预测值。另一种计算方式为:
\(S_{n+1}=\frac{1}{n}T_{n}+\frac{n-1}{n}S_{n}\)
另一称为指数平均法(exponential averaging)的方式:
\(S_{n+1}=\alpha T_{n}+(1-\alpha)S_{n}\)
其中 \(0 \lt \alpha \lt 1\),用于确定距离现在较近或者较远的数据的相对权值。\(\alpha\) 越大,较近的数据的权重越大。
最短剩余时间(shortest remainning time, SRT):在SPN中增加了抢占机制。选择预估剩余时间最短的进程执行。性能优于SPN。缺点是长进程可能饥饿。
最高响应比优先(HRRN):选择\(R\)值最大的就绪进程执行。\(w\)为等待处理器时间,\(s\)为预估的服务时间。
\(R=\frac{w+s}{s}\)
反馈法:根据优先级划分成不同的等待队列,进程刚进入内存时放入最高优先级队列中。运行中的进程被抢占或者中断时调入到比先前所在队列低一级别的队列中(如果在优先级最低队列中,则依然放入此队列中)。改进是随着队列优先级的降低,分配的时间片增加;进程随着等待时间的增加而提高其优先级。
OSIDP-单处理器调度-09的更多相关文章
- dRMT: Disaggregated Programmable Switching, SIGCOMM17
Reference: dRMT, SIGCOMM 2017 今年的SIGCOMM17会议上,Cisco System和MIT的团队针对RMT模型现有的问题,合作发表了这篇"dRMT: Dis ...
- Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012
[Info @09:03:33.737] ====================================================================[Info @ ...
- 实验二 用C语言表示进程的调度
实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...
- linux设备驱动归纳总结(四):4.单处理器下的竞态和并发【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-67005.html linux设备驱动归纳总结(四):4.单处理器下的竞态和并发 xxxxxxxxxx ...
- java 多线程——quartz 定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java 多线程——一个定时调度的例子
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- PgSQL · 特性分析 · 谈谈checkpoint的调度
在PG的众多参数中,参数checkpoint相关的几个参数颇为神秘.这些参数与checkpoint的调度有关,对系统的稳定性还是比较重要的,下面我们为大家解析一下,这要先从PG的数据同步机制谈起. P ...
- Java多线程-线程的调度(休眠)
Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率. 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制. ...
- Java多线程-线程的调度(合并)
线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法. join为非静态方法,定义如下:void join(): ...
- Java多线程-线程的调度(守护线程)
本文转自http://www.cnblogs.com/linjiqin/p/3210004.html 感谢作者 守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true), ...
随机推荐
- 数据库可视化---grafana的简单使用
简介 grafana可以连接各种数据源, 并通过给定的SQL语句做数据的定时统计和web大屏展示,也可以对外提供API进行展示, 类似这样 内含多种不同类型图表, 可以涵盖很多种监控需求, 报表可视化 ...
- js 浮点数加、减、乘、除。
1.浮点数加法运算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split("." ...
- java位运算分析
java位运算 java位运算在平常的编码过程中十分场景,通常框架都替我们封装好了,我对于细节方面反而一知半解,下面就重新梳理一下. 优秀的框架使得我们轻松,也使得我们距离真相越来越远. 位运算种类 ...
- 解决Ubuntu下的的“system program problem detected”问题
解决Ubuntu下的的"system program problem detected"问题 1.删除crash文件 sudo rm /var/crash/*2.关闭pop up功 ...
- 指针和指针运算符一起时的运算规则(比如*p++和*++p的区别)
接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1). 1.++i和i++的区别 如清单1(注意代码中的注释): #include <stdio.h> ...
- SPI接口
串行外设接口(Serial Peripheral Interface)是一种同步外设接口,它可以使单片机与各种外围设备以串行方式进行通信以交换信息.SPI最早是Motorola公司提出的全双工三线同步 ...
- Datax初使用
为了掌握大数据采集技术,自学习了datax的使用 简介: DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.H ...
- Java基础之基本运算符
基本运算符 算数运算符:+.-.*./.%.++.-- 赋值运算符:= 关系运算符:>.<.>=.<=.==.!= instanceof 逻辑运算符:&&.|| ...
- (jmeter笔记)jmeter监控服务器资源
jmeter版本:5.2.1 jdk版本:1.8.0_191 监控服务器的CPU/memory.IO.硬盘等信息 1.下载jmeter-plugins-manager-1.4.jar 插件,解压之后把 ...
- 【Java】zuul
报错 com.netflix.zuul.exception.ZuulException: Hystrix Readed time out 解决办法,zuul模块的yml配置文件增加 ribbon: C ...