云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 进程调度算法的模拟实现—毕业设计论文

进程调度算法的模拟实现—毕业设计论文

  • 62 次阅读
  • 3 次下载
  • 2025/5/4 21:59:19

3.3 全局变量的使用

为了实现各个进程调度算法,本系统使用了五个全局变量。

因各种调度算法都是从就绪队列中选择进程进行调度,故将就绪队列设计为LinkQueue类型的全局变量,其变量名为readyQueue。

为实现时间片轮转算法,本系统使用了三个指向结构体的指针:reaLQ、runLQ、finLQ,reaLQ表示当前时间尚未开始运行的就绪队列,runLQ表示已开始运行但未结束的各个进程组成的队列,finLQ则记录当前已经执行完的进程。

各个进程调度算法,都涉及到时间,故将时间设为全局变量current,以秒为单位输入,其类型为float。在本系统中,current在先来先服务、短进程优先和高优先权优先算法中表示当前时间,而在时间片轮转算法中,current表示时间片。

4 系统总体模块设计

系统总体可分为四个大的模块,即创建进程、输出进程、进程调度算法以及显示系统信息,而进程调度算法又可分为先来先服务、短进程优先、高优先权优先和时间片轮转四个模块。其总体模块如图4-1所示。

图4-1 系统总体模块图

为实现系统以上各个模块,本模拟系统将功能相对完整的代码定义为一个函数。本系统中主要的函数及其功能如表4-1所示。

表4-1 系统主要函数及其功能

函数名 showMainMenu() showSubMenu() createProc() 功能说明 显示系统主菜单 显示进程调度子菜单 创建一个不带有头结点的按到达时间有序的链队列 4

showProc(lq) FCFS(lq) SPF_FPF(lq,flag) RR(lq) copyQueue(lq1,lq2) 输出进程信息 先来先服务算法 短进程优先或高优先权算法,具体由flag确定 时间片轮转调度算法 复制进程队列 refrashCon(phead,current,con) 统计进程队列中到达时间大于current的进程数 readyproc() slicerun() getLev(const PcbPoint &pcb) 将current之前到来的就绪进程全部插入执行队列 对满足执行条件的各个进程分配时间片并执行 求进程的动态优先权

5主要界面的设计与实现

5.1菜单设计

本模拟系统主要有两个菜单,一个主菜单,列出了系统具有的五项功能,可以输入相应字符进行选择操作,其界面如图5-1所示。

图 5-1 主菜单

在主菜单是输入字符C就进入了选择调度算法子菜单,其界面如图5-2所示。

5

图 5-2 选择调度算法子菜单

在主菜单输入字符D就进入了系统信息子菜单,显示本系统的功能信息,其界面设计如图5-3所示。

图 5-3 选系统信息子菜单

5.2菜单的实现

主菜单界面的实现方法主要是调用C语言中的系统函数system(),其参数不同实现不同功能。system(\实现清屏,system(\设置默认控制台前景和背景颜色,system(\〖进程管理模拟器〗 Version[1.0]\设置界面的标题和版本信息。其它就是对菜单项的格式输出。showMainMenu()函数的实现代码如下所示。

void showMainMenu() //显示主菜单 {

system(\ cout<

6

cout<<\ cout<<\ cout<<\

╔════════════╗\\n\ ║ ☆ 进 程 管 理 器 ☆ ║\\n\ ╚════════════╝\\n\

cout<<\n\

cout<<\欢迎使用该系统,请选择菜单!---------\\n\ cout<

[A] 创建进程\\n\\n\[B] 浏览进程信息\\n\\n\[C] 选择调度算法\\n\\n\[D] 系统信息\\n\\n\[E] 退出程序\\n\

cout<<\\\n\

cout<<\请您键入菜单字母代码:\}

子菜单的实现是利用showSubMenu()函数,其实现方法类似主菜单的实现。在此不再赘述。

5.3 系统模拟动态效果的实现

在创建进程,输入要创建的进程信息后,系统会有一个延时,以显示动态效果。其实现方法主要调用C语言系统函数sleep()函数,其实现关键代码如下:

Sleep(200); //使程序暂停200秒

printf(\系统正在创建进程中,请稍候...\\n\ Sleep(500);

printf(\使光标回到本行行首 printf(\ for(i=0;i<65;i++) {

Sleep(18); printf(\

7

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

3.3 全局变量的使用 为了实现各个进程调度算法,本系统使用了五个全局变量。 因各种调度算法都是从就绪队列中选择进程进行调度,故将就绪队列设计为LinkQueue类型的全局变量,其变量名为readyQueue。 为实现时间片轮转算法,本系统使用了三个指向结构体的指针:reaLQ、runLQ、finLQ,reaLQ表示当前时间尚未开始运行的就绪队列,runLQ表示已开始运行但未结束的各个进程组成的队列,finLQ则记录当前已经执行完的进程。 各个进程调度算法,都涉及到时间,故将时间设为全局变量current,以秒为单位输入,其类型为float。在本系统中,current在先来先服务、短进程优先和高优先权优先算法中表示当前时间,而在时间片轮转算法中,current表示时间片。 4 系统总体模块设计

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com