操作系统课程设计报告13页doc.docx
- 文档编号:729496
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:12
- 大小:1.02MB
操作系统课程设计报告13页doc.docx
《操作系统课程设计报告13页doc.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计报告13页doc.docx(12页珍藏版)》请在冰豆网上搜索。
操作系统课程设计报告13页doc
一、需求分析…………………………………………………….1
二、系统概要设计
(1)系统的主要功能……………………………………………...1
(2)模块功能结构………………………………………………...1
(3)运行环境……………………………………………………...1
(4)数据结构设计…………………………………………………...1
三、系统的详细设计
(1)系统流程图……………………………………………………2
(2)各个模块的算法及内部的数据组织,包括主要代码………3
四、系统源代码
………………………………………………………………..4
五、系统测试及调试
(1)实际测试数据及结果…………………………………………6
(2)系统测试结论…………………………………………………11
六、心得体会,概述总结自己的设计收获
………………………………………………………………..11
七、主要参考文献
………………………………………………………………..11
一、需求分析
在操作系统中,调度的实质是一种资源分配,因而调度算法是根据系统的资源分配策略规定资源分配的算法。
对于不同的系统和调度目标,应采用不同的调度算法。
时间片轮转法(Round-robin,RR)主要用于分时系统中的进程调度。
轮转调度的实现原理为系统将所有就绪进程按。
先入先出。
的原则排成一个队列,新来的进程处于就绪队列末尾,每当执行进程调度时,就绪队列的队首进程总是先被调度程序选中,在CPU上运行一个时间片的时间。
时间片是一个小的时间单位,通常为10—100ms数量级。
当进程用完分给它的时间片后,系统的计时器发出时钟中断,调度程序进行调度,停止该进程的运行,并把它放入就绪队列末尾;随后,进行进程切换,把CPU分给就绪队列的队首进程,同样让它运行一个时间片,如此往复
二、系统概要设计
1、主要功能:
开始等待要求输入进程数,后输入进程信息(进程名、要求执行的时间),程序将进程信息放入队列并将状态置为就绪。
程序将从队首开始按照时间片T执行就绪队列进程;判断各进程的估计运行时间是否为零,是则将该进程状态置为完成状态并将其移出队列。
(每将队列所有进程执行一遍后,询问是否有新进程加入)如此往复循环下去,直到队列为空。
2、系统模块功能结构:
数据结构定义及说明:
typedefstructPNode{//PCB
structPNode*next;//定义指向下一个节点的指针
charname[10];//定义进程名,并分配空间
intAll_Time;//定义总运行时间
intRuned_Time;//定义已运行时间
charstate;//定义进程状态Ready/End
}*Proc;//指向该PCB的指针
3、运行环境要求:
开发环境:
VC++6.0
运行环境:
CPUP3128MB内存1G硬盘空间
软件环境:
Win2000/XP
4、数据结构设计
typedefstructPCB{//PCB
structPCB*next;//定义指向下一个节点的指针
charname[10];//定义进程名,并分配空间
intAll_Time;//定义总运行时间
intRuned_Time;//定义已运行时间
charstate;//定义进程状态Ready/End
}*Proc;//指向该PCB的指针
三、系统的详细设计
1、系统流程图:
2、各个模块的算法及内部的数据组织:
队列初始化函数:
voidInitPCB(Proc&H){
cout<<"请输入总进程个数:
";
cin>>ProcNum;//进程总个数
intNum=ProcNum;
H=(Proc)malloc(sizeof(PCB));//建立头节点
H->next=NULL;
Procp=H;//定义一个指针
cout<<"总进程个数为"< while(Num--){ p=p->next=(Proc)malloc(sizeof(PCB)); cout<<"进程名运行总时间已运行时间: "; cin>>p->name>>p->All_Time>>p->Runed_Time; p->state='R'; p->next=NULL; } p->next=H->next; } 运行中的进程信息输出函数: voidlistInfo(ProcH){ Procp=H->next; do{ if(p->state! ='E')//如果该进程的状态不是End的话 { cout<<"进程名: "< "< <<"\t已运行时间: "< <<"\t状态: "< p=p->next; } elsep=p->next; }while(p! =H->next);//整个进程链条始终完整,只是状态位有差异 } 时间片轮转法: voidtimeSimulator(Proc&H){ cout< \n"; cout< intflag=ProcNum;//记录剩余进程数 intround=0;//记录轮转数 Procp=H->next; while(p->All_Time>p->Runed_Time){//即未结束的进程 round++; cout< p->Runed_Time++;//更改正在运行的进程的已运行时间 listInfo(H);//输出此时为就绪状态的进程的信息 if(p->All_Time==p->Runed_Time){//并判断该进程是否结束 p->state='E'; flag--; cout< \n"; } p=p->next; while(flag&&p->All_Time==p->Runed_Time) p=p->next;//跳过先前已结束的进程 } cout< } 3、算法描述: 四、系统源代码: #include #include usingnamespacestd; typedefstructPCB{ structPCB*next; charname[10]; intAll_Time; intRuned_Time; charstate; }*Proc; intProcNum; //初始化就绪队列 voidInitPCB(Proc&H){ cout<<"请输入总进程个数: "; cin>>ProcNum; intNum=ProcNum; H=(Proc)malloc(sizeof(PCB)); H->next=NULL; Procp=H; cout<<"总进程个数为"< while(Num--){ p=p->next=(Proc)malloc(sizeof(PCB)); cout<<"进程名运行总时间已运行时间: "; cin>>p->name>>p->All_Time>>p->Runed_Time; p->state='R'; p->next=NULL; } p->next=H->next; } //输出运行中的进程信息 voidlistInfo(ProcH){ Procp=H->next; do{ if(p->state! ='E') { cout<<"进程名: "< "< <<"\t已运行时间: "< <<"\t状态: "< p=p->next; } elsep=p->next; }while(p! =H->next); } //时间片轮转法 voidtimeSimulator(Proc&H){ cout< \n"; cout< intflag=ProcNum; intround=0; Procp=H->next; while(p->All_Time>p->Runed_Time){ round++; cout< p->Runed_Time++; listInfo(H); if(p->All_Time==p->Runed_Time){ p->state='E'; flag--; cout< \n"; } p=p->next; while(flag&&p->All_Time==p->Runed_Time) p=p->next; } cout< } voidmain(){ ProcH; InitPCB(H); listInfo(H); timeSimulator(H); } 五、测试及调试: (1)实际测试数据及结果: (2)系统测试结论: 该系统运行结果正确,功能完全符合预期设计要求,具有一定的稳定性、和健壮性。 六、心得体会,概述总结自己的设计收获 时间片轮转算法中,系统将所有的就绪程序按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。 当执行的时间片用完时,调度程序停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。 七、主要参考文献: 操作系统原理及应用---Linux(第二版)中国水利水电出版社主编: 王红 VisualC++开发实战宝典清华大学出版社宋坤等主编 VisualC++完全自学手册机械工业出版社古万荣等编著 VisualC++入门、进阶与应用实例人民邮电出版社何志丹编著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 报告 13 doc