ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:353.11KB ,
资源ID:7699260      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7699260.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课程设计报告.docx

1、操作系统课程设计报告操作系统课程设计报告题目: 采用时间片轮转算法的进程调度程序 专业学生姓名班级学号指导教师完成日期2016年6月17日6.1 完整扥程序代码.126.2 主要/关键算法的程序清单34一、课程设计目的操作系统是一门重要的专业基础课,是涉及较多硬件知识的计算机系统软件课程。在计算机软硬件课程的设置上,它起着承上启下的作用。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。操作系统课程设计的主要任务是研究计算机操作系统的基本原理和算法,掌握操作系统的进程管理、存储管理、文件管理和设备管理的基本原理与主要算法。

2、目的是使学生掌握常用操作系统(如DOS、Windows或Linux)的一般管理方法,了解它是如何组织和运作的,对操作系统的核心概念和算法有一个透彻的理解,并对系统运行的机制有一个全面的掌握,从而充分理解系统调用与程序设计之间的关系。进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及

3、编写软件设计文档的能力。二、课程设计内容与要求2.1 设计目的在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,且进程之间也存在着同步与互斥的关系,要求采用指定的调度策略,使系统中的进程有条不紊地工作,通过观察诸进程的运行过程,以巩固和加深处理机调度的概念。2.2 设计要求(多道、单处理机)1) 每一个进程有一个PCB,其内容可以根据具体情况设定。2) 可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目3) 进程数、进入内存时间、要求服务时间可以在界面上进行设定4) 进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:进程的服务时间由三段组成:

4、I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:I2C10O5W25) 可以在运行中显示各进程的状态:就绪、阻塞、执行6) 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列7) 具有一定的数据容错性三、系统分析与设计3.1 系统分析在早期的的时间片轮转算法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当执行的

5、时间片用完时,由一个计时器发出中断请求,调度程序便根据此信号来终止该进程的执行,并将它送到就绪队列的末尾。然后,再把处理机分配给就绪队列中新的队首进程,同时让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一个给定的时间内均能获得一个时间片的处理机执行时间。3.2 系统设计3.2.1 模块设计3.2.2 数据结构说明此次设计用到了LinkedList和HashMap。Linkedlist:此次程序编写过程中把链表当成一个队列来用,采用时间片轮转算法在就绪队列中选择要运行的进程时总是取第一个进程执行,而将时间片用完总是添加到就绪队列尾端,因此用LinkedList较为合适。HashMap:

6、要保证进程之间同步则必须清楚的知道任意时刻每个进程的执行情况,而在进程调度过程中,你并不知道任意时刻进程处于什么状态。为此,把所有进程以它们的进程号作为关键字加入到HashMap中,则可以做到在任意时刻通过进程的进程号找到该进程,从而可以检查它的执行状态。3.2.3 算法流程图 四、系统测试与调试分析4.1 系统测试测试说明测试名称采用时间片轮转算法的进程调度程序测试目的验证调度的正确性测试技术功能测试测试方法黑盒测试法测试用例测试内容验证调度是否正确测试步骤设置输入、输出设备以及进程数目设置或导入每个进程名称、开始时间、服务时间设置时间片大小点击“开始”,开始调度测试数据预期结果进程名|输入

7、设备|CPU|输出设备|互斥关系|开始时间|已输入|已输出|已用时间片|已用CPU|完成|周转|带权周转时间|状态2 0 0 0 0 5 6 1 2 4 16 11 2.75 true3 0 0 0 2 3 5 4 2 6 42 39 6.5 true1 0 0 0 2 1 2 6 6 12 51 50 4.17 true4 0 0 0 3 6 1 6 2 5 59 53 10.6 true5 0 0 0 1 4 2 4 3 6 66 62 10.33 true测试结果与预期结果相符运行记录开始执行。第 5 秒: 进程 2添加到就绪队列第 5 秒:执行进程 2第 5 秒:进程 2 输入阻塞!第

8、 5 秒:进程 2 获得输入设备第 10 秒:进程 2 输入完成,转入就绪队列第 10 秒:进程 2 释放输入设备第 11 秒:执行进程 2第 14 秒:进程 2 时间片用完,转入就绪队列队尾,继续等待执行第 15 秒:执行进程 2第 15 秒:进程 2 输出阻塞!第 15 秒:进程 2 获得输出设备第 15 秒:进程 2 输出完成,转入就绪队列第 15 秒:进程 2 释放输出设备第 16 秒:执行进程 2第 16 秒:进程 2 执行完毕,转入完成队列!第 17 秒: 进程 1添加到就绪队列第 17 秒: 进程 3添加到就绪队列第 17 秒:执行进程 1第 17 秒:进程 1 输入阻塞!第 1

9、7 秒:进程 1 获得输入设备第 18 秒:执行进程 3第 18 秒:进程 3 输入阻塞!第 18 秒:进程 1 输入完成,转入就绪队列第 18 秒:进程 1 释放输入设备第 18 秒:进程 3 获得输入设备第 19 秒:执行进程 1第 21 秒:进程 1 时间片用完,转入就绪队列队尾,继续等待执行第 22 秒:执行进程 1第 22 秒:进程 3 输入完成,转入就绪队列第 22 秒:进程 3 释放输入设备第 25 秒:进程 1 时间片用完,转入就绪队列队尾,继续等待执行第 26 秒:执行进程 3第 29 秒:进程 3 时间片用完,转入就绪队列队尾,继续等待执行第 30 秒:执行进程 1第 33

10、 秒:进程 1 时间片用完,转入就绪队列队尾,继续等待执行第 34 秒:执行进程 3第 36 秒:进程 3 输出阻塞!第 36 秒:进程 3 获得输出设备第 37 秒:执行进程 1第 37 秒:进程 1 时间片用完,转入就绪队列队尾,继续等待执行第 38 秒:执行进程 1第 39 秒:进程 3 输出完成,转入就绪队列第 39 秒:进程 3 释放输出设备第 41 秒:进程 1 时间片用完,转入就绪队列队尾,继续等待执行第 42 秒:执行进程 3第 42 秒:进程 3 执行完毕,转入完成队列!第 43 秒: 进程 4添加到就绪队列第 43 秒:执行进程 1第 43 秒:进程 1 输出阻塞!第 43

11、 秒:进程 1 获得输出设备第 44 秒:执行进程 4第 44 秒:进程 4 输入阻塞!第 44 秒:进程 4 获得输入设备第 44 秒:进程 4 输入完成,转入就绪队列第 44 秒:进程 4 释放输入设备第 45 秒:执行进程 4第 47 秒:进程 4 时间片用完,转入就绪队列队尾,继续等待执行第 48 秒:执行进程 4第 48 秒:进程 1 输出完成,转入就绪队列第 48 秒:进程 1 释放输出设备第 50 秒:进程 4 输出阻塞!第 50 秒:进程 4 获得输出设备第 51 秒:执行进程 1第 51 秒:进程 1 执行完毕,转入完成队列!第 52 秒: 进程 5添加到就绪队列第 52 秒

12、:执行进程 5第 52 秒:进程 5 输入阻塞!第 52 秒:进程 5 获得输入设备第 53 秒:进程 5 输入完成,转入就绪队列第 53 秒:进程 5 释放输入设备第 54 秒:执行进程 5第 54 秒:进程 5 时间片用完,转入就绪队列队尾,继续等待执行第 55 秒:执行进程 5第 55 秒:进程 4 输出完成,转入就绪队列第 55 秒:进程 4 释放输出设备第 58 秒:进程 5 时间片用完,转入就绪队列队尾,继续等待执行第 59 秒:执行进程 4第 59 秒:进程 4 执行完毕,转入完成队列!第 60 秒:执行进程 5第 62 秒:进程 5 输出阻塞!第 62 秒:进程 5 获得输出设

13、备第 65 秒:进程 5 输出完成,转入就绪队列第 65 秒:进程 5 释放输出设备第 66 秒:执行进程 5第 66 秒:进程 5 执行完毕,转入完成队列!第 66 秒:所有进程已执行完毕,用时 66 秒!4.2 调试分析4.2.1 实际完成的情况说明实现采用时间片轮转算法的进程调度程序的全部功能,简单实现了采用短作业优先算法的进程调度程序和采用高响应比优先算法的进程调度程序,可以正确调度进程并在调度过程中检测进程状态。可以检测死锁,并给出警告。调度执行完成后,可以计算平均周转时间和平均带权周转时间。4.2.2 程序的性能分析程序窗口在打开过程中会有闪烁,但在最小化窗口并还原之后便可正常显示

14、,对程序执行没有影响。4.2.3 出现的问题及其解决方案由于刚开始在设计过程中对进程的调度没有一个整体的认识,导致在进行进程状态转换阶段程序编写的思路不清晰,走了很多弯路。解决方案:查看课本,仔细分析进程的五种基本状态及转换,采用模块法编写程序。五、用户手册5.1 使用平台是Eclipse。下载网址:http:/www.eclipse.org/downloads/5.2 安装平台Eclipse是一个开放源代码的软件开发项目,不需要安装,只需将下载下来的压缩包解压到指定位置,然后点击“eclipse.exe”即可运行。5.3 使用说明1)打开eclipse后,在项目区单击右键,选择Import,

15、打开下面对话框2)选择“Existing Projects into Workspace”,然后点击“Next”3)选中“Select root directory”,然后点击“Browse”4)找到解压后项目存在的文件夹,选中后点击“确定”,即可成功将项目导入。5)打开“Main.java”,右键选择“Run As”,单击“Java Application”,即可运行。6)设置输入、输出设备以及进程的的数目,直接回车或者单击“确定”7)为每个进程设置进程名、开始时间以及服务时间(注意:也可导入样例数据,但是此时进程数不可超过20)。8)设置时间片大小(此步可省略,默认时间片大小为3 S)9)

16、单击开始,模拟调度则开始进行,调度进行过程中可随时暂停调度以便查看当前状态。10)所有进程执行完成后,可以选择“导出文件”来导出并保存调度运行记录11)点击“重置”,则重新开始运行程序,如不需要重新执行,直接退出程序即可。六、程序清单6.1完整的程序代码package pvt.mbc.main;import pvt.mbc.mainframe.MainFrame;public class Main /* * param args */ public static void main(String args) / TODO Auto-generated method stub MainFrame

17、 mainFrame ; mainFrame = new MainFrame() ; mainFrame.run() ; package pvt.mbc.mainframe;import java.awt.Button;import java.awt.Color;import java.awt.Container;import java.awt.Label;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListene

18、r;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.ObjectInputStream;import java.text.NumberForm

19、at;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.Map;import javax.swing.JComboBox;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTab

20、le;import javax.swing.filechooser.FileNameExtensionFilter;import pvt.mbc.pcb.Process;、public class MainFrame extends JFrame implements ActionListener, ItemListener static int proID = 1 ; /进程编号,1n static int t ; static int time ;/ private Thread runThread ; private static final long serialVersionUID

21、= 1L; JFileChooser jFileChooser ; BufferedWriter bWriter ; FileWriter fileWriter ; FileNameExtensionFilter filter ; int i ;/ 系统运行时间 boolean start = false ; Button startButton,suspendButton ,continueButton ; Container container ; TextField procountField , proentertimeField , servetimeField ; Label pr

22、ocount , proentertime , servetime ; Label indeviceJLabel; Label outdeviceJLabel ; TextField inField , outField ,processnameField ; JTable table ; Button ionumokButton , processSetButton ,datainputButton ; Label noticeJLabel ,processnameLabel ;Label timepiceLabel ; Label roundLabel,proundLabel ; Text

23、Field roundField,proundField ; TextField timepiceField ; int pcbnumber ;/进程数目 int innumber ;/输入设备数目 int outnumber ;/输出设备数目 int timepice = 3 ;/默认为3s Button timeokButton ; Label houbei,ready,block,finish,onrun ; TextArea houbeiArea ; TextArea finishArea ; JComboBox choiceBox ; TextArea readyArea ; Tex

24、tArea blookArea ; TextArea onrunArea ; TextArea showstateArea ; LinkedList houbeiList ; LinkedList readyList ; LinkedList blockList ; LinkedList finishList ; Process onrunProcess ; Map sysMap ; Button resetButton ; Button dataoutButton ; int index = 0 ; public MainFrame()setDefaultCloseOperation(EXI

25、T_ON_CLOSE) ; setTitle(采用时间片轮转算法的进程调度程序) ; setBounds(0, 0, 1366, 730) ; setVisible(true) ; init() ; public void init() / TODO Auto-generated method stub /mianFrame = new JFrame(采用时间片轮转算法的进程调度程序) ; jFileChooser = new JFileChooser() ; filter = new FileNameExtensionFilter(运行结果保存, txt) ; jFileChooser.se

26、tFileFilter(filter) ; sysMap = new HashMap() ; houbeiList = new LinkedList() ; readyList = new LinkedList() ; blockList = new LinkedList() ; onrunProcess = null ; finishList = new LinkedList() ;/ pause = false ; time = timepice ; container = new Container() ; container.setLayout(null) ; resetButton

27、= new Button(重置) ; resetButton.setBounds(480, 575, 50, 25) ; resetButton.setBackground(Color.green) ; resetButton.addActionListener(this) ; ionumokButton = new Button(确定) ; ionumokButton.setBackground(Color.green) ; ionumokButton.setBounds(200, 610, 50, 25) ; ionumokButton.addActionListener(this) ;

28、processSetButton = new Button(设置) ; processSetButton.setBackground(Color.green) ; processSetButton.setBounds(480, 610, 50, 25) ; processSetButton.addActionListener(this) ; startButton = new Button(开始) ; startButton.setBounds(1270, 540, 50, 25) ; startButton.setBackground(Color.green); startButton.ad

29、dActionListener(this); suspendButton = new Button(暂停) ; suspendButton.setBounds(1270, 575, 50, 25) ; suspendButton.setBackground(Color.green); suspendButton.addActionListener(this) ; continueButton = new Button(继续) ; continueButton.setBounds(1270, 610, 50, 25) ; continueButton.setBackground(Color.green); continueButton.addActionListener(this) ; datainputButton = new Button(导入数据) ; datainputButton.setBounds(480, 540, 50, 25) ; datainputButton.addActionListener(this) ; procountField = new TextField() ; procountField.setBounds(120, 610, 50, 25) ; procountField.addActionListener(this) ;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1