ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:59.16KB ,
资源ID:10537725      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10537725.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统实习报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统实习报告.docx

1、操作系统实习报告2011年秋操作系统小学期操作系统小学期实习报告成 绩:评阅人:学院:信息科学与技术专业:计算机科学与技术年级:2008级班级:信080 班姓名: 学号:200 3日期:2011年9月一、问题描述1.分析进程的同步与互斥现象,编程实现经典的进程同步问题生产者消费者问题的模拟;2.编写允许进程并行执行的进程调度程序,在常用的进程(作业)调度算法:先来先服务算法、短作业优先算法、最高响应比优先算法、高优先权优先算法等调度算法中至少选择三种调度算法进行模拟,并输出平均周转时间和平均带权周转时间。二、问题分析1、进程管理是操作系统的职能之一,主要是对处理机进行管理 。为了提高CPU的利

2、用率而采用多道程续技术。通过进程管理来协调多道程序之间的关系,使CPU得到充分的利用。2、在问题的解决过程中,用到了三种算法:首先用到了先来先服务算法,通过sort函数判断各个进程的的到达时间,并将先到达的进程先运行;其次用到了最短作业优先算法,首先将第一个进程先运行,然后从第二个开始判断时间长短,将短作业先运行;最后用到了最高响应比优先算法,每次运行完一个进程之后将剩余进程重新比较优先级,将优先级高的进程先运行;然后用deal函数求出周转时间的总和和带权周转时间的总和,并将二者除以总数N(此处我设置的是3)后输出。三、数据模型描述算法中需要的数据结构:#define N 3 /一个宏定义,将

3、N的值定义为3struct time; /定义的一个结构,其中包含五个时间变量和一个名称变量用到的辅助函数:void InputTime /输入作业名、到达时间、运行时间的函数void Print /帮助输出运行次序及平均周转时间和平均带权周转时间的函数void sort /将到达时间早的进程排在作业队列的前面void deal /求出周转时间和带权周转时间之和四、算法描述1解题算法的设计思路介绍a、 先来先服务算法(FCFS):安服务请求的顺序处理请求。b、 短作业优先算法(SJF):对预计执行时间短的作业(进程)优先分派处理机。c、 高响应比算法(TRRF):把CPU分配给就绪队列中响应比

4、最高的进程。2、程序结构、模块划分 3、主要程序代码#include#define N 3struct time float arriveTime; float runTime; float finishTime; float totalTime; float weightTotalTime; char name;/定义一个时间结构 void InputTime(time *p) int i;/counter coutinput name & arrive time & run time:endl; for(i=0;i=N-1;i+) float temp1,temp2; char name;

5、 cout作业名:name; pi.name=name; cout到达时:temp1; pi.arriveTime=temp1; cout运行时间:temp2; pi.runTime=temp2; /输入时间函数,用于输入作业名、到达进程名、运行时间 void Print(time *p,float totalTimeSum,float weightTotalTimeSum) cout运行次序:; for(int k=0;k=N-1;k+) coutpk.name ; coutendl; cout平均周转时间:totalTimeSum/Nendl; cout平均带权周转时间:weightTot

6、alTimeSum/Nendl;/输出函数,用于输出运行次序、平均周转时间和平均带权周转时间void sort(time *p) for(int i=0;i=N-1;i+) for(int j=0;j=i;j+) if(pi.arriveTimepj.arriveTime) time temp; temp=pi; pi=pj; pj=temp; /将先到达的进程排在前面void deal(time *p,float &totalTimeSum,float &weightTotalTimeSum) int k;/counter for(k=0;k=N-1;k+) if(k=0) pk.finis

7、hTime=pk.arriveTime+pk.runTime; else pk.finishTime=pk-1.finishTime+pk.runTime; for(k=0;k=N-1;k+) pk.totalTime=pk.finishTime-pk.arriveTime; pk.weightTotalTime=pk.totalTime/pk.runTime; totalTimeSum+=pk.totalTime; weightTotalTimeSum+=pk.weightTotalTime; /用于计算周转时间和带权周转时间之和void FCFS(time *p) float totalT

8、imeSum=0,weightTotalTimeSum=0; sort(p); deal(p,totalTimeSum,weightTotalTimeSum); cout先来先服务:endl;Print(p,totalTimeSum,weightTotalTimeSum);/先来先服务算法,p标识进程void SWF(time *p) float totalTimeSum=0,weightTotalTimeSum=0; sort(p); for(int m=0;mN-1;m+) if(m=0) pm.finishTime=pm.arriveTime+pm.runTime; else pm.fi

9、nishTime=pm-1.finishTime+pm.runTime; int i=0; for(int n=m+1;n=N-1;n+) if(pn.arriveTime=pm.finishTime) i+; float min=pm+1.runTime; int follow=m+1; for(int k=m+1;km+i;k+) if(pk+1.runTimemin) min=pk+1.runTime; follow=k+1; time temp; temp=pm+1; pm+1=pfollow; pfollow=temp; deal(p,totalTimeSum,weightTotal

10、TimeSum); cout短作业优先:endl; Print(p,totalTimeSum,weightTotalTimeSum);/短作业优先算法,p标识进程void TRRF(time *p) float totalTimeSum=0,weightTotalTimeSum=0; sort(p); for(int m=0;mN-1;m+) if(m=0) pm.finishTime=pm.arriveTime+pm.runTime; else pm.finishTime=pm-1.finishTime+pm.runTime; int i=0; for(int n=m+1;n=N-1;n+)

11、 if(pn.arriveTime=pm.finishTime) i+; float max=(pm.finishTime-pm+1.arriveTime)/pm+1.runTime; int follow=m+1; for(int k=m+1;km+i;k+) if(max=(pm.finishTime-pk+1.arriveTime)/pk+1.runTime) max=(pm.finishTime-pk+1.arriveTime)/pk+1.runTime; follow=k+1; time temp; temp=pm+1; pm+1=pfollow; pfollow=temp; dea

12、l(p,totalTimeSum,weightTotalTimeSum); cout最高响应比优先:endl; Print(p,totalTimeSum,weightTotalTimeSum);/最高响应比优先算法,p标识进程void main() time aN; InputTime(a); time *b=a;time *c=a; FCFS(a); SWF(b); TRRF(c);五、运行结果六、实习心得本次实习是模拟操作系统的实现,我做的是其中的进程管理,其中用了三种进程管理算法:先来先服务算法、短作业优先算法和高响应比优先算法,这几个原理以前学的时候感觉挺简单,但实现起来就有些力不从心了,其中第一个是最容易实现的,第三个是最难实现的,但编程过程中遇到的问题我都通过网上查资料和与同学讨论一一解决了。通过这次课程设计,使我又一次深刻体会到了编程的简单与困难,加深了对编程的喜爱,对以后的就业情况有了进一步的认识。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1