处理器调度的类型

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

系统并发度:正等待处理器处理的进程个数。(这里的表述和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. nop 中创建任务(Task)

    NopCommerce 中Task 原理是服务端开启线程定时跑. 1.在数据表ScheduleTask中添加一条数据, 2.自定义类,继承ITask 即可 using Data.Log4Net; us ...

  2. Linux系统修改静态ip

    查看所有网卡 ip信息 ipconfig 修改网卡文件 vim /etc/sysconfig/network-scripts/ifcfg-eno1(网卡名) 新增语句 IPADDR=192.168.1 ...

  3. vs2019下 c++中 dll 的新建和引用步骤

    在工作目录下新建文件夹 DllImportTest  ,作为解决方案所在目录 新建项目动态链接库(DLL)项目 DllDemo 位置  指定到 上面新建文件夹 DllImportTest 所在的路径, ...

  4. 实现分页数据请求的思路/Element UI(Plus)的分页模板(Vue3.x写法),(直接使用<script>引入vue.js)

    实现分页数据请求的思路/Element UI(Plus)的分页模板(Vue3.x写法),(直接使用<script>引入vue.js) 1. 效果图: 2.实现分页数据请求的思路:   分页 ...

  5. R8051_simulation

    1 下载 git clone https://github.com/risclite/R8051.git 2 编辑文件 mkdir work && mv sim tb flist .. ...

  6. 原因代码: 0x2000c 关机类型: 关机

    进程 C:\Windows\system32\silsvc.exe (XTKFSERVER2019) 由于以下原因已代表用户 NT AUTHORITY\SYSTEM 启动计算机 XTKFSERVER2 ...

  7. Android-AccessibilityService

    概述 AccessibilityService用于提供辅助功能服务,其在后台运行,并在触发AccessibilityEvents时由系统接收回调.此类事件表示用户界面中的某些状态转换,例如,焦点更改, ...

  8. Net6 托管服务、FluentValidation

    Net6 托管服务.FluentValidation 托管服务 1.场景,代码运行在后台.比如服务器启动的时候在后台预先加载数据到缓存,每天凌晨3点把数据导出到备份数据库,每隔5秒钟在两张表之间同步一 ...

  9. oracle内存管理

    关于内存管理 必须管理的内存结构是系统全局区(SGA)和实例程序全局区(instance PGA).Oracle 数据库支持各种内存管理方法,这些方法由初始化参数设置选择. 自动内存管理 Oracle ...

  10. 解决ubuntu pycharm 中文输入法问题

    参考连接:https://blog.csdn.net/frighting_ing/article/details/122725205