刘赛男 091003117 信息101实验一:进程调度实验报告书

发布时间:2013-06-05 21:08:09   来源:文档文库   
字号:

淮海工学院计算机科学系

实验报告书

课程名操作系统原理

目: 进程调度

级: 信息101

号: 091003117

名: 刘赛男


操作系统原理实验——进程调度实验报告

一、目的与要求

1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。

2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)

3)于201342以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。

2 实验内容或题目

1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。

2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。

3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。

4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。

3 实验步骤与源程序

#include "stdio.h"
#include"stdlib.h"
struct PCB
{
 int pid;   
 int rr;    
 int time;   
 char sta;   

 struct PCB *next;   
};
struct PCB pcb1,pcb2,pcb3,pcb4,pcb5,*tail,*head,*rp;

init()
{
 int i,time;
 pcb1.pid = 1;
 pcb2.pid = 2;
 pcb3.pid = 3;
 pcb4.pid = 4;
 pcb5.pid = 5;
 pcb1.rr =pcb2.rr =pcb3.rr =pcb4.rr =pcb5.rr = 0;
 pcb1.sta = pcb2.sta = pcb3.sta = pcb4.sta = pcb5.sta = 'w';
 printf("请输入时间片p1需要运行的时间:");
 scanf("%d",&time);
 pcb1.time = time;
 printf("请输入时间片p2需要运行的时间:");
 scanf("%d",&time);
 pcb2.time = time;
 printf("请输入时间片p3需要运行的时间:");
 scanf("%d",&time);
 pcb3.time = time;
 printf("请输入时间片p4需要运行的时间:");
 scanf("%d",&time);
 pcb4.time = time;
 printf("请输入时间片p5需要运行的时间:");
 scanf("%d",&time);
 pcb5.time = time;
 pcb1.next=&pcb2;
 pcb2.next=&pcb3;
 pcb3.next=&pcb4;
 pcb4.next=&pcb5;
 pcb5.next=&pcb1;
 head = &pcb1;
 tail = &pcb5;
}
void printf1()
{
 printf("+---------------|---------------|---------------|---------------+\n");
 printf("|\tpid\t|\trr\t|\ttime\t|\tSTA\t|\n");
 printf("|---------------|---------------|---------------|---------------|\n");
}
printf2()
{
 printf("processes p%d running\n",head->pid);
 printf1();
 printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",head->pid,head->rr,head->time,head->sta);
 printf("|---------------|---------------|---------------|---------------|\n");
 rp=head;
 while(rp!=tail)
 { 
  rp=rp->next;
  printf("|\t%d\t|\t%d\t|\t%d\t|\t%c\t|\n",rp->pid,rp->rr,rp->time,rp->sta);
  printf("|---------------|---------------|---------------|---------------|\n");
 } 
}
operation()

 int flag=1;
 while (flag<=5)
 {
   head->rr ++;
  if ((head->rr==head->time)||(head->time==0))
  {
   tail->sta='w';
   head->sta='f';
   printf2();
   head=head->next;
   tail->next=head;
   flag++;
  }
  else
  {
   tail->sta='w';
   head->sta='r';
   printf2();
   tail=head;
   head=head->next;
  }   
 }
}
void main()

 init();  
 printf("this is the begin state :\n");
 printf2();     
 operation();   
}

4 测试数据与实验结果(可以抓图粘贴)

5 结果分析与实验体会

本文来源:https://www.2haoxitong.net/k/doc/1fe3b625f111f18583d05a69.html

《刘赛男 091003117 信息101实验一:进程调度实验报告书.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式