- 156
- 0
- 约4.48千字
- 约 9页
- 2016-08-22 发布于重庆
- 举报
计算机操作系统实验---进程调度
操作系统实验报告
--进程调度
计科02-8 王长青
05年4月17日
计算机操作系统实验
——进程调度
一.实验目的
进程调度是处理机管理的核心内容。通过本实验可以加深理解有关进程控制块、进程队列的概念,并体会和了解优先数调度算法的具体实施办法。
二.程序功能
本程序使用VC++编译调试,用于实现进程优先数调度的模拟。主要包含三个模块:1、主界面:用于显示进程调度的过程。2、数据录入模块:用于获取进程的初始值,其中有三种获取方式,手动输入方式、随即生成方式和从文件中读去数据的方式。当用户在主窗口中点击“开始”菜单项时即可打开数据录入对话框,用户通过这三种方式之一均可完成数据的录入。3、进程控制模块:主要实现创建新的进程,就绪队列的管理,完成队列的管理,进程的调度。
三.实验原理
(1)本程序采用优先数调度算法对进程进行调度,每个进程可有三个状态,即:就绪状态,运行状态,完成状态。并假设初始状态为就绪状态。这三种状态的转换情况如右图:
(2)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数以及进程需运行的时间片数的初始值均由用户给定(通过数据录入模块完成)。
(3)程序通过设置一个定时器来实现时间片的轮转,时间片的大小是1秒,在定时器消息的响应函数中从用户录入的数据中读取一个创建进程,将其加入到就绪队列中,然后进行调度和执行。在调度函数中,对于遇到优先数一致的情况,采用FIFO策略解决。
(4)在优先数算法中,进程每执行一次,优先数减3,进程还需要运行的时间数减1。
四.详细设计
(1)设计进程控制块PCB结构:
struct PCB
{ int pid; //进程号
int pri; //进程优先数
int time; //进程所需运行时间
int status; // 进程状态 0就绪,1 执行,-1完成
};
(2)将进程的各种操作封装在类CProMoni中,该类的定义如下:
class CProMoni
{
public:
CProMoni();
virtual ~CProMoni();
void InsertRQ(PCB* p); //将p所指的进程插入到就绪队列中
void InsertFQ(PCB* p); //将p所指的进程插入到完成队列中
void ProSchedule(); //进程调度函数
void ProRun(); //运行函数
void Display(CDC* pDC); //以表格形式输出运行过程
bool GetFinishFlag();
bool OpenLogFile(); //打开日志文件
void CloseLogFile(); //关闭日志文件
bool WriteLogToFile(); //向日志文件中写入数据
private:
PCB *m_pRunning; //指向当前运行的进程
CPtrList m_readyList; //就绪队列
CPtrList m_finishList; //完成队列
bool m_finish; //完成标志
CString m_LogFileName; //日志文件名
CStdioFile m_LogFile; //日志文件
public:
int m_clock; //时钟序列
};
(3)主要成员函数的实现:
void CProMoni::InsertRQ(PCB* p)
{ //将p插入到就绪队列中
POSITION pre,pos=m_readyList.GetHeadPosition();
PCB *q;
while(pos!=NULL)
{
pre=pos;
q=(PCB*)m_readyList.GetNext(pos);
if(q-pri p-pri)
{
m_readyList.InsertBefore(pre,p);
return;
}
}
if(pos==NULL)
{
m_readyList.AddTail(p);
}
}
void CProMoni::ProSchedule()
{//进程调度
PCB *p;
if(m_pRunning==NULL)
{
if(m_readyList.IsEmpty())
{
m_finish=true;
return;
}
else
{
p=(PCB*)m_readyList.RemoveHead();
m_pRunning=p;
m_pRunning-status=1;
}
}
else
{
if(!m_readyLis
您可能关注的文档
- 解决windows不能玩QQ游戏的方法.doc
- 解决“硬盘安装器”确定按钮不能点击的问题.doc
- 解决两步计算的问题以内数的认识导学案.doc
- 解决声卡驱动安装失败问题(精选).doc
- 解决侠诺FVR080多WAN口路由器无法登录工行网银的方法.doc
- 解决Win无线网络共享【ICS服务无法启动】和【启用Internet连接共享】选项消失的问题以及无线网络共享步骤.docx
- 解决导致Windows系统越来越慢的简便方法.doc
- 解决小型局域网中xp系统的机器不能共享资源的问题.doc
- 解决忘记用户登录密码的问题.doc
- 解决或缓解重茬病害新方案(精选).doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)