预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

东莞理工学院操作系统课程设计报告学院:计算机学院专业班级:13软件工程1班学号姓名评价提交时间:/9/14指引教师评阅意见:.项目名称:进程与线程管理功能一、设计目用语言来模仿进程和线程管理系统,加深对进程和线程理解,掌握对进程和线程各种状态和管理算法原理。二、环境条件系统:WindowsXP、VMWare、UbuntuLinux语言:C/C++开发工具:gcc/g++、VisualC++6.0三、设计内容1.项目背景计算机硬件资源有限,为了提高内存运用率和系统吞吐量,就要依照某种算法来管理进程和线程状态从而达到目。进程与线程管理功能完毕基于优先级抢占式线程调度功能,完毕进程虚拟内存管理功能。进程与线程管理功能基本规定:完毕基于优先级抢占式线程调度功能,完毕进程虚拟内存管理功能。提高规定:(增长1项就予以加分)(1)实现各种线程调度算法;(2)通过“公共信箱”进行通信机制,规定每一封信大小为128字节,实现两个顾客进程之间通过这个“公共信箱”进行通信。(3)实现多顾客进程并发虚拟内存管理功能。(4)实现顾客进程间通信功能,并用生产者/消费者问题测试进程间通信功能对的性。(5)实现改进型Clock页面置换算法。(6)实现Cache功能,采用FIFO替代算法。2.扩展内容实现各种线程调度算法:时间片轮转调度算法人员分工优先级调度算法:钟德新,莫友芝时间片轮转调度算法:张德华,袁马龙设计报告由小组队员共同完毕。小构成员设计代码分工如下:钟德新编写代码:voidPrinft(){PCB*p;system("cls");//清屏p=run;//运营队列if(p!=NULL){p->next=NULL;}cout<<"当前正在运营进程:"<<endl;cout<<"进程名称"<<"\t"<<"优先数"<<"\t"<<"还需要时间"<<"\t"<<"已运营时间"<<"\t"<<"状态:"<<endl;while(p!=NULL){cout<<p->procname<<"\t\t"<<p->pri<<"\t"<<p->needOftime<<"\t\t"<<p->runtime<<"\t\t"<<p->state<<endl;p=p->next;}cout<<endl<<endl;cout<<"当前就绪队列:"<<endl;cout<<"进程名称"<<"\t"<<"优先数"<<"\t"<<"还需要时间"<<"\t"<<"已运营时间"<<"\t"<<"状态:"<<endl;p=ready;//就绪队列while(p!=NULL){cout<<p->procname<<"\t\t"<<p->pri<<"\t"<<p->needOftime<<"\t\t"<<p->runtime<<"\t\t"<<p->state<<endl;p=p->next;}cout<<endl<<endl;cout<<"当前已经完毕进程:"<<endl;//终结队列cout<<"进程名称"<<"\t"<<"优先数"<<"\t"<<"还需要时间"<<"\t"<<"已运营时间"<<"\t"<<"状态:"<<endl;p=finish;while(p!=NULL){cout<<p->procname<<"\t\t"<<p->pri<<"\t"<<p->needOftime<<"\t\t"<<p->runtime<<"\t\t"<<p->state<<endl;p=p->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){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);//调用延时函数,延时3秒run->runtime=run->runtime+1;//