处理器调度的类型

处理器调度的目的是为了满足系统的目标,将进程分配到处理器上执行。

系统并发度:正等待处理器处理的进程个数。(这里的表述和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的更多相关文章

  1. dRMT: Disaggregated Programmable Switching, SIGCOMM17

    Reference: dRMT, SIGCOMM 2017 今年的SIGCOMM17会议上,Cisco System和MIT的团队针对RMT模型现有的问题,合作发表了这篇"dRMT: Dis ...

  2. Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012

    [Info   @09:03:33.737] ====================================================================[Info   @ ...

  3. 实验二 用C语言表示进程的调度

    实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...

  4. linux设备驱动归纳总结(四):4.单处理器下的竞态和并发【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-67005.html linux设备驱动归纳总结(四):4.单处理器下的竞态和并发 xxxxxxxxxx ...

  5. java 多线程——quartz 定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  6. java 多线程——一个定时调度的例子

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  7. PgSQL · 特性分析 · 谈谈checkpoint的调度

    在PG的众多参数中,参数checkpoint相关的几个参数颇为神秘.这些参数与checkpoint的调度有关,对系统的稳定性还是比较重要的,下面我们为大家解析一下,这要先从PG的数据同步机制谈起. P ...

  8. Java多线程-线程的调度(休眠)

    Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率. 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制. ...

  9. Java多线程-线程的调度(合并)

    线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法. join为非静态方法,定义如下:void join(): ...

  10. Java多线程-线程的调度(守护线程)

    本文转自http://www.cnblogs.com/linjiqin/p/3210004.html 感谢作者 守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true), ...

随机推荐

  1. JS中函数的length以及arguments的length如何得到?

    function a(x,y){} a.length // 2 function b(x,y=2,z){} b.length // 1 function c(x,...args){} c.length ...

  2. [Oracle19C 数据库管理] 加载和传输数据库

    移动数据的通用架构 数据泵data pump(impdp, expdp),借助DBMS_DATAPUMP存储过程,可以进行表的导出导入,行记录的导出导入,表空间的导出导入或者整个schema的导出导入 ...

  3. Echarts实现不均匀刻度的方法,自定义刻度(转)

    原文地址 今天突然有个我们的咨询公司找我问一个echarts问题,这个问题确实值得一解决,很有意思. 问题是这样的.数据中有很多低于100的数值,但是最高值却能达到14000. data = [93. ...

  4. Git克隆项目到本地

    刚进公司实习,居然不知道Git怎么克隆项目到本地,组长丢给我一个TFS账号(Azure DevOps就是以前的TFS) 1.首先在本地选择一个文件目录,选择Git Bash Here 打开一个Git ...

  5. HTML基础知道了解

    第1章 Html介绍 1.Html和CSS的关系 1.1 学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1.2 HT ...

  6. python setup.py install 安装、删除。

    # python install 安装.卸载 python setup.py install --record files.txt cat files.txt | xargs rm -rf

  7. java乱码处理

    package com.zhouhe.util; import java.io.UnsupportedEncodingException; /** * 自定义工具类 * @Author zhouhe ...

  8. [node]启动一个简单的node接口

    来自知乎. 需要先安装一个node,安装过程不表. 新建文件: nodeServer.js // 复制这个文件到目录,再输入一下命令: // npm i express // node nodeSer ...

  9. 关于promise经典面试题

    这里涉及到同步和异步的问题

  10. ConcurrentHashMap在Java8中的变化

    增加红黑树这个存储结构 在Java8中,为什么要增加红黑树这种数据结构来进行存储,而不是全部使用链表来进行存储呢? 1.因为攻击者可以构造大量具有相同hashCode的内容,使其全部放在同一个列表中, ...