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), ...
随机推荐
- Nginx负载均衡4种方案
1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下:http{ upstream sampleapp { ...
- nmap扫描结果保存 xml to html for windows
首先 Nmap扫描443端口并保存为xml报告输出 nmap -T5 -Pn -p 443 -iL C:\Users\loki\Desktop\443_Scan.txt -oX C:\Users\lo ...
- python测试IP地址是否ping通
import timeimport osdef pingComputer(): for i in range(1, 256): host = '192.168.2.' + str(i) status1 ...
- IEC104
IEC10X协议源码 https://github.com/airpig2011/IEC104 一.源码编译 下载源代码并解压 进入文件夹下test目录,对main.c进行修改 我们使用套接字来实现服 ...
- 时间函数strtotime的强大
转载:php的strtotime举例-lsstarboy-ChinaUnix博客 1.上周日午夜 strtotime("last sunday"); 2.本周日午夜 strt ...
- Finance财务软件(支持多账套专题)
在2.0.0.7版本中新增了账套管理的UI控制 在2.0.0.5版本中支持多账套 客户端登录的时候可以选择登录账套 在服务端Finance.exe进程所在目录新增进程FinanceConsole.ex ...
- window 画工业图软件
1.autoCAD 2.visio 3.CorelDraw 4.DrawIO
- JS学习-setTimeout()
setTimeout() 超时限制-节流 /* interval(),在setInterval()时间间隔到期后调用. * timeout()setTimeout()计时器到期后调用. * run() ...
- node_exporter安装
1.node_exporter下载 node_exporter-1.3.1.linux-amd64.tar.gz tar -xzvf node_exporter-1.3.1.linux-amd64.t ...
- WDA学习(22):WDA PLG,Application跳转传参
1.15 WDA PLG,Application跳转传参 本实例Outbound Plugs页面跳转传参,URL跳转Application传参. 1.创建Component:Z_TEST_WDA_L6 ...