当前位置:首页 > 模拟进程调度功能的设计与实现操作系统课程设计(JAVA版本) - 图文
操作系统课程设计
--进程调度子系统模拟实现
一、 设计内容及意义
1. 课程设计内容
使用java语言或C++语言编程实现模拟操作系统进程调度子系统的基本功能;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;掌握各个调度算法的特点。 2. 该课程设计意义
? 理解进程调度的概念
? 深入了解进程控制块的功能、进程的创建、删除以及进程各个状态
间的转换过程
? 从实用的角度对《数据结构》课程内容进行更深入理解和更熟练的
应用
? 进一步练习对Java及C++语言的熟练使用
二、 设计方案
1. 硬件环境
PC一台
2. 开发语言及工具
? 操作系统:MS windows XP
? C++版:Visual Studio 2008 + MFC ? Java版:Eclipse 3.4 + Java Swing 3. 设计思路
? 系统设备表用于存取调度过程中进程可申请的资源 ? 进程控制块主要负责具体进程信息的保存
? 等待队列、就绪队列、完成队列用于保存执行过程的状态信息 ? 进程调度进程(类、线程)在就绪队列与等待队列之间进行调度 ? 主界面显示调度过程的三个队列的状态信息 ? 用户创建进程放入就绪队列等待调度
三、 功能模块设计
1. 进程状态转换
等待创建进程就绪执行进程结束
1 / 24
2. PCB信息
? 主要负责保存各进程基本信息 ? 提供外部状态设置和读取接口 3. 系统设备类
? 系统设备的基本信息
? 设备状态设置、读取接口 4. 调度类
? 向就绪队列添加新创建进程 ? 从就绪队列取相应进程执行 ? 将执行阻塞进程放入等待队列
? 检测系统设备表,分配、释放设备、唤醒等待进程
? 执行完成程序放入完成队列(仅为保存状态,非系统部分) ? 提供获取执行状态的外部接口,即各个队列数据的获取 5. 视图类
? 提供用户操作接口(调度策略选择、进程创建) ? 显示各队列状态信息
? 创建进程调度类线程,调用调度类的接口
四、 程序总控流程图
1. 用户接口、调度算法、进程状态转换关系示意
系统总体设计初始化系统创建进程调度进程初始化系统设备表用户选择调度策略启动进程调度进程根据具体算法调度进程请求资源执行完成等待队列就绪队列完成队列初始化进程创建进程设置进程基本信息添加设备请求创建进程加入就绪队列页面 1 2 / 24
2. 调度算法基本工作流程示意
进程调度框架用户选择进程调度算法创建进程初始化进程基本信息将进程放入就绪队列根据算法从就绪队列调度YN就绪队列是否有进程等待执行Y从就绪队列取出执行某一时刻需要资源Y放入等待队列执行完毕资源满足页面 1
五、 数据结构设计
1. PCB(进程基本信息)
? 类结构
ProcessPCB--------PidPnameuserNamePriotitysubtimetotalTimerunTimeDcRequestLst: int: String: String: int: int: int: int: List
3 / 24
1. pid进程ID 2. pName进程名
3. userName进程用户 4. priority进程优先级 5. subtime进程提交时间
6. totalTime进程需要执行的总时间 7. runtime进程已经运行时间
8. dcReqlst当前进程所需要的设备请求表
2. Dispatcher(进程调度进程)
? 类结构
Dispatcher-------SystimeisContentionpreLstwaitLstfinishLstexecutingsysDcLst: int: boolean: List
1. sysTime系统时间
2. isContention当前调度是否为抢占方式 3. prelst就绪队列 4. waitlst等待队列 5. finishlst完成队列
6. executing正在执行的进程 7. sysDclst系统设备表
3. Device(系统设备)
? 类结构 Device------dcIddcTypedcDiscdcTimedcPiddcleftTime: int: int: String: int: int: int ? 说明
1. dcid设备标识 2. dcType设备类型
3. dcTime该设备一次I/O服务需要时间 4. dcPid使用该设备的进程 5. dcDisc设备描述
6. dcLefTime设备剩余服务时间
六、 程序代码结构
1. 类层次关系
4 / 24
共分享92篇相关文档