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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

广工操作系统实验报告.docx

1、广工操作系统实验报告操作系统实验报告 学生学院_ 计算机学院_专业班级_ 计科(8)班 学 号 学生姓名_ _指导教师_ _2013年 12月 29 日1 实验一 进程调度52 实验二 作业调度93 实验三 可变式分区分配184 实验四 简单文件系统26 实验一 进程调度一、实验目的编写并调试一个模拟的进程调度程序,采用“短进程优先”调度算法对五个进程进行调度。以加深对进程的概念及进程调度算法的理解二、实验内容及要求 编写并调试一个模拟的进程调度程序,采用“短进程优先”调度算法对五个进程进行调度。三、实验设计方案及原理 在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行

2、。对调度的处理又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分配策略所规定的资源分配算法。短进程优先调度算法是指对短进程优先调度的算法,它是从后备队列中选择一个或者若干个进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。 四、重要数据结构或源程序中疑难部分的说明,需附详细注释 #include stdio.h #include #include #define getpch(type) (type*)malloc(sizeof(type) #define NULL0struct pcb /* 定义进程控制块PCB */ char

3、 name10; /进程名 char state; /状态 int super; /优先数 int ntime; /需要运行时间 int rtime; /运行时间 struct pcb* link; *ready=NULL,*p; typedef struct pcb PCB; int num;sort() /* 建立对进程进行短进程优先排列函数*/ PCB *first, *second; int insert=0; if(ready=NULL)|(p-ntime)ntime) /*需要运行时间最小者,插入队首*/ p-link=ready; ready=p; else /* 进程比较需要运

4、行时间,插入适当的位置中*/ first=ready; second=first-link; while(second!=NULL) if(p-ntime)ntime) /*若插入进程比当前进程需要运行时间小,*/ /*插入到当前进程前面*/ p-link=second; first-link=p; second=NULL; insert=1; else /* 插入进程需要运行时间最大,则插入到队尾*/ first=first-link; second=second-link; if(insert=0) first-link=p; void input() /* 建立进程控制块函数*/ int

5、 i; /clrscr(); /*清屏*/ printf(n 请输入进程数:); scanf(%d,&num); for(i=0;iname); printf(n 输入进程需要运行时间:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-state=w; p-link=NULL; sort(); /* 调用sort函数*/ void main() /*主函数*/ int i,len,h=0; char ch; input(); ch=getchar(); printf(n调度序列为:); p=ready; for(i=num;i0;i-) printf(

6、 %s,p-name); p=p-link; printf(nn 进程已经完成.n); ch=getchar(); 五、程序运行结果七、结果分析与实验小结 结果正确。短进程优先需要把进程按左右运行时间排序,然后让其按顺序执行即可。实验二 作业调度一、 实验目的:用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。二、 实验内容:1 写并调试一个单道处理系统的作业等待模拟程序。2 作业等待算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。 3 由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑

7、它所需要的资源是否得到满足,它所占用的 CPU时限等因素。4 每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。5 对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间。5、重要数据结构或源程序中疑难部分的说明,需附详细注释三、实验设计方案及原理 编写一个程序将输入的进程按其提交时间进行排列,按排列顺序进行调度,计算其开始时间、

8、完成时间、周转时间等数值四、重要数据结构或源程序中疑难部分的说明,需附详细注释先来先服务#include stdio.h #include #include #define getpch(type) (type*)malloc(sizeof(type) #define NULL0struct pcb /* 定义进程控制块PCB */ char name10; /进程名 char state; /状态 int super; /优先数 int ntime; /需要运行时间 int rtime; /运行时间 int ctime; /提交时间 int stime; /开始时间 int ftime; /

9、完成时间 int ttime; /周转时间 float dtime; /带权周转时间 struct pcb* link; *ready=NULL,*p; typedef struct pcb PCB; int num;void sort() /* 建立对进程先来先服务排列函数*/ PCB *first, *second; int insert=0; if(ready=NULL)|(p-ctime)ctime) /*达到时间最小者,插入队首*/ p-link=ready; ready=p; else /* 进程比较到达时间,插入适当的位置中*/ first=ready; second=first

10、-link; while(second!=NULL) if(p-ctime)ctime) /*若插入进程比当前进程到达时间小,*/ /*插入到当前进程前面*/ p-link=second; first-link=p; second=NULL; insert=1; else /* 插入进程到达时间最大,则插入到队尾*/ first=first-link; second=second-link; if(insert=0) first-link=p; void input() /* 建立进程控制块函数*/ int i; /clrscr(); /*清屏*/ printf(n 请输入进程数:); sca

11、nf(%d,&num); for(i=0;iname); printf(n 输入提交时间:); scanf(%d,&p-ctime); printf(n 输入进程需要运行时间:); scanf(%d,&p-ntime); printf(n); p-rtime=0;p-state=w; p-link=NULL; sort(); /* 调用sort函数*/ void main() /*主函数*/ PCB *first,*second; int i,x,y; float s1=0,s2=0; char ch; input(); ch=getchar(); /输出 printf(进程名t 开始时间t

12、完成时间t 周转时间t 带权周转时间n); second=ready; first=ready; first-ftime=0; for(i=num;i0;i-) if(second-ctimefirst-ftime) /*计算完成时间,周转时间等*/ second-stime=second-ctime; else second-stime=first-ftime; second-ftime=(second-ntime)+(second-stime); second-ttime=(second-ftime)-(second-ctime); x=second-ttime; y=second-ntime; second-dtime=(float)x/(float)y; printf( %s t %d t %d t %d t %f n,second-name,second-stime,second-ftime,second-ttime,second-dtime); s1=s1+second-ttime; s2=s2+second-dtime; if(se

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

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