欢迎来到天天文库
浏览记录
ID:47494023
大小:2.10 MB
页数:26页
时间:2020-01-12
《操作系统课程设计报告 进程与线程管理功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、东莞理工学院操作系统课程设计报告学院:计算机学院专业班级:13软件工程1班学号姓名评价提交时间:2015/9/14指导教师评阅意见:.项目名称:进程与线程管理功能一、设计目的用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。二、环境条件系统:WindowsXP、VMWare、UbuntuLinux语言:C/C++开发工具:gcc/g++、VisualC++6.0三、设计内容1.项目背景计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。进程与线程管理功能完成基于
2、优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。进程与线程管理功能基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。提高要求:(增加1项就予以加分)(1)实现多种线程调度算法;(2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。(3)实现多用户进程并发的虚拟内存管理功能。(4)实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。(5)实现改进型Clock页面置换算法。(6)实现Cache功能,采用FIFO替换算法。2.扩展内容实现多种线程调度算法:时
3、间片轮转调度算法四、人员分工优先级调度算法:钟德新,莫友芝时间片轮转调度算法:张德华,袁马龙设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:voidPrinft(){PCB*p;system("cls");//清屏p=run;//运行队列if(p!=NULL){p->next=NULL;}cout<<"当前正在运行的进程:"<proc
4、name<<"tt"<pri<<"t"<needOftime<<"tt"<runtime<<"tt"<state<next;}cout<procname<<"tt"<pri<<"t"<n
5、eedOftime<<"tt"<runtime<<"tt"<state<next;}cout<procname<<"tt"<pri<<"t"<needOftime<<"tt"<runtime
6、<<"tt"<state<next;}}这个函数是优先级调度算法程序的界面函数,主要为程序运行时能够直观的显示结果voidinsert(PCB*p){PCB*S1,*S2;if(ready==NULL)//判断队列是否为空{p->next=NULL;ready=p;//插入就绪队列}else{S1=ready;S2=S1;while(S1!=NULL){if(S1->pri>=p->pri)//判断优先级大小{S2=S1;//置换位置S1=S1->next;}else{break;//跳出循环}}if(S2->pri>=p->pri
7、){S2->next=p;p->next=S1;}else{p->next=ready;ready=p;}}}这是程序优先级排序的函数,也是优先级调度算法的核心思想函数,对程序的优先级通过指针进行排序,再将队首的程序调入运行队列,通过置换的方法,将运行队列队首即占用CPU的程序调入就绪队列,如此循环直至所有程序终止为止。莫友芝编写的代码:voidpriority(){run=ready;ready=ready->next;run->state="运行";while(run!=NULL)/*当运行队列不空时,有进程正在运行*/{Dtime(3);//调用延时函数,
此文档下载收益归作者所有