计算机综合实验报告
课程名称 操作系统
实验学期 至 学年 第 学期
学生所在系部
年级 专业班级
学生姓名 学号
任课教师
实验成绩
信息科学与技术系制
实验报告须知
1 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。
2 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3 教师应该填写的内容包括:实验成绩、教师评价等。
《 操作系统 》课程实验报告
实验室:小型机实验室(二教217) 2010 年 5 月 4 日
实验题目
进程调度算法模拟
一、实验目的
1掌握处理机调度及其实现;
2 掌握进程状态及其状态转换;
3 掌握进程控制块PCB及其作用
二、设备与环境
1. 硬件设备:PC机或终端一台
2. 软件环境:(说明安装的操作系统环境,如Windows操作系统或者Linux操作系统,介绍相应的开发工具,如vs或vi,gcc,gdb,C等相关的开发工具或平台)。
三、实验内容
1用C语言实现采用先来先服务进程调度算法对10个进程的调度。
2 用C语言实现采用高优先权进程调度算法对10个进程的调度。
3用C语言实现采用短作业优先进程调度算法对10个进程的调度。
四、实验结果及分析
1.实验步骤
= 1 \* GB2 ⑴根据要求大致确定需要用到的函数以及实现方法
= 2 \* GB2 ⑵写出三个文件的代码
= 3 \* GB2 ⑶编译,修改语法错误
= 4 \* GB2 ⑷链接执行,观察结果,查看有无逻辑错误
2.相关数据结构定义
typedef struct node
{
char name[MAXSIZE];//进程名称
int state;//0表示进程处于就绪态,1表示进程处于等待态
int prio;//优先级
int time;//需要在cpu上处理的时间
struct node* next;//链指针
}PCB;
3.实验代码(要求加注释)
void insert1(PCB *p,PCB *queue)
{
PCB *q;
q=queue;
while(q->next)
q=q->next;
q->next=p;
p->next=NULL;
}//先来先服务把进程p插入就绪或等待队列的尾部
void creat1(int n)
{
PCB *p;
int i;
ready=new PCB;
ready->next=NULL;
wait=new PCB;
wait->next=NULL;//带头结点的队列
run=NULL;
for(i=1;i<=n;i++)
{
p=new PCB;
cout<
cin>>p->name;
cout<
p->state=rand()%2;
cout<state;
cout<
if(p->state==0)
insert1(p,ready);//当state为0时,插入到就绪队列中
else
insert1(p,wait);//否则插入到等待队列中
}
}
void runing()
{
PCB *p;
cout << "当前执行进程:";
if(!run)
cout<
else
cout<name<
if(!ready->next)
cout<
else
for(p=ready->next;p;p=p->next)
cout<name<
cout<
if(!wait->next)
cout<
else
for(p=wait->next;p;p=p->next)
cout<name<
cout<
}
void FCFS(int n)
{
srand((int)time(0));
int state_change;
PCB *p;
cout<
creat1(n);