动态分区式存贮区管理讲述.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态分区式存贮区管理讲述

??《操作系统上机》课程报告????姓名:姜瑞班号: 193151 学号:指导教师:张求明院(系):计算机学院专业:网络工程? 2016 年11月独立工作成果声明本人声明所呈交的《操作系统上机》报告,是我个人在导师指导下进行的程序编制工作及取得的成果。尽我所知,除文中已经标明的引用内容,和已经标明的他人工作外,本报告未包含任何抄袭自他人的工作成果。对本报告的工作做出贡献的个人,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。报告作者签名:日期:年月日实验一?多级队列调度算法(1)课程设计题目:多级队列调度算法(2)程序功能及设计思路程序功能:模拟CPU在处理程序时的进程调度,使用循环轮转法和短进程优先调度的算法来完成一组请求。设计思路:首先使用一个cpp文件将运行所需要的数据写入一个文件名为”1.txt”的文本文件,格式是“Pi need turn”,每组数据之间换行隔开,则可以在运行的cpp文件中得到所需要运行的内容。在程序实现的过程中,按照题目所给要求从文件中读取数据,前五项按照已等待时间排序成一个循环队列(已等待时间长的放在队伍的靠前的地方),后五项按照需要运行的时间排成一个队列(运行时间短的放在队伍靠前的地方)。然后按照实现的描述来进行数据的处理。最后输出每一个进程运行所需要的时间。(3)数据结构及算法设计数据结构:①结构体struct tag_pcb②队列③循环队列④文件流数据算法设计:①对于循环队列RQ1,从文件中依次读取进程的信息,根据要求形成循环队列,然后从队首开始循环,每次使用一个时间片q的长度,看该进程是否运行完成,如果在时间片以内的时间运行完成,则仅耗费所需时间,然后将该进程的运行时间存入数组中,将该进程从队列中移除,并将队列连接完好,然后使用delete删除该进程所占用的内存空间,接下来从下一个进程继续,依次循环往复,直到所有的进程均运行完成。②对于队列RQ2中形成队列时,按照要求形成单向队列,然后从需要时间短的开始运行,运行完之后将时间存入数组,然后将该进程使用delete删除,然后将当前指针移到下一位置,进行下一个进程的处理。直到所有进程均运行完成,即队列为空的状态。③在使用数组存放的时候a[i]对应相应的进程运行时耗费的时间,然后从a[0]输出到a[9],即可输出对应时间。(4)程序运行情况(5)编程中遇到的困难及解决方法、实习心得或良好建议困难和解决方法:1.对于C++文件的写入和读取不是很熟练,在网上查找相关写法之后按照格式试验完成了文件的操作。2.对于链表形式的队列原本不是很熟悉,在写代码的过程中遇到了很多的麻烦,可以处理一次的队列操作,但是在写成循环时时常出现队列断链或者连错的情况,这个问题是经过自己多次调试,反思原理之后改错完成的。3.在字符型char和整型int的转化中之前对于P10进程的判断有一些错误,之后经过调试发现问题,然后对字符串长度进行判断解决了这个问题。源代码贴在下方:/****写入数据.cpp****/#includeiostream#includefstreamusing namespace std;struct tag_pcb{ char name[8]; int need; //需运行时间 int turn; //周转时间 struct tag_pcb *next;}PCB[10];int main(){ int i; for(i=0;i10;++i) { PCB[i].name[0]=P; PCB[i].name[1]=i+49; } PCB[9].name[1]=1,PCB[9].name[2]=0,PCB[9].name[3]=\0; PCB[0].need=16;PCB[1].need=11;PCB[2].need=14; PCB[3].need=13;PCB[4].need=15;PCB[5].need=21; PCB[6].need=18;PCB[7].need=10;PCB[8].need=7; PCB[9].need=14; PCB[0].turn=6;PCB[1].turn=5;PCB[2].turn=4; PCB[3].turn=3;PCB[4].turn=2;PCB[5].turn=1; PCB[6].turn=2;PCB[7].turn=3;PCB[8].turn=4; PCB[9].turn=5; cout写入文件的数据如下:endl; for(i=0;i10;++i) coutPCB[i].name ; coutendl;

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档