




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计报告学 号: 姓 名: 班 级: 指导教师: 报告日期: 一、课设目的通过对操作系统课程的学习,熟悉进程的概念、进程的管理与存储、进程的调度,通过实践深入理解进程的调度算法。二、课设任务要求编写一个程序,可以创建若干个虚拟进程,并对若干个虚拟进程进行调度,调度策略为时间片轮转法,主要任务包括: 进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件,另外调度运行结果输出到一个运行日志文件; 设计PCB适用于时间片轮转法; 建立进程队列; 实现时间片轮转调度算法,尽量可视化的展示调度的动态过程。 总结程序设计的开发过程:需求分析、系统设计、系统实现及文档的收集和整理
2、。三、实验方法与设计分析每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时
3、间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止四、程序流程图开始设置时间片选择增加进程 是结束进程PCB顺序继续增加调度进程结束打印进程PCB顺序循环五、程序源代码#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ct
4、ype.h>#include <iostream>#include <fstream>using namespace std;ofstream myfile("bb.txt",ios:app|ios:trunc);typedef struct node char name10;/*进程名*/ int round; /*进程分配的时间片*/ int cputime; /*进程消耗的CUP时间*/ int needtime; /*进程需要的CUP时间*/ int count; /*进程运行时间*/ char state; /*进程的状态:'
5、R':运行,'W':等待,'F':结束*/ struct node *next;/*指向下一个进程的指针*/ PCB;PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/ int N;/*定义进程的数目*/ void firstin(void) if(ready!=NULL) run=ready; ready=ready->next; run->state='R' run->next=NULL; else run=NULL; void prt1(cha
6、r a)cout<<"name" <<" cputime" <<" needtime"<<" count "<<" round"<<" state"<<endl;myfile<<"name" ;myfile<<" cputime"myfile <<" needtime"myfile<<&
7、quot; count "myfile<<" round"myfile<<" state"<<endl; void prt2(char a,PCB *p) cout<<p->name<<" "<<p->cputime<<" "<<p->needtime<<" "<<p->count<<" "<<p-&
8、gt;round<<" "<<p->state<<endl;myfile<<p->name<<" "myfile<<p->cputime<<" "myfile<<p->needtime<<" "myfile<<p->count<<" "myfile<<p->round<<" "myfil
9、e<<p->state<<endl; void prt(char algo) PCB *p; prt1(algo); if(run!=NULL) prt2(algo,run); p=ready; while(p!=NULL) prt2(algo,p); p=p->next; p=finish; while(p!=NULL) prt2(algo,p); p=p->next; getchar();void insert(PCB *q) tail->next=q; tail=q; q->next=NULL; void rcreate_task(c
10、har algo) PCB *p; int n,time; char na10; ready=NULL; finish=NULL; run=NULL; cout<<"请输入进程数目N:" cin>>N; for(n=0;n<N;n+) p=(PCB*)malloc(sizeof(PCB); cout<<"Enter the name of process:"<<endl; cin>>na; cout<<"Enter the time of process:"
11、<<endl; cin>>time; strcpy(p->name,na); p->cputime=0; p->needtime=time; p->count=0; p->state='W' p->round=2; if(ready!=NULL) insert(p); else p->next=ready; ready=p; tail=p; run=ready; ready=ready->next; run->state='R' cout<<"创建成功。"
12、;<<endl;void chakan(char algo)if(run->count=run->round) run->count=0; if(ready!=NULL) run->state='W' insert(run); firstin(); prt(algo);void roundrun(char algo) while(run!=NULL) run->cputime=run->cputime+1; run->needtime=run->needtime-1; run->count=run->cou
13、nt+1; if(run->needtime=0) run->next=finish; finish=run; run->state='F' run=NULL; if(ready!=NULL) firstin(); else if(run->count=run->round) run->count=0; if(ready!=NULL) run->state='W' insert(run); firstin(); prt(algo); void caidan() cout<<"*主页*"&l
14、t;<endl; cout<<"*1.I 创建若干进程*"<<endl; cout<<"*2.C 进程进行查看*"<<endl; cout<<"*3.O 进程进行调度*"<<endl; cout<<"*4.H 结束 *"<<endl;int main() loop1:caidan(); char algo; cin>>algo;if(algo='i'|algo='I')
15、rcreate_task(algo); else if(algo='c'|algo='C') chakan(algo); else if(algo='o'|algo='O')roundrun(algo);else if(algo='h'|algo='H')goto loop2;goto loop1;loop2: myfile.close();return 0;六、运行结果七、问题及解决方法 (1) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模
16、拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行(2) 进程运行一次后,若要求运行时间0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。(3) 若“就绪”状态的进程队列不为空,则重复上面(1)和(2)的步骤,直到所有进程都成为“结束”状态。(4) 在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。(5) 为五个进程任意确定一组“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。八、心得体会操作系统是计算机系统中必不可少的系统软件。它是计算机系统中各种资源的管理者和各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗教育革新远程协作工具在医疗培训中的应用
- 医养结合服务模式的理论基础与实际应用
- 专科护士在医疗安全中的教育与培训
- 代工采购合同范例
- 利用商业智能和医疗大数据提升企业员工整体健康的策略与实践
- 小儿上肢肿块的临床护理
- 公司木材采购合同范例
- 以移动支付为驱动的电子商务平台创新研究-基于区块链技术分析
- 专利实施独占合同范例
- 住宅个人贷款合同范例
- 葡萄酒品尝学第八章-2013
- JJF 1793-2020海水营养盐测量仪校准规范
- GB/T 20080-2017液压滤芯技术条件
- 超音速流动与燃烧的大涡模拟基础课件
- 大班科学《神奇的洞洞》课件
- 季节性防雷防汛防台风安全检查表
- 归档文件目录
- 2022年四川省绵阳市中考英语试题及参考答案
- NYT 393-绿色食品 农药使用准则
- 偏心块振动式土壤夯实机的结构设计说明
- 主题班会《坚定信念--放飞理想》
评论
0/150
提交评论