操作系统实验报告+进程调度+作业调度等.doc
《操作系统实验报告+进程调度+作业调度等.doc》由会员分享,可在线阅读,更多相关《操作系统实验报告+进程调度+作业调度等.doc(49页珍藏版)》请在咨信网上搜索。
1、操作系统实验报告+进程调度+作业调度等 作者: 日期:49 个人收集整理 勿做商业用途操作系统实验报告 1、进程调度2、作业调度3、主存空间的分配与回收4、文件系统学生学院_计算机学院_专业班级_网络工程(3)班_学 号_3107007062_学生姓名_张菲_ _指导教师_胡欣如 _2009 年 12 月 20 日 计算机 学院 网络工程 专业 3 班_组、学号 3107007062 姓名 张菲 协作者 无 教师评定_实验题目 进程调度 一、 实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验内容和要求编写并调试一个模拟的进程调度程序,采用“简单时间
2、片轮转法”调度算法对五个进程进行调度.每个进程有一个进程控制块( PCB)表示.进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。 进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间. 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)两种状态之一。就绪进程获得 CPU后都只能运行一个时间片.用运行时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时
3、间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止.三、实验主要仪器设备和材料硬件环境:IBM-PC或兼容机软件环境:C语言编程环境四、实验原理及设计方案1、进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末
4、尾,再同样地按FCFS原则等待调度执行,以此类推。2、实验步骤:(1)按先来先服务算法将进程排成就绪队列。(2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行.(3)检查该运行进程是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾.(4)是否再插入新的进程,若是则把它放到第一逻辑队列的列尾。(5)重复步骤(2)、(3)、(4),直到就绪队列为空。五、流程图进程完成,撤消该进程就绪队列首进程投入运行时间片到,运行进程已占用CPU时间+1运行进程已占用CPU时间已达到所需的运行时间把运行进程插入到下一个队列的队尾插入新的进程开始初始化PCB,输入进程信息所有队
5、列都为空各进程按FCFS原则排队等待调度退出程序是 是六、结果过程及截图初始化队列进程所在的逻辑队列P1需要运行两个时间片,本进程才离开此队列输入所有进程后的进程信息如下:按Y键继续运行进程:P1需要运行1个时间片,本进程才离开此队列按Y键继续运行进程:P1加入到了第二个逻辑队列运行若干次后的状态:队列数越大,进程在次队列可停留的时间就越大P3运行完毕了添加新的进程:七、所遇困难的解决以及心得体会在这个多级反馈的实验中,我采取了用一条实际上的链表队列来模拟多个逻辑上的队列,通过维护几个链表的状态信息来找到每个进程运行完后应该插入的地方,还有一个标志位Fend用来表明新插入的队列的位置.虽然实验
6、原理很简单,但是在编写代码的过程中遇到了不少的问题,在两个小时之内已经完成的大体代码的编写,但是之中存在不少的问题,导致了用了差不多四个小时的时间去调试才把它弄好,这主要归咎于在开始设计代码的不太合理,在后期使得代码结构有些混乱,使得调试更加的麻烦,以及对编程的不熟悉.通过这个实验不仅使我对进程的调度算法有了更深的认识,使得理论知识得到的实践,也使我的编程能力得到了进一步提高。七、思考题1、 分析不同调度算法的调度策略,比较不同调度算法的优缺点,总结它们的适用范围.答:动态有限权算法:动态优先权是指在创建进程时所创建的优先权,会随进程的推进或者等待时间的增加而改变,以便获得更好的调度性能。处理
7、机为每个进程分配一定的时间片,在就绪队列中,优先权高的进程将优先获得处理机,进程在进去运行完响应的时间片后,如没完成,优先权减1,从新回到就绪队列等待分配处理机。时间片的轮转法:系统将所有进程排成一个队列,按照先来先服务的原则,对队列首的进程进行处理,每个进程在用完自己的时间片后,从新回到队尾进行排队。每运行一次,进程的需要时间减1,直到就绪队列为空!八、源代码#includestdio.hincludestdlib.h#include#define getpch(type) (type)malloc(sizeof(type)#define NULL 0#define TIME 2/时间片长度
8、typedef struct pcb/进程管理块char name10;/进程名字char state;/进程状态int queue;/进程所在的队列int ntime;/进程需要运行的时间int rtime;/进程已经运行的时间int etime;/进程在本队列可运行的时间片struct pcb *link;PCB;PCBready = NULL, *pinsert = NULL, pfend = NULL,p =NULL;/就绪队列,进程插入位置的变量int geti()/使用户仅能输入整数char ch;int i = 0;fflush(stdin);ch = getchar();whi
9、le(ch = n)printf(”tf输入不能为空。请重新输入n”);fflush(stdin);ch = getchar();while(ch != n)if(ch 9 ch queue ps-queue) 1) pinsert = ps;elsewhile (pslink ps -link-queue != (pfend -queue +2))ps = pslink;pinsert = ps;void insert()/插入进程if(!ready )ready = p;pfend = p;pinsert = p;else if(ready queue = 1)/第一队列存在plink =
10、 pfend-link;pfend-link = p;pfend = p;findpos();elseplink = ready;ready = p;findpos();void input()/*建立进程控制块函数*/int i,num;printf(n请输入进程的个数?);num = geti();for(i=0; i name);printf(”n输入进程运行时间:”);p ntime = geti();printf(n”);p-rtime=0;pstate=w;p-queue =1;p-etime = TIME;p-link=NULL;insert();/调用insert函数*/voi
11、d disp(PCB pr)/建立进程现实函数,用于显示当前进程*/printf(”nnamet statet queuet ntimet rtimet在队列可停留时间t n”);printf(|%st”,prname);printf(” |%ct,prstate);printf( |%dt,prqueue);printf(” |dt”,pr-ntime);printf( |%dt”,pr-rtime);printf(” |%dt,pr-etime);printf(n”);void check()/建立进程查看函数/PCB *pr;printf(n 当前正在运行的进程是:%s,ready-na
12、me);/*显示当前运行的进程*/disp(ready);pr= ready -link;printf(”n*当前就绪队列状态为:n);/*显示就绪队列状态/while(pr!=NULL)disp(pr);pr=pr-link;void sort()/调整进程队列if(!ready-link |readyqueue linkqueue) return;p = ready link;ready -link = pinsert link;pinsert -link = ready;pinsert = ready;ready = p;if (ready & ready - queue = pinse
13、rt -queue)findpos();void addnew()/添加新的进程if(ready -queue != 1)(ready queue)+;ready-etime *= 2;ready state=w;sort();/调用sort函数*/input();elseinput();void destroy()/*建立进程撤销函数(进程运行结束,撤销进程)/printf(”n进程s已完成.n,readyname);p = ready;ready = ready-link;free(p);if (ready & ready - queue = pinsert queue)findpos()
14、;void running()/建立进程就绪函数(进程运行时间到,置就绪状态)/(ready rtime)+;ready -etime -;if(readyrtime = readyntime)destroy();return;else if(ready etime = 0)int time = 2;(ready queue)+;for(int i = 2; i != readyqueue; +i)time *= 2;readyetime = time;ready - state=w;sort();/调用sort函数*/void main()char ch;input();while(read
15、y != NULL)printf(nThe execute name:%sn”,ready name);ready state = R;check();running();printf(”n按i键添加新进程。按其他任意键继续运行.);fflush(stdin);ch = getchar();if (ch = i| ch=I)addnew();printf(”nn 进程已经完成n);getchar(); 计算机 学院 网络工程 专业 3 班_组、学号 3107007062 姓名 张菲 协作者 无 教师评定_实验题目 作业调度 一、实验目的本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个
16、或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算法的理解。二、实验内容和要求1、编写并调度一个多道程序系统的作业调度模拟程序。作业调度算法:采用基于先来先服务的调度算法.可以参考课本中的方法进行设计。 对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。三、实验主要仪器设备和材料 硬件环境:IBMPC或兼容机软件环境:C语言编程环境四、实验原理及设计方案采用多道程序设计方法的操作系统,在系统中要经常保留多个运行的作业,以提高系统效率。作业调度从系统已接纳的暂存在输入井中的一批作业中挑选出若干个可运行的作业,并为这些被选中的作业
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 进程 调度 作业
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。