操作系统也谈"算法"
前言:
近来在准备校招的笔试面试,复习到操作系统时感觉概念性的东西比较多,不过对于以下的几类算法还是有必要做个小小总结。
【作业调度算法】
先来先服务(FCFS, First Come First Serve)是最简单的调度算法,按先后顺序进行调度。
短作业优先(SJF, Shortest Job First)又称为“短进程优先”SPN(Shortest Process Next);这是对FCFS算法的改进,其目标是减少平均周转时间。
优先级算法(Priority Scheduling)是多级队列算法的改进,平衡各进程对响应时间的要求。
时间片轮转法(Round Robin)是让每个进程在就绪队列中的等待时间与享受服务的时间成正比例。
场景模拟:
甲乙丙丁4人先后到银行办理业务,此时银行只有开放一个业务办理窗口,且工作人员尚未上班。
1)FCFS:即谁排前面谁先办理业务,不管他业务需要花费多长时间。所以此时的办理顺序自然是:甲->乙->丙->丁
2)SJF:假如甲乙丙丁办理业务的时间分别是:10,2,3,5。则按照SJF乙办理的业务时间比较短,故最先办理,最后办理的顺序为:乙->丙->丁->甲
3)PS:不知道甲乙丙丁的具体办理业务时间,不过此时因为银行有规定办理对象优先权为:白金会员(丁) >青铜会员(丙) >普通会员(乙)> 非会员(甲)。所以此时,虽然丁最后才到达,不过他将是第一个办理的人,此时新的办理顺序为:丁->丙->乙->甲;
4)RR:假设同(2),此时假设时间片为1,则甲乙丙丁依次办理且每次办理时间“1”之后必须轮到下一位业务办理者。此情况下虽然也是甲最先办理,不过只能办理“1”,可知最后完成业务的顺序为:乙->丙->丁->甲。
【页面调度算法】
1)最佳置换算法(OPT)
2)先进先出置换算法(FIFO)
3)最近最久未使用算法(LRU)
4)时钟置换算法(CLOCK)
情景模拟:
系统为某进程分配了3个物理块,页面的走向为:7 0 1 2 0 3 0 4 2 3 .则各算法的缺页次数:
1)6
2)9
3)8
4)7
【磁盘调度算法】
1)先来先服务算法(FCFS)
2)最短寻道时间优先算法(SSTF)
3)扫描算法(SCAN)
4)循环扫描算法(CSCAN)
情景模拟:
有一架智能电梯(可通过设置以上4种算法中的任一种进行操控)处于第50层,此时有10人同时进入。他们先后分别按了:12,34,7,19,81,23,52,88,92,1.依据以上 不同的算法电梯应该怎么运行?
1)->12-34-7-19-81-23-52-88-92-1
2)->52-34-23-19-12-7-1-81-88-92
3)->52-81-88-92-34-23-19-12-7-1
4)->52-81-88-92-1-7-12-19-23-34
End!
操作系统也谈"算法"的更多相关文章
- 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树
http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...
- 【操作系统】银行家算法实现(C语言)
[操作系统]银行家算法实现(C语言) 注意:本人编码水平很菜.算是自己的一个总结.可能会有我还没有发现的bug.如果有人发现后可以指出,不胜感激. 1.银行家算法: 我们可以把操作系统看作是银行家,操 ...
- 浅谈算法和数据结构: 十 平衡查找树之B树
前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种 ...
- 操作系统页面置换算法(opt,lru,fifo,clock)实现
选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...
- 转 浅谈算法和数据结构: 十 平衡查找树之B树
前面讲解了平衡查找树中的2-3树以及其实现红黑树.2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key. 维基百科对B树的定义为"在计算机科学中,B树(B-tre ...
- 操作系统,银行家算法模拟实现(Windows 环境 C++)
计算机操作系统课设需要,写了两个下午的银行家算法(陷在bug里出不来耽误了很多时间),参考计算机操作系统(汤子瀛) 实现过程中不涉及难度较大的算法,仅根据银行家算法的思想和步骤进行实现.以下为详细步骤 ...
- 操作系统 页面置换算法LRU和FIFO
LRU(Least Recently Used)最少使用页面置换算法,顾名思义,就是替换掉最少使用的页面. FIFO(first in first out,先进先出)页面置换算法,这是的最早出现的置换 ...
- 操作系统,时间片轮转算法的C语言实现Round Robin
#include "windows.h" #include <conio.h> #include <stdlib.h> #include <fstre ...
- 浅谈算法——AC自动机
在学习AC自动机之前,你需要两个前置知识:Trie树,KMP 首先我们需要明白,AC自动机是干什么的(用来自动AC的) 大家都知道KMP算法是求单字符串对单字符串的匹配问题的,那么多字符在单字符上匹配 ...
随机推荐
- ASP.NET后台获取cookie中文乱码解决办法
项目中有一功能,需要从一个页面前台使用cookie保存json数据,并传递到第二个页面.要在第二个页面中获取cookie中的json的值,没有任何处理情况下,获取的字符串为乱码,就连符号都是乱码的.百 ...
- mac系统使用内置的 PHP
从 OS X 10.0.0 版本开始,PHP 作为 Mac 机的标准配置被提供.在默认的 web 服务器中启用 PHP,只需将 Apache 配置文件 httpd.conf 中的几行配置指令最前面的注 ...
- wcf的诡异问题
最近在做工作流设计器用的silverlight 使用wcf服务. 过程中遇到了两个奇怪的问题. 1. 出现整型参数无法传递到服务器的情况 2.出现反序列化失败的情况. 经过仔细排查发现 每个属性都有一 ...
- git push ERROR: missing Change-Id in commit message footer
今天上传代码时候报告错误:$ git push origin HEAD:refs/for/branch*Counting objects: 7, done.Delta compression usin ...
- Linux system函数详解
system 功能:system()函数调用"/bin/sh -c command"执行特定的命令,阻塞当前进程直到command命令执行完毕 原型 int system(cons ...
- tkinter 类继承的三种方式
tkinter class继承有三种方式. 提醒注意这几种继承的运行方式 一.继承 object 1.铺tk.Frame给parent: 说明: self.rootframe = tk.Frame(p ...
- js 判断一组日期是否是连续的
文章同步自个人博客:http://www.52cik.com/2016/07/10/consecutive-dates.html 这是群里一朋友问的问题,当时我说判断下 day 是否相邻即可,后来细想 ...
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- 从setTimeout谈JavaScript运行机制
从setTimeout说起 众所周知,JavaScript是单线程的编程,什么是单线程,就是说同一时间JavaScript只能执行一段代码,如果这段代码要执行很长时间,那么之后的代码只能尽情地等待它执 ...
- JVM内存管理------JAVA语言的内存管理概述
引言 内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑.不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓 ...