1 / 14
文档名称:

操作系统进程调度实验报告.doc

格式:doc   大小:124KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统进程调度实验报告.doc

上传人:neryka98 2017/8/2 文件大小:124 KB

下载得到文件列表

操作系统进程调度实验报告.doc

文档介绍

文档介绍:实验目的
无论是批处理系统、分时系统还是实时系统,用户进程数一般都大于处理机数,这将导致用户进程互相争夺处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一进程,以使之执行。进程调度是处理机管理的核心内容。本实验要求采用调度算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、进程队列、阻塞队列、就绪队列等的概念。并了解CPU分配资源的方式。
实验要求
调试一个进程调度程序,对程序进行注释,理解每条语句的用意,掌握CPU对进城进程分配资源的方式,以加深对进程概念及进程调度算法的理解。
实验内容
:
采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法(将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理)。  

每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程ID、进程IP、进程指令(优先级数)、运行时间、阻塞时间、阻塞状况、占用资源情况等。  
进程的优先数及需要的运行时间可以事先人为地指定,即输入进程的执行指令。
进程的运行时间以时间片为单位进行计算。  
每个进程的状态可以是就绪 、运行和阻塞三种状态之一。 
 
资源包括资源ID、资源状态(是否被占用)、使用资源的进程ID、进程指针以及使用时间。
程序规定CPU资源数为1,既所有进程只能请求同一资源,如果所请求资源已被占用,则进程进入阻塞队列等待资源。

CPU包括执行中的进程指针、就绪队列、阻塞队列、CPU资源、进程数、阻塞进程数以及CPU运行时间。
就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。  如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。  
进行调度程序后打印进程所有运行的进程的进程信息,以便进行检查。 
实验算法流程
开始
输入进程指令
初始化进程ID
就绪队列空
结束
资源占用
进程运行
进程加入阻塞队列
进程加入就绪队列
进程阻塞
进程运行时间结束
进程到达释放进程
进程加入就绪队列
实验程序清单
#include<iostream>
#include<>
#include<>
#include<>
#include<>
using namespace std;
const int MANDLEN =50;
/////////////////////////////////////////////////////////////////////////////////////
//
// PROCESS
//
/////////////////////////////////////////////////////////////////////////////////////
class Process
{
friend class CPU;
protected:
static int init_ID;
int ID;
char runText[MANDLEN]; //进程指令
int IP; //进程IP
bool ISuseSource; //进程是否占用资源
bool ISblocked; //进程是否阻塞
int unitTime; //CPU执行时间
int blockTime; //进程阻塞时间
public:
static void RandID(); //初始化静态成员变量init_ID()
Process(); //构造函数
int getID(); //获取进程ID
int getIP(); //获取进程IP
void setIP(int); //设置进程IP
void Runed(); //输出进程IP
int getUnittime(); //获得单位时间
int getBlcoktime(); //获得阻塞时间
void setBlocktime(int); //设置阻塞时间
void setUnittime(int); //设置单位执行时间
char getResult(int); //获得进程执行结果
char* getRuntext(); //获得进程执行指