操作系统实验二——cpu调度与内存分页.docxVIP

操作系统实验二——cpu调度与内存分页.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
kkk kkk -k-k-k -k-k-k 一、 试验目的 理解操作系统内存管理的原理及分页内存管理方案 二、 试验要求 1、 实现分页内存管理方案,假定页和帧的大小均为 4KB,物理内存为128MB 2、 输入为进程ID,所需内存大小等,输出为页表。 3、 请按要求撰写实验报告,并和源程序一起打包上传 4、 实验平台不限,linux和windows均可 5、 与第一次实验的程序整合成一个程序 三、 试验环境 Win dows XP Visual C++ 6.0 四、试验内容 为了与上一个实验结合,并且考虑到可能需要兼容以后的实验, 所以本次实验不但重写 了 PCB,而且按照自己对操作系统的理解构造出了一虚拟的 I/O设备和两套调度程序 (作业 调度程序和CPU调度程序) 、 首先从与内存分配相关的作业调度函数说起,程序中为 Jobs_scheduler。 Job_scheduler的作用如下图所示; 就绪队列 p6 p6 作业调度程序 (Jobsscheduler) Job_scheduler从大容量存储设备上的缓冲池中载入新生成的进程到内存, 同时生成新的 PCB到就绪队列中。 这里涉及到了两个数据结构 class Program, class PCB。 Program : 进程编号 number 需要页的数冃 int page_numbers 貝体内容. 51理解为就码 vectorint v PCB: 编号 number 进程状态 int ate 程序计数器 int pc[2] 记账信息 这里是运行时间run_time PageTabie PCB 中的 state包含五个状态 NEW、READY、RUN、WAITING、TERMINA TED,加 入到ReadyQueue中等待运行的 PCB均为READY状态的,运行中会被置为 RUN, WAITNG状态为等待I/O设备的进程,如果进程状态为 TERMINA TED,将会被移出作 业队列。 Job_scheduler函数在将program装入内存前,会查看帧表内空闲的帧的数目是否大于等 于program所需的页数目,如果成立才装入,并且为 PCB构造页表。构造时,先按照帧表 通过顺序查找找到可用的帧,然后就将页的内容加载上去。 接下来是CPU调度程序,也成为短期调度程序。 CPU_scheduler所做的工作如下图所示,其操作的队列是就绪队列 RedayQueue 如果terminated就删除 本程序采用的调度算法为分时调度,时间片大小 TimeSlice取为1 (当然这个随时都可 用改动), 里面执行程序的函数 Run是模拟CPU功能的,它会返回一个值,Normal表示执行正常, 若是返回了 INTERRUPT中断;ERROR出错就会中断此次运行,并且将所指 PCB从 ReadyQueue 中移除。 这里的Run函数其实模拟了 CPU的取指令和翻译指令的功能,本程序只有一个有实际 作用的指令,’0,如果内存中的内容为0(十进制ASC n码值),则代表需要利用I/O设备 输出该地址内容。如上图所示, PCB会加入到 Wait in gQueue中等待I/O,并判断此时I/O设 备是否开启,如果未开启则开启设备。 Run函数也因此返回一个interrupt值。 kkk kkk kkk kkk 运行结果 C 二 \ s C 二 \ s and Sett incsXAdMimist rat or面 *i岸 1T系统宾螫二%皿日?ADebueX- ■ BBB Si run t ±nte 1 m2 run t Ime 1 V3 run t Ine 1 run t Ine 1 run £ Ine 1 而1:11 run C Ine 1 run t Ine 2 run t ±nte 2 run t Ime 2 run t Ine 2 run t Ine 3 run t Ine 3 run £ Ine 4 inni run t Ine 4 run t Ine 5 run t ±nte 5 run t Ime 6 P丄 IZO- -O u丄 run t Ine 2 p丄 run £ Ine 3 p1 run £ Ine 4 p丄 run t Ine 5 p丄 run t ±nte 6 p丄 run t Ime 7 p丄 run t Ime 8 p丄 run t Ine 9 p丄 run tIne IO 在编号为1的进程中的第一个内存单位设置了一条 I/O指令,可以看出其发生中断后等 待I/O完成才重新回到 ReadyQueue中并执行完毕。 以上结果是在内存足够大的情况,下面再看一组内存不能同时满足需求的情况 andl SgttihjE基lAdivti手七卞越;茧、桌面耳提作垂统实

文档评论(0)

cooldemon0601 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档