欢迎来到天天文库
浏览记录
ID:9072474
大小:163.29 KB
页数:13页
时间:2018-04-16
《进程调度的设计与实现-综合实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验课程:操作系统实验名称:进程调度的设计与实现(综合实验)第一部分实验内容1.实验目标1、综合应用下列知识点设计并实现操作系统的进程调度:邻接表,布尔数组,非阻塞输入,图形用户界面GUI,进程控制块,进程状态转换,多级反馈队列进程调度算法。2、加深理解操作系统进程调度的过程。3、加深理解多级反馈队列进程调度算法。2.实验任务1、用一种熟悉的语言,如C、PASCAL或C++等,编制程序。2、采用多级反馈队列调度算法进行进程调度。3.实验设备及环境PC;C++4.实验主要步骤(1)根据实验目标,明确实验的具体任务;(2)编写程序实现进程调度算法;(3)设计实验数据并运
2、行程序、记录运行的结果;(4)分析实验结果;(5)实验后的心得体会。第二部分问题及算法1.问题描述根据实验内容与主要设计思想,使用C++语言和MFC编写多级反馈队列进程调度算法和实现可视化窗口程序。2.多级反馈队列进程调度算法的一般思路开始随机生成数个进程调度进程执行进程i是否按下Y插入新进程crtl+f?N进程i移到就绪队列继续执行进程iCPU调新进程优先级减半生命周期减1生命周期为Y进程i完成0?撤销PCBN进程i变就绪状态插入就绪队列3.算法实现的关键点进程的随机创建、选中与调度4.第三部分实验结果与分析1.实验数据及结果如附录中的界面所示2.实验分析及结论该
3、程序能够基本实现该实验所需的功能,程序在开始运行的时候能进行初始化,当按下Ctrl+F时,能创建新进程,按下Ctrl+Q时,会弹出提示是否退出的窗口,基本功能都实现了。第四部分心得与展望1.自我评价及心得体会在编写软件的过程当中,算法用了大部分的时间。为了实现实验当中所要求的功能,使用了大量的时间来思考各种功能所需的算法。而且,由于对MFC的使用不熟悉,所以多次上网查找解决方法和请教同学,终于经过自己的努力,将程序写了出来,体会到了前所未有的成就感。亦在编写程序的过程当中,加深了对进程调度的理解。不过,在这个过程中,也发现了自己的不足,就是自己不善于编写算法,还有技
4、术不够纯熟,不能轻易地就将程序编写出来。2.展望希望以后自己能多学习技术,成为一个技术流的人才,能够熟练掌握MFC编写程序。第五部分附录2.源程序structPCB{intpid;//进程标识符boolstatus;//进程的状态intpriority;//进程优先级intlife;//进程生命周期};structVER{boolk;//此pid数值是否已被使用};///////////////////////////////////////////////////////////////////////////////CProcessDlgdialogclassC
5、ProcessDlg:publicCDialog{//Constructionpublic:voidchushihua();voidarrange();VERpidver[100];PCBpcb[100];intnumber;CProcessDlg(CWnd*pParent=NULL);//standardconstructor///////////////////////////////////////////////////////////////////////////////CProcessDlgmessagehandlersBOOLCProcessDlg:
6、:OnInitDialog(){CDialog::OnInitDialog();//Add"About..."menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadSt
7、ring(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIc
此文档下载收益归作者所有