《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
来源:互联网 发布:windows isa 编辑:程序博客网 时间:2024/05/20 18:53
操作系统系列
学习至此,发现很多学了但很久没用的知识,久而久之,慢慢遗忘。等哪天还需要的话,却发现已经忘得差不多了,即使整理了文档(word等),还是得从头再学一遍。读研第一学期,发现很多东西都可以从博客上学习到,也有不少博主呕心沥血整理了挺多有用的博文。于是,本人借此契机,也慢慢开始整理一些博文,不断改进完善中。整理博文(IT)有如下目的:
- 首要目的:记录“求学生涯”的所学所悟,不断修改,不断更新!(有读者的互动)
- 其次目的:在这“开源”的时代,整理并分享所学所悟是一种互利的行为!
博文系列:操作系统课程的相关实验
- 1.先来先服务FCFS和短作业优先SJF进程调度算法
- 2.时间片轮转RR进程调度算法
- 3.预防进程死锁的银行家算法
- 4.动态分区分配算法
- 5.虚拟内存页面置换算法
- 6.磁盘调度算法
6个实验相关的代码下载地址:http://download.csdn.net/detail/houchaoqun_xmu/9865648
-------------------------------
先来先服务FCFS和短作业优先SJF进程调度算法
一、概念介绍和案例解析
FCFS调度算法
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
周转时间=作业完成时刻—作业到达时刻;
带权周转时间=周转时间/服务时间;
平均周转时间=作业周转总时间/作业个数;
平均带权周转时间=带权周转总时间/作业个数;
- 案例剖析:
- 案例剖析2:采用FCFS调度算法时的调度性能
- SJF调度算法:
- 该算法对长作业不利,如作业C的周转时间由10增至16,其带权周转时间由2增至3.1。更严重的是,如果有一长作业(进程)进入系统的后备队列(就绪队列),由于调度程序总是优先调度那些(即使是后进来的)短作业(进程),将导致长作业(进程)长期不被调度。
- 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)会被及时处理。
- 由于作业(进程)的长短只是根据用户所提供的估计执行时间而定的,而用户又可能会有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。
二、实验介绍
- 问题描述:
设计程序模拟进程的先来先服务FCFS和短作业优先SJF调度过程。假设有n个进程分别在T1,… ,Tn时刻到达系统,它们需要的服务时间分别为S1,… ,Sn。分别采用先来先服务FCFS和短作业优先SJF进程调度算法进行调度,计算每个进程的完成时间、周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。
- 程序要求:
---- 进程个数n;每个进程的到达时间T1, … ,Tn和服务时间S1, … ,Sn;选择算法1-FCFS,2-SJF。
---- 要求采用先来先服务FCFS和短作业优先SJF分别调度进程运行,计算每个进程的周转时间和带权周转时间,并且计算所有进程的平均周转时间和带权平均周转时间。
---- 输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等。
---- 输出:要求输出计算出来的每个进程的周转时间、带权周转时间、所有进程的平均周转时间以及带权平均周转时间。
三、程序设计和开发
- 程序设计:
- Initial()进行初始化。
- input()对到达时间和服务时间进行输入。
- get_firstProcess()获得第一个进程,FCFS和SJF算法的实现相同。
- FCFS()对算法进行处理。
- SJF()对算法进行处理。
- choose_Algorithm();对实现算法的类别进行选择:具有容错性特征。
- FCFS:
- SJF:
四、实验结果分析
- FCFS算法:
- SJF算法:
五、实验源码
- 《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
- 【计算机操作系统】先来先服务FCFS和短作业优先SJF进程调度算法
- 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法
- 先来先服务FCFS和短作业优先SJF进程调度算法
- 先来先服务算法(FCFS)和 短作业优先算法(SJF)
- 进程调度算法 短作业优先 SJF
- java_实现先来先服务(FCFS)短作业优先算法(SJF)
- 好开心呀,能用自己学习知识去做作业了,也算是解决一些问题吧。操作系统实践作业:短作业优先(SJF)和先来先服务算法(FCFS)
- 操作系统短作业优先(SJF)调度算法
- Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先
- Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先
- 操作系统FCFS,SJF进程调度(C++)
- 算法/调度算法/ShortJobFirst(SJF)短作业优先调度算法
- FCFS和SJF进程调度算法的实现
- Java简单实现进程调度算法 FCFS和SJF
- 短作业优先算法-SJF
- 短作业优先(SJF)算法
- Go编写调度算法FCFS和SJF
- Unity3D游戏开发之编辑器扩展程序开发实例
- 目前最流行的几种数据库比较
- 字节和字符
- MySql计划事件开启
- java基础 记录
- 《操作系统》 先来先服务FCFS和短作业优先SJF进程调度算法相关计算及实验
- C语言?Go语言?还是CGO语言!
- 设计模式-中介者模式
- codeforces——432A—— Choosing Teams
- elasticsearch Getting start
- Doctor项目中曾经查过的资料
- js变量声明提升
- python 多线程详解
- JavaScript抽奖翻牌游戏/定义数组保存传入参数数组,避免操作传入数组/洗牌动作队列洗牌及翻牌效果