华北科技学院计算机系综合性实验

 

实 验 报 告

 

 

课程名称            操作系统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

算法正确

 

 

 

 

界面美观,布局合理

 

 

 

 

程序结构合理

 

 

 

 

操作熟练

 

 

 

 

语法、语义正确

 

 

 

 

解析完整

 

 

 

 

实验结果正确

 

 

 

 

文字流畅

 

 

 

 

报告规范

 

 

 

 

题解正确

 

 

 

 

其他:

 

 

 

 

评价教师签名: