- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统课程设计03
网 络 教 育 学 院
继 续 教 育 学 院
计算机会计课程设计
函授站(学习中心) 株 洲 .
会 计 专业 12春 级(春、秋)层次 专科 .
学 生 姓 名 : .
摘 要
本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,对Hannoi塔程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
关键词:操作系统 XX算法 XX语言
一、课程设计题目:进程/作业调度
二、实现要求:
1. 建立作业的数据结构描述
2. 使用两种方式产生作业/进程: (a)自动产生 (b)手工输入
3. 在屏幕上显示每个作业/进程的执行情况。
4. 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可以认为过一个时间单位 (b)响应WM_TIMER (本实验采用b方法)
5. 计算并显示一批作业/进程的周转时间,平均周转时间,带权周转时间,平均带权周转时间。
6. 将一批作业/进程的执行情况存入磁盘文件,以后可以读出并重放。
7. 支持的调度算法:先来先服务,短作业/进程优先,时间片轮转调度算法,优先权调度算法,高响应比优先调度算法,多级反馈队列调度算法。
三、实验设备及环境:
IBM PC及其兼容机一台、WindwosXP操作系统、Microsoft Visual C++6.0集成开发环境。
四 实验目的:
通过本次课程设计进一步加深对进程控制块、进程调度的理解,能够实现各种不同的进程调度算法。深入理解操作系统设计中有关进程方面的应该注意的相关事项。
五 实验总体设计思路:
1、程序结构框架
1 程序中自定义了一个进程控制块PCB结构体,所有对进程的调度、进程切换等操作全都建立在PCB的基础之上。PCB中保存了进程标识符、进程到达时间、等待时间、进程调度状态、需要运行的时间等重要信息。PCB的定义如下:
struct PCB{ //PCB结构
int pid; //ID号
int status; //进程状态
int priority; //进程优先级数值越小,优先级越高.
int start_time; //进程开始时间
int need_time; //进程执行所需时间
int wait_time; //进程已等待时间
int end_time; //运行结束时间
struct PCB *next; //PCB指针,指向下一PCB
};
2 程序中还定义了一个正在PCB类型的指针指向正在运行的进程的进程控制块,3个就绪队列。除了多级反馈队列调度算法需要用到3个就绪队列外其他5种调度算法均只需要一个就绪队列。
3 本程序实现中采取产生PCB代替真实进程的方法来模拟进程。
4 本程序采用MFC框架构建,菜单栏主要包括了进程选项与调度算法。以task单文档视图为主题结构,mainframe实现菜单栏功能。
2、程序初始化阶段
1 程序开始运行后首先要产生若干个进程,可以采取自动产生也可以采取手工输入进程控制块参数的方法产生进程。
当用户每点击“自动产生”菜单一次,函数void CMainFrame::OnAuto()便自动产生一个进程并将其挂到就绪队列末尾,当用户点击“手工输入”菜单,便由函数void CMainFrame::OnManual()弹出输入对话框引导用户输入进程参数,之后把新产生的进程控制块挂到就绪队列末尾。以上两个函数均对进程编号pid做检查,以保证每个进程的唯一性,不允许有相同的进程。
2 在“调度算法”菜单中,用户选择了调度算法后,由相应的消息响应函数对调度算法标志dispatch进行赋值,然后根据dispatch值调用相关函数执行作业(进程)调度运算。
////////////////////调度算法的响应函数///////////////////
void CMainFrame::OnFcfs(){dispatch=1;}
void CMainFrame::OnSpf(){dispatch=2;}
void CMainFrame::OnTimeroll(){dispatch=3;}
void CMainFrame::OnPriority(){dispatch=4;}
void CMainFrame::OnHrespond(){dispatch=5;}
void CMainFrame::OnMultifeedback(){dispatch=6;}
///////////
文档评论(0)