下载此文档

操作系统实验报告.docx


文档分类:高等教育 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
操作系统课程设计实验报告
姓名
学号
年级
专业
班级
实验题目
进程调度算法实现
实验目的
用高级语言编程和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。
进程调度时进程管理的主要内容之一,通过设计,编制,调试一个简单的进程调度模拟系统,对进程调度,进程运行状态变换加深理解和掌握,模拟计算机操作系统的进程调度,建立进程控制块PCB,要包含有关进程的描述信息,控制信息以及资源信息,模拟系统根据PCB感知进程的存在和通过PCB中包含的各项变化。掌握进程所处的状态以达到控制进程活动的目的。要实现进程的状态及其转换,进程的创建于撤销,进程的阻塞与唤醒,用P,V原语操作实现进程互斥。
实验内容和步骤
实现进程相关数据结构的创建和查看功能。实现多种进程调度算法:先来先服务算法,时间片流转法,多极反馈轮转法等。实现对执行进程的阻塞,对待进程唤醒等功能。实现相关队列在进程调度中的动态变化过程。
简化的代码如下
#include<iostream>
#incluede<queue>//调用STL中的优先队列
using namespace std;
//定义一个PCB进程类
class PCB
{
public:
char name[10];//进程的名字
int runtime;//该进程的运行时间
int priority;//进程的优先级
char state;//该进程的状态
PCB *next;//指向下个进程的指针
void print()const//输出进程的信息
{
cout<<”(name=”<<name<<”,runtime=”<<runtime<<”,state=”<<state
<<”,priority=”<<priority<<”)”<<endl;
}
};
class PCBSortCriterion{//优先队列的优先准则类
public:
bool operator()(const PCB &p1,const PCB &p2)const //仿函数确定优先准则
{
return (<);
}
};
PCB *pcb=new PCB[number];//一个PCB的数组用来保存就绪进程
PCB *p1=new PCB[number];//一个PCB的数组用来保存已经结束的进程
cout<<endl;
PCB p;//一个PCB型的变量,用来保存队首元素
int i;
for(i=0;i<=number-1;i++)//建立进程信息
cout<<”请输入pcb[“<<i<<”]的信息!”<<endl;
cout<<“以(name,runtime,state(初始化R),priority)”格式输入!<<endl;
cin>>pcb[i].name;
cin>>pcb[i].runtime;
cin>>pcb[i].state;
cin>>pcb[i].priority;
cout<<endl;
}
typedef priority_queue<PCB,vector<PCB>,PCBSortCriterion>pQueue;//PCBSortCriterion为
//优先级准则的优先队列
pQueue q;//优先队列pQueue的一个对象,对这个队列进行主操作
Temp;//优先队列平pQueue的一个对象,是q的一个拷贝对象,作为实现打印输出的一个中//间变量
For(int j=0;j<=number-1;j++)//将进程入队建立优先队列
{
(pcb[j]);
}
//数次进程控制块的初始化状态信息
cout<<”进程控制块的初始化状态信息为:”<<endl;
temp=q;
while(!())
{
p=();
();
();
}
cout<<endl;
int n=0;//进程执行的次数
m=0;//完成进程的个数
while(!())//对进程进行调度
{
cout<<”第”<<++n<<”次运行”;
p=();
cout<<().name<<”!”<<endl;
-=1;
-=1;
();
if(!=0)//表明该进程还未执行完,继续入队进程操作
{
(p);
}
else{//表明该进程已执行完,设置其状态为Z,并将其保存到p

操作系统实验报告 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人分享精品
  • 文件大小499 KB
  • 时间2017-11-26