第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/5/15 16:24:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

进程调度算法的模拟实现—毕业设计论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5ysh946ofl77xpo5846y5ap1c1kz8f00qbg_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top