OS调度算法常用摘要
一、常见的批处理作业调度
1.先来先服务调度算法(FCFS):就是依照各个作业进入系统的自然次序来调度作业。这样的调度算法的长处是实现简单,公平。
其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不惬意,由于短作业等待处理的时间可能比实际执行时间长得多。
2.短作业优先调度算法(SPF): 就是优先调度并处理短作业。所谓短是指作业的执行时间短。
而在作业未投入执行时。并不能知道它实际的执行时间的长短。因此须要用户在提交作业时同一时候提交作业执行时间的预计值。
3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满。于是提出HRN,选择响应比最高的作业执行。响应比=1+作业等待时间/作业处理时间。
4. 基于优先数调度算法(HPF):每个作业规定一个表示该作业优先级别的整数,当须要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。
5.均衡调度算法,即多级队列调度算法
基本概念:
作业周转时间(Ti)=完毕时间(Tei)-提交时间(Tsi)
作业平均周转时间(T)=周转时间/作业个数
作业带权周转时间(Wi)=周转时间/执行时间
响应比=(等待时间+执行时间)/执行时间
二、进程调度算法
1.先进先出算法(FIFO):依照进程进入就绪队列的先后次序来选择。
即每当进入进程调度,总是把就绪队列的队首进程投入执行。
2. 时间片轮转算法(RR):分时系统的一种调度算法。
轮转的基本思想是。将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流执行一个时间片。
当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度。同一时候。进程调度又去选择就绪队列中的一个进程。分配给它一个时间片,以投入执行。
3. 最高优先级算法(HPF):进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占式最高优先级算法。
4. 多级队列反馈法:几种调度算法的结合形式多级队列方式。
三、空暇分区分配算法
1. 首先适应算法:当接到内存申请时。查找分区说明表,找到第一个满足申请长度的空暇区,将其切割并分配。此算法简单,能够高速做出分配决定。
2. 最佳适应算法:当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空暇区,将其进行切割并分配。此算法最节约空间,由于它尽量不切割到大的空暇区。其缺点是可能会形成非常多非常小的空暇分区,称为“碎片”。
3. 最坏适应算法:当接到内存申请时,查找分区说明表。找到能满足申请要求的最大的空暇区。该算法的长处是避免形成碎片,而缺点是切割了大的空暇区后,在遇到较大的程序申请内存时,无法满足的可能性较大。
四、虚拟页式存储管理中的页面置换算法
1.理想页面置换算法(OPT):这是一种理想的算法。在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被訪问的内存页面予以淘汰。
2.先进先出页面置换算法(FIFO):选择最先进入内存的页面予以淘汰。
3. 近期最久未使用算法(LRU):选择在近期一段时间内最久没有使用过的页,把它淘汰。
4.最少使用算法(LFU):选择到当前时间为止被訪问次数最少的页转换。
五、磁盘调度
1.先来先服务(FCFS):是按请求訪问者的先后次序启动磁盘驱动器。而不考虑它们要訪问的物理位置
2.最短寻道时间优先(SSTF):让离当前磁道近期的请求訪问者启动磁盘驱动器,即是让查找时间最短的那个作业先运行,而不考虑请求訪问者到来的先后次序。这样就克服了先来先服务调度算法中磁臂移动过大的问题
3.扫描算法(SCAN)或电梯调度算法:总是从磁臂当前位置開始。沿磁臂的移动方向去选择离当前磁臂近期的那个柱面的訪问者。
假设沿磁臂的方向无请求訪问时,就改变磁臂的移动方向。在这样的调度方法下磁臂的移动类似于电梯的调度。所以它也称为电梯调度算法。
4.循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置開始沿磁臂的移动方向去选择离当前磁臂近期的哪个柱面的訪问者。假设沿磁臂的方当用于访问没有请求,然后再返回到最外,的气缸工作存取请求的最小数目。
版权声明:本文博主原创文章。博客,未经同意不得转载。
OS调度算法常用摘要的更多相关文章
- iOS - Mac OS X 常用快捷键
Mac OS X 常用快捷键 1)快捷键图标: Escape 为 esc 键 无 Eject 键时用电源键代替 Space Bar 为空格键 2)基本快捷键: command + x 剪切文字 com ...
- OS中常用的调度算法总结 (转)
http://blog.chinaunix.net/uid-25132162-id-361291.html 一.常见的批处理作业调度算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的 ...
- Mac OS 终端常用命令【搜藏】
基础概念 OS X 采用的Unix文件系统,所有文件都挂在跟目录“ /” 下面,所以不在要有Windows 下的盘符概念.比如什么“C:”你在桌面上看到的硬盘都挂在 /Volumes 下.比如接上个叫 ...
- Mac OS 终端常用命令基础
基础概念 OS X 采用的Unix文件系统,所有文件都挂在跟目录" /" 下面,所以不在要有Windows 下的盘符概念.比如什么"C:"你在桌面上看到的硬盘都 ...
- python os模块 常用命令
python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令 1. os.name()——判断现在正在实用的平台,Window ...
- Python OS模块常用功能 中文图文详解
一.Python OS模块介绍 OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作. 可以查看OS模块的帮助文档: >>> i ...
- 【python】os模块常用命令
python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令 1. os.name()——判断现在正在实用的平台,Window ...
- python os模块常用命令
python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令 1. os.name()——判断现在正在实用的平台,Window ...
- [转]python os模块 常用命令
python编程时,经常和文件.目录打交道,这是就离不了os模块.os模块包含普遍的操作系统功能,与具体的平台无关.以下列举常用的命令 1. os.name()——判断现在正在实用的平台,Window ...
随机推荐
- [Django实战] 第5篇 - 用户认证(修改密码)
上一篇我们实现了用户认证系统的登录模块,这一篇实现修改密码模块. 同样地,我们首先得给修改密码创建表单(forms.py): class ChangepwdForm(forms.Form): oldp ...
- python转换时间戳和日期时间格式的转换
[steven@txzxp2 seccenter]$ python Python 2.7.5 (default, Jul 8 2013, 09:48:59) [GCC 4.8.1 20130603 ...
- eclipse Maven构建的project无法公布lib到tomcat的解决方法
问题: eclipse导入基于Maven的web项目时,公布到tomcat中.发现lib文件夹及jar包没有公布过去. 解决方式: eclipse中,选择项目属性Properties --> D ...
- 欧拉计划·第四题
题目4:找出由两个三位数乘积构成的回文. 一个回文数指的是从左向右和从右向左读都一样的数字.最大的由两个两位数乘积构成的回文数是9009 = 91 * 99. 找出最大的有由个三位数乘积构成的回文数. ...
- ios学习:AVAudioPlayer播放音乐文件及读取ipod库中的音乐文件
首先要导入AVFoundation框架及 #import <AVFoundation/AVFoundation.h>头文件 注意:要在真机上调试 下面是ipad上的调试效果 下面是代码,代 ...
- 访何红辉:谈谈Android源码中的设计模式
最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计 ...
- csdn android视频播放器开发
http://blog.csdn.net/column/details/myvideo.html
- PVPlayer的实现方式
关于opencore下多媒体播放,在mediaserver进程里面仅仅有一行代码: MediaPlayerService::instantiate(); 这行代码的作用是初始化一个MediaPlaye ...
- BAT笔试试题常见试题总结含答案(持续更新。。。)
(1)试题例如以下: class A { int a; short b; int c; char d; }; class B { double a; short b; int c; char d; } ...
- C语言里为何会有“2+2=5”的结果
写这篇原创文章是由于看到了极客中的一篇文章<有趣各种编程语言实现2+2=5>,当中C语言是这样实现的: int main() { char __func_version__[] = &qu ...