进程调度实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津大学仁爱学院
操作系统
实验报告
实验类型:必修实验日期:2014年4月18日实验名称:进程调度
实验地点:二实验楼504
学生姓名:李帅帅指导教师:张磊
班级:计科一班
计算机科学与技术系
实验报告内容:
1)实验目的
用c语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。
2)实验器材和设备
硬件:二实验楼504计算机
开发工具:Microsoft Visual C++ 6.0
3)实验任务
本实验模拟单处理器系统的进程调度,加深对进程的概念及进程调度算法的理解。用c语言编写和调试一个进程调度的算法程序,有一些简单的界面,能够运行,仿真操作系统中进程调度的原理和过程。通过对调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度
4)实验原理
无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。
基本状态:1.等待态:等待某个事件的完成;
2.就绪态:等待系统分配处理器以便运行;
3.运行态:占有处理器正在运行。
运行态→等待态往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
等待态→就绪态则是等待的条件已满足,只需分配到处理器后就能运行。
运行态→就绪态不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
就绪态→运行态系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态
5)实验过程描述
a)打开Microsoft Visual C++ 6.0 ,创建工程。
b)根据要求用 c语言代码实现应用程序,并调试完成。
c)运行程序,根据提示输入相应的字符。
d)输入实验测试内容,并观察执行窗口显示的过程。
e)重复c、d过程,认真体会领悟。
6)实验代码
// lss.cpp : Defines the entry point for the console application. //
#include"stdafx.h"
#include
#include
#include
#include
#define P_NUM 3
#define P_TIME 50
enum state{
ready,
execute,
block,
finish
};
struct pcb{
char name[4];
int priority;
int cputime;
int needtime;
int count;
int round;
state process;
pcb * next;
};
pcb * get_process()
{
pcb *q;
pcb *t;
pcb *p;
int i=0;
t=(struct pcb *)malloc(sizeof(pcb));
p=(struct pcb *)malloc(sizeof(pcb));
cout<<"Input Name and Time"< while(i { q=(struct pcb *)malloc(sizeof(pcb)); cin>>q->name; cin>>q->needtime; q->cputime=0; q->priority=P_TIME-q->needtime; q->process=ready; q->next=NULL; if(i==0) { p=q; t->next=q; } else { q->next=t->next; t=q; q=p; } i++; } return p; } void display(pcb * p) { cout<<"name"<<" "<<"cputime"<<"needtime"<<" "<<"priority"<<" " <<"state"< while(p) { cout< cout<<" "; cout< cout<<" "; cout< cout<<" "; cout< cout<<" "; switch(p->process) { case ready:cout<<"ready"< case execute:cout<<"execute"< case block:cout<<"block"< case finish:cout<<"finish"< }