进程调度实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<name;

cout<<" ";

cout<cputime;

cout<<" ";

cout<needtime;

cout<<" ";

cout<priority;

cout<<" ";

switch(p->process)

{

case ready:cout<<"ready"<

case execute:cout<<"execute"<

case block:cout<<"block"<

case finish:cout<<"finish"<

}

相关文档
最新文档