华北科技学院计算机系综合性实验
 
实 验 报 告
 
 
课程名称           操作系统C                   
实验学期    2008      2009    学年 第  2  学期
学生所在系部           计算机系                
年级    2006    专业班级      网络xxxxxxxxx  
学生姓名    xxxxxx       学号  2006070XXXXXXX 
任课教师               杜杏菁                  
实验成绩                                      
 
 
 
计算机系制

实验报告须知
1、  学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。
2、  学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。
3、  教师应该填写的内容包括:实验成绩、教师评价等。
4、  教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、  未尽事宜,请参考该课程的实验大纲和教学大纲。

《 操作系统C 》课程综合性实验报告
 
开课实验室:      基础实验室1                                  2009 5 20
实验题目
进程调度算法模拟
一、实验目的
通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。
二、设备与环境
1. 硬件设备:PC机一台
2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java 等编程语言环境。
三、实验内容
1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如先来先服务)的调度。
2)分析程序运行的结果,谈一下自己的认识。
四、实验结果及分析
1.实验步骤
  选择一种进程调度算法(先来先服务),然后进行编码。
2.实验代码
#include <iostream.h>
#define n 20
typedef struct
{
 int id;          //进程名
 int atime;         //进程到达时间
 int runtime;       //进程运行时间
}fcs;
void main()
{
 int amount,i,j,diao,huan;
    fcs f[n];
 cout<<"input a number:"<<endl;
 cin>>amount;
 for(i=0;i<amount;i++)
 {
  cout<<"请输入进程名,进程到达时间,进程运行时间:"<<endl;
  cin>>f[i].id;
  cin>>f[i].atime;
  cin>>f[i].runtime;
 
 }
 for(i=0;i<amount;i++)         //按进程到达时间的先后排序
 {                               //如果两个进程同时到达,按在屏幕先输入的先运行
  for(j=0;j<amount-i-1;j++)
  { 
   if(f[j].atime>f[j+1].atime)
   {
    diao=f[j].atime;
    f[j].atime=f[j+1].atime;
    f[j+1].atime=diao;
   
     huan=f[j].id;
    f[j].id=f[j+1].id;
    f[j+1].id=huan;
   }
  }
 }
 for(i=0;i<amount;i++)
 {
  cout<<"进程:"<<f[i].id<<""<<f[i].atime<<"开始"<<","<<""
   <<f[i].atime+f[i].runtime<<"之前结束。"<<endl;
  f[i+1].atime=f[i].atime+f[i].runtime;
 }
}
3.实验结果
1)在进程到达时间不同的情况下的显示结果
  
2)在进程中到达时间中有若干个到达时间一致时的显示结果,不妨设所有的到达时间都一致
4.实验结果分析
   通过实验结果,知道先来先服务的进程调度算法是哪个进程调度的到达时间最早,哪个进程就先被调用;如果到达时间相同的话,以哪个进程先被写入为准来进行调度,先被写入的进程先被调度。
5.实验心得
   首先,进程调度算法中先来先服务调度算法简单。所以算法代码不长。但通过此次试验,我认识到,解决问题不是以代码的长短为标准。其实用很少的代码区解决一个复杂的问题反而是最好的代码。
其次,我发现,编程前一定要掌握原理。我就是在知道先来先服务的调度算法的原理之后才知道如何去编码。
再次,编程一定要考虑周到。一开始,我只认为该程序不就是对到达时间进行排序嘛。后来,才发现,这样一来,进程名和进程运行时间就不能和进程到达时间保持一致了。
最后,我发现,我编码能力还有待提高。如进程名,我就不知道怎么用字母表示。
 
 
 
教 师 评 价
评定项目
A
B
C
D
评定项目
A
B
C
D
算法正确
 
 
 
 
界面美观,布局合理
 
 
 
 
程序结构合理
 
 
 
 
操作熟练
 
 
 
 
语法、语义正确
 
 
 
 
解析完整
 
 
 
 
实验结果正确
 
 
 
 
文字流畅
 
 
 
 
报告规范
 
 
 
 
题解正确
 
 
 
 
其他:
 
 
 
 
评价教师签名: