CPU分时系统的模拟

  • 格式:doc
  • 大小:332.50 KB
  • 文档页数:4

CPU分时系统的模拟
(哈尔滨工业大学计算机科学与技术系1090310519 刘忠奇)
【摘要】
本文主要介绍了分时系统的含义,以及利用C++语言通过数据结构的队列方法实现CPU分时系统模拟的方法。

【关键字】
队列CPU分时系统数据结构C++
【前言】
分时系统的含义
“分时”的含义:分时是指多个用户分享使用同一台计算机。

多个程序分时共享硬件和软件资源。

分时操作系统是指:在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源。

实验设计要求及目的
把CPU同时分给多个用户使用的方法,称为分时方法。

本实验就是要用队列模拟CPU 为多个用户分配时间的过程,掌握CPU的调动原则。

这种调度原则可归纳为以下三点:
1、当一用户请求CPU时间,它就进入请求使用CPU的队列。

2、在此队列首部的用户是当前CPU的使用者,并在整个CPU时间周期内
继续在队首。

3、当一用户完成了它的现行请求CPU的时间周期后,出队,并在下一个
请求之前不再入队。

【CPU分时系统的实现】
实验环境
Code::Blocks 8.02
输入
用户总数
每个用户的名字
每个用户顺序请求的时间周期
延迟时间
输出
带有时间轴的每个用户的时间分配图(以字符表示)
简单构思
分时系统,首先确定整个程序中最重要的就是时间,所以定义时间为整体变量,便于每个时间周期结束后对其进行++操作。

其次是每个时间周期对每个用户的处理,笔者考虑以一个变量代表目前使用CPU的用户,对每个用户创建一个队列,对其进行处理。

最后就是一些小的修正了。

实际流程
1、定义队列,以及“用户”结构体类型,全局变量Time并初始化,声明函数TimePass()。

2、主函数。

提示用户输入数据。

3、初始化变量“每个用户的最后完成时间”,“目前使用CPU的用户”,以及“该用户占用CPU的剩余时间”。

4、开始对每个时间周期处理。

建立一个循环,当所有用户的队列皆为空时停止循环,否则执行函数TimePass()。

5、函数TimePass()的定义。

首先判断当前CPU有无用户使用。

若没有,则用一个循环把优先级最高的用户的请求出队,放入CPU;若有,判断该用户占用CPU的剩余时间是否为0,若为,则清空CPU,用一个循环把下一个优先级最高的用户的请求出队,放入CPU。

此时判断结束,将此时刻的工作状态以字符形式附在每个用户结构体中预设的字符串的后面。

最后,Time++,若有剩余时间,剩余时间--,若CPU有用户且剩余时间为0,记录该用户的上次完成时间为当前时间-1。

实例测试
测试输入
启动对话相对时间用户名请求CPU的时间周期
0 Wang 4,8,3
1 Li 2,1,2,2
2 Yao 4,6,1
延迟时间:5
实际每个用户的时间分配图
程序的输入输出
【总结】
通过对分时系统的模拟,了解了CPU分时工作的流程,并且熟练了队列的使用,加深了对队列的理解。