淮海工学院计算机科学系
实验报告书
课程名:《操作系统原理》
题 目: 进程调度
班 级: 信息101
学 号: 091003117
姓 名: 刘赛男
操作系统原理实验——进程调度实验报告
一、目的与要求
1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。
2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果)
3)于2013年4月2日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。
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
文档为doc格式