当前位置:文档之家› 操作系统进度调度算法实验

操作系统进度调度算法实验

进程调度算法模拟
一、实验目的
通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。
二、设备与环境
1.硬件设备:PC机一台
2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java等编程语言环境。
三、实验内容
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
a[(acount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
char[] b = new char[50];
char[] c = new char[50];
char[] e = new char[50];
int t = 0;
int acount = 0;
int bcount = 0;
int ccount = 0;
int ecount = 0;
int is = 0;
进程每运行一个时间片,优先数减3。
(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。
(5)分析程序运行的结果,谈一下自己的认识。
四、实验结果及分析
1.实验代码
package tc;
public class Begin
is = i + 1;
}
char[] cx = new char[is];
for (int i = 0; i < is; i++) {
cx[i] = c[i];
}
String cs = new String(cx);
int num = Integer.parseInt(cs);
return num;
break;
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
e[(ecount++)] = d.charAt(i);
}
}
for (int i = 0; a[i] != 0; i++) {
is = i + 1;
}
char[] ax = new char[is];
public class Xchange
{
public static String getFirstString(String d)
{
char[] a = new char[50];
char[] b = new char[50];
char[] c = new char[50];
char[] e = new char[50];
if (d.charAt(i) != ' ') {
b[(bcount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) == ' ')
continue;
t = i;
b[(bcount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) == ' ')
continue;
t = i;
break;
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
e[(ecount++)] = d.charAt(i);
}
}
for (int i = 0; b[i] != 0; i++) {
is = i + 1;
}
char[] bx = new char[is];
for (int i = 0; i < is; i++) {
c[(ccount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) == ' ')
continue;
t = i;
break;
}
for (int i = t; i < d.length(); i++) {
}
}
2.实验结果
3.实验结果分析
先来先服务FCFS进程调度算法采用非抢占方式,实现方法比较简单,但使短作业和实时性要求较高的作业等待的时间过长;高优先级,此处采用抢占方式,另外还加入了时间片轮转方法;短作业优先方法是一种非抢占方式,没有考虑长作业和实时任务的要求。
4.实验心得
通过这次实验,我在以前学过的知识的基础上有了提高,学到了很多新知识:比如将用户作业和就绪进程按提交的顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度。调度时从后备队列中选择若干优先权最高的个作业进入内存;或从就绪队列中选择优先权最高的进程,将处理机分配给它。调度时根据估计的运行时间首先调度运行占用CPU时间最短的作业或进程
if (d.charAt(i) != ' ') {
c[(ccount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) == ' ')
continue;
t = i;
int t = 0;
int acount = 0;
int bcount = 0;
int ccount = 0;
int ecount = 0;
int is = 0;
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
a[(acount++)] = d.charAt(i);
break;
}
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) == ' ')
continue;
t = i;
break;
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
break;
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
c[(ccount++)] = d.charAt(i);
} else {
t = i;
break;
}
}
for (int i = t; i < d.length(); i++) {
(1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。
(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:
进程标识数ID。
进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。
进程已占用CPU时间CPUTIME。
进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。
if (d.charAt(i) == ' ')
continue;
t = i;
break;
}
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
b[(bcount++)] = d.charAt(i);
} else {
t = i;
char[] e = new char[50];
int t = 0;
int acount = 0;
int bcount = 0;
int ccount = 0;
int ecount = 0;
int is = 0;
for (int i = t; i < d.length(); i++) {
if (d.charAt(i) != ' ') {
{
public static void main(String[] args)
相关主题