操作系统课设报告

上传人:新** 文档编号:507943310 上传时间:2022-08-21 格式:DOC 页数:40 大小:336KB
返回 下载 相关 举报
操作系统课设报告_第1页
第1页 / 共40页
操作系统课设报告_第2页
第2页 / 共40页
操作系统课设报告_第3页
第3页 / 共40页
操作系统课设报告_第4页
第4页 / 共40页
操作系统课设报告_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《操作系统课设报告》由会员分享,可在线阅读,更多相关《操作系统课设报告(40页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计报告时间:2013-1-72013-1-18地点:信息技术实验中心计算机科学与技术专业2010级01班06号赖敏2013-1-18目录一 课程设计的目的和意义3二 进程调度算法模拟31 设计目的32 设计要求33 使用动态优先权的进程调度算法的模拟4三 动态分区分配方式模拟111 设计目的112 设计要求113 模拟算法的实现123.3.1 首次适应算法133.3.2 最佳适应算法13四 请求调页存储管理方式模拟181 设计目的182 设计要求183 模拟算法的实现18OPT算法18FIFO算法21LRU算法22五 简单文件系统的实现241 设计目的242 设计要求243 模拟

2、算法的实现25六 总结40一 课程设计的目的和意义操作系统课程设计是计算机科学与技术专业的重要实践性教学环节。在进行了专业基础课程和操作系统原理课程学习的基础上,设计或分析一个实际的操作系统旨在加深对计算机硬件结构和系统软件的认识,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力,为毕业设计及以后的工程实践打下良好的基础。通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及功能, 具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力1、巩固和加深对操作系统原理的理解,提高综合运用本课程所学知识的能力。2、培养学生选用参考书,查阅

3、手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际操作系统的分析设计、编程调试,掌握系统软件的分析方法和工程设计方法。4、能够按要求编写课程设计报告书,能正确阐述设计和实验结果、正确绘制系统和程序框图。5、通过课程设计,培养学生严谨的科学态度,严肃认真的工作作风和团队协作精神。二 进程调度算法模拟1 设计目的通过动态优先权算法的模拟加深对进程概念和进程调度过程的理解。2 设计要求(1)用C语言来实现对N个进程采用动态优先算法的进程调度;(2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:l 进程标识符idl 进程优先数priority,并规定优

4、先数越大的进程,其优先权越高;l 进程已占用的CPU时间cputime;l 进程还需占用的CPU时间alltime,当进程运行完毕时,alltime变为0;l 进程的阻塞时间startblock,表示当进程再运行startblock个时间片后,进程将进入阻塞状态;l 进程被阻塞的时间blocktime,表示已阻塞的进程再等待blocktime个时间片后,将转换成就绪态l 进程状态state;l 队列指针next,用来将PCB排成队列(3)优先数改变的原则:l 进程在就绪队列中呆一个时间片,优先数增加1l 进程每运行一个时间片,优先数减3。(4)假设在调度前,系统中有5个进程,它们的初始状态如下

5、:ID01234PRIORITY93830290CPUTIME00000ALLTIME33634STARTBLOCK2-1-1-1-1BLOCKTIME30000STATEREADYREADYREADYREADYREADY(5)为了清楚地观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:RUNNING PROG: iREADY_QUEUE:-id1-id2BLOCK_QUEUE:-id3-id4=ID 01234PRIORITY P0P1P2P3P4CPUTIME C0C1C2C3C4ALLTIME A0A1A2A3A4STARTBLOCK T0T1T2T3T

6、4BLOCKTIME B0B1B2B3B4STATE S0S1S2S3S43 使用动态优先权的进程调度算法的模拟(1) :NYNYNY开始创建N个进程并初始化pcbN根据进程状态初始化阻塞队列和就绪队列在就绪队列中找出优先权最大的进程运行进程运行完毕即alltime=0删除该进程运行一个时间片就绪队列中其他进程优先数prority+1进程运行完毕优先数priority-3结束阻塞就绪转换进程调入就绪队列或阻塞队列- 动态优先权进程调度流程图(2) 实验效果图:1)输入进程的初始状态进行初始化:1.3.2- 初始化进程状态2)运行部分结果如图:1.3.3- 运行结果(3)实验关键代码:#defi

7、ne N 5 /默认进程数 int count;/定义进程结构体 typedef struct pcbint id; /进程id号int priority; /进程优先权int cputime; /占用cpu时间int alltime; /进程运行完成时间int startblock; /进程开始阻塞时间int blocktime; /进程阻塞到恢复就绪时间char state; /进程状态pcb* next; /指向下一个进程指针pcb,*pcb_link;/初始化进程 pcb_link initTask(pcb pcb) int i; char c; pcb_link plink=(pcb

8、_link)malloc(sizeof(pcb); /就绪队列创建头指针 plink-next=NULL; printf(请初始化%d个进程:n,N);printf(ID ); /初始化进程idfor(i=0;iN;i+) pcbi.id=i; printf(%-8d,i);printf(nn);printf(PRIORITY ); /初始化进程优先权for(i=0;iN;i+)scanf(%d,&pcbi.priority);printf(n);printf(CUPTIME ); /初始化进程占用cpu时间for(i=0;iN;i+) scanf(%d,&pcbi.cputime);prin

9、tf(n);printf(ALLTIME ); /初始化进程需要运行时间for(i=0;iN;i+) scanf(%d,&pcbi.alltime);printf(n);printf(STARTBLOCK ); /初始化进程开始阻塞时间for(i=0;iN;i+) scanf(%d,&pcbi.startblock);printf(n);printf(BLOCKTIME ); /初始化进程阻塞到恢复就绪时间for(i=0;iN;i+) scanf(%d,&pcbi.blocktime);printf(n);printf(STATE ); /初始化进程状态for(i=0;iN;i+) c=get

10、char(); while(c= |c=n) c=getchar(); pcbi.state=c;for(i=0;inext=&pcb0; 就绪队列return plink; */在就绪队列中找到优先数最大的进程 int maxPriority(pcb_link ready_q)pcb_link p;p=ready_q-next;int prog,max;max=prog=INT_MIN;while(p)if(p-prioritymax) prog=p-id; max=p-priority;p=p-next; return prog; /进程运行函数 void run(pcb_link rea

11、dy_q,pcb_link block_q,int prog) pcb_link p,running_p=NULL; if(-1prog&prognext; while(p) if(p-id=prog) running_p=p; /running_p指向运行的进程 else p-priority+=1; /就绪队列中其他进程priority+1 p=p-next; running_p-priority-=3; /* running_p-cputime+=1; running_p-alltime-=1; if(running_p-startblock0) running_p-startblock-=1; 改变运行进程 if(running_p-alltime=0) 的信息和状态 running_p-state=F; else if(running_p-startblock!=0) running_p-state=R; else running_p-state=B;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号