- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程调度网络项飞
淮海工学院计算机工程学院
实验报告书
课程名: 《操作系统原理》
题 目: 进程调度
班 级: 网络101
学 号: 111002131
姓 名: 项飞
一、实验目的
进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用语言编写一个进程调度模拟程序,使用所学过的调度算法模拟实现进程调度。本实验可加深对进程调度算法的理解。
二、实验内容
1、设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。
2、用FCFS和SJF两种调度算法实现模拟调度程序。
3、程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。
三、实验过程
流程图
数据结构
PCB:先来先服务算法中,设PCB的结构如下图所示,其中各数据项的含义如下:
ID arrtime sertime fintime turntime status ID:进程标识符号,取值1—5。
arrtime:进程到达时间,随机产生,范围1—5。
sertime:进程的服务时间,随机产生,范围5-10。
fintime:进程运行结束的时间,即完成时间
Status:进程状态R(运行),J(就绪),F(完成);初始时都处于就绪状态。
turntime:进程周转时间。
3、实验环境
Jdk 1.6
四、实验结果:
1:FCFS算法
2:SJF算法:
程序代码
import java.util.*;
import java.util.Queue;
import java.util.LinkedList;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;
@SuppressWarnings(unchecked)
class process implements Comparable
{
static boolean bo=false;
int arrtime;//到达时间
int sertime;//服务时间
int fintime;//结束时间
int turntime;//周转时间
int ID;//编号
String status;//状态
process(int a,int b,int ID,String status)//构造函数初始化对象
{
arrtime=a;
sertime=b;
this.ID=ID;
this.status=status;
}
public int compareTo(Object a)//重写Comparable接口中的方法
{
process f=(process)a;
if(bo)
{
return arrtime-f.arrtime;
}
else
{
return sertime-f.sertime;
}
}
public static process[] FCFS(process a[])//FCFS
{
bo=true;
Arrays.sort(a);//将五个作业按照到达时间排序
for(int i=0;ia.length;i++)
{
if(i==0)
{
a[i].fintime=a[i].arrtime+a[i].sertime;//第一个作业的结束时间为到达时间+服务时间
}
else
{
a[i].fintime=a[i-1].fintime+a[i].sertime;//起一个作业之后的作业结束时间为前一作业的结束时间+当前作业的服务时间
}
a[i].turntime=a[i].fintime-a[i].arrtime;//计算周转时间
}
return a;
}
public static process[] S
文档评论(0)