操作系统课程设计-时间片轮转算法java实现

操作系统课程设计-时间片轮转算法java实现
操作系统课程设计-时间片轮转算法java实现

课程设计

题 目:处理机管理模拟系统的设计与 实现 学生姓名:

学 院:信息工程学院 系 别:软件工程系 专 业:软件工程 班 级: 指导教师:副教授 讲师

2013年1月8日

学校代码: 10128 学 号: 201020205056

内蒙古工业大学课程设计任务书(四)

学院(系):信息学院软件工程系课程名称:操作系统课程设计指导教师(签名):

专业班级:学生姓名:学号:

一、课程设计题目

处理机管理

二、课程设计的目的

学生通过设计一个模拟单处理机调度的算法,以巩固和加深处理机调度的概念。使学生初步具有研究、设计、编制和调试操作系统模块的能力。

三、课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等)

原始数据:进程控制块PCB结构体。

技术参数:Windows XP系统,VC++6.0开发工具。

设计要求:

1.设计基于时间片轮转法的处理机调度算法;

2.或设计基于先来先服务或基于优先权的处理机调度算法;

3.画出以上算法流程图;

4.编程实现算法功能;

5.编写课程设计说明书。

工作量要求:完成以上设计要求中的所有算法功能。

四、工作进度安排

周一:布置、讲解题目,收集资料;

周二:系统分析,算法设计;

周三:编制、调试程序;

周四:测试系统,形成设计结论,编写课设报告;

周五:系统及材料验收,课设答辩。

五、主要参考文献

[1] 张尧学编.计算机操作系统教程(第三版)习题解答与实验指导.北京:清华大学出版社,2006

[2] 汤子瀛主编.计算机操作系统(第三版).西安:西安电子科技大学出版社,2001

[3] 张坤等编.操作系统实验教程.北京:清华大学出版社,2008

审核批准意见

系(教研室)主任(签字)

摘要

操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业优先调度算法;在分时系统中,为保证系统具有合理的响应时间,采用时间片轮转法进行调度。采用算法时,则要考虑多方面因素,以便达到最佳效果。本次课程设计采用时间片轮转调度算法来实现模拟进程调度任务的执行过程。

用Java模拟进程调度过程,可以方便地将运行结果直观地表示出来。Java语言独有的多线程操作,可以实现许多其他语言不能实现的功能,极大地方便了程序开发人员对程序的开发。此外,利用JavaGUI编程,可以使系统提供的界面更加友好。实验中,应用文件I/O操作、线程、AWT、Swing、内部类、接口、异常处理等技术,开发此系统。

关键字:时间片轮转; Java编程; GUI图形用户界面;文件操作;

Abstract

The operating system is a key component of the computer system, responsible for the management and configuration memory, decided to system resources supply and demand priority, control input and output equipment, operation and management of network file system, and other basic tasks.For different systems and system target, computers usually use different scheduling algorithm, such as in a Batch Processing System, in order to take care of a lot of short operation, using Short Job First algorithm;In systems with time sharing, to ensure the system has reasonable response time, need time slice Round Robin algorithm for scheduling. The algorithm, we should consider various factors, in order to achieve the best effect.This Course Design uses time slice Round Robin algorithm to simulate the process scheduling task execution process.

With Java simulation process scheduling process, which can be conveniently will run results intuitively said out.In addition, the use of JavaGUI programming, can make the system to provide the interface more friendly.Experiments, application file I/O operation, threads, AWT, Swing, internal class, interface, abnormal processing technology, the development of this system.

Keywords: time slice Round Robin; Java Programming; Graphical User Interface; File Operation;

目录

第一章问题分析 -------------------------------------------------------- 1

1.1设计目的 -------------------------------------------------------- 1

1.2设计目标 -------------------------------------------------------- 1

1.2.1问题描述--------------------------------------------------- 1

1.2.2基本要求--------------------------------------------------- 1

1.3设计思想和运行环境 ---------------------------------------------- 1 第二章概要设计 -------------------------------------------------------- 3

2.1系统结构 -------------------------------------------------------- 3

2.1.1系统结构层次图--------------------------------------------- 3

2.1.2系统功能说明----------------------------------------------- 3

2.2算法描述 -------------------------------------------------------- 4 第三章详细设计 -------------------------------------------------------- 5

3.1系统程序流程图 -------------------------------------------------- 5

3.2内部接口设计 ---------------------------------------------------- 7

3.2.1系统框架接口run() --------------------------------------- 7

3.2.3创建进程接口createFrame() --------------------------------- 8

3.2.4运行程序接口runFrame() ------------------------------------ 8

3.2.5显示结果接口resultFrame() --------------------------------- 9

3.3用户接口 -------------------------------------------------------- 9 第四章系统实现 ------------------------------------------------------- 11

4.1编码实现 ------------------------------------------------------- 11

4.2单元测试 ------------------------------------------------------- 11

4.2.1创建进程模块---------------------------------------------- 11

4.2.2运行程序模块---------------------------------------------- 13

4.2.3结果显示模块---------------------------------------------- 14

4.3遇到的问题 ----------------------------------------------------- 15 第五章自我评价与总结 ------------------------------------------------- 16 参考文献 -------------------------------------------------------------- 17

第一章问题分析

1.1设计目的

在多道程序或多任务系统中,系统同时处于就绪态的进程有若干个。也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊地运行,必须选择某种调度策略,以选择一进程占有处理机。要求设计一个模拟单处理机调度的算法,以巩固和加深处理机调度的概念。

1.2设计目标

1.2.1问题描述

处理机管理是操作系统中非常重要的部分。为深入理解处理机调度部分的功能,设计一个按时间片轮转调度CPU的算法,模拟实现处理机的调度。

1.2.2基本要求

时间片轮转调度CPU的算法是分时系统采用的典型算法,把CPU的执行时间分成若干个一定大小的时间片轮流的分配给就绪队列的各个进程,让各就绪进程按指定的顺序分别占用CPU的一个时间片轮流执行下去,直至完成。要求定义进程控制块PCB的结构,并为每个进程任意确定一个要求运行时间和到达时间,按照进程到达的先后顺序排成一个循环队列。设计按时间片轮转的进程调度算法。

1.3设计思想和运行环境

a.设计思想

(1) 假设系统有5个进程,每个进程用一个进程控制块Process来代表。Process 的结构如图1-1所示。对PCB控制块进行包装,形成循环链表结点ProcessNode,链表结点ProcessNode如图1-2所示。

(2) 为每个进程从模拟的系统中指定一个要求运行时间和到达时间。

(3) 按照进程到达的先后顺序排成一个循环队列,再设一个队首指针head 指向第一个到达进程的首址。

(4) 执行处理机调度时,从队列的第一个进程开始,用pntmp 指针顺序选择可执行的进程执行。

(5) 由于本实践是模拟算法,所以对被选中进程并不实际启动运行,而只是执行:运行时间加100和输出当前运行进程的相关信息。用这两个操作来模拟进程的一次运行。

b. 运行环境 编程语言:Java 语言

工具:JDK1.6.0_26、Windows 7系统以及MyEclipse6.0.1等

图1-2进程控制块结点

图1-1进程控制块

Pname :进程名

runTime :进程运行时间 arriveTime :到达时间 State :进程状态 cpuTime :运行时间 cpcRound :已运行次数 startTime :进程开始时间 每个属性的set ,get 方法

proecss :Process 类型进程控制块

Next :ProcessNode 类型指针 每个属性的set ,get 方法

pntmp

head

图1-3循环链表

第二章 概要设计

2.1系统结构

2.1.1系统结构层次图

2.1.2系统功能说明

a. 创建进程模块:

创建进程模块在输入进程页面输入要创建的进程数,输入后逐个将进程信息录入插入到就绪队列中,完成进程的创建过程。

b. 运行程序模块:

此模块实现时间片轮转调度算法,从就绪队列中取出进程结点,并模拟运行该进程,反复循环,直至进程全部运行结束。每次运行进程后,将运行信息存入到文件中,实现信息的持久化。方便信息的记录,系统功能的分析和出错时便于检查错误。

c. 显示结果模块:

从文件中读入进程运行的结果,在图形界面下操作,提供友好的用户操作方式,方便直观的了解模拟进程的调度过程,便于数据分析和研究。

输入进程信息

创建结点 插入接点

输入进程信息

创建结点 插入接点

处理机管理模拟系统

运行程序

显示结果

创建进程

输入进程信息

创建结点

插入接点

图2-1处理机管理系统层次图

2.2算法描述

a.在创建进程界面将进程信息录入,将进程控制块进行包装,插入到循环队列

中;

b.当运行程序时,每次从就绪队列队首取出一个进程pntmp,判断是pntmp进程

否到达。到达则运行该进程;

c.若pntmp进程为首次运行,则记录进程开始运行时间startTime;

d.运行完pntmp进程后,输出进程运行信息,并将此结点移至队尾;

e.若循环队列长度size>0,则返回执行b;否则结束程序;

第三章详细设计3.1系统程序流程图

Y

Y

N

开始 显示主界面

输入进程数

i=0

i

输入进程名pname;运行时间rumtime 到达时间arrivetime

插入到循环队列中

从队列首部head 取出一个进程pntmp

判断pntmp 进程是否到达

当前进程是否已完

运行pntmp 进程,运行时间-100

a

b

c

b

N

Y

N

3.2内部接口设计

3.2.1系统框架接口run ()

public void run(){//创建系统主页的框架

//1.创建框架frame //2.设置相关属性

}

图3-1程序流程图

运行结束

a

查找下一个进程

b

当前进程是否已完成

置当前进程状态为false

N

c

是否有下一个进程 Y

Y

显示运行结果

N

3.2.2增加面板组件接口addComponentsTpPane()

public static void addComponentsTpPane(Container pane){

//1.设置布局方式

//2.创建系统功能按钮

//3.注册按钮

//4.监听按钮动作,并产生相应操作,执行对应的功能

}

3.2.3创建进程接口createFrame()

public static void createFrame(){

class createInputFrame extends Frame implements ActionListener{ //局部内部类实现创建进程的界面

//窗体按钮等属性的定义

public createInputFrame(String str){ //创建进程输入窗口

}

void panelCreateProIndex(){ //进程输入首页面

}

void panelCreateProInput(){ //进程信息输入页面

}

public void actionPerformed(ActionEvent e) {//监听器

}

}

createInputFrame cf=new createInputFrame("进程创建");//实例化}

3.2.4运行程序接口runFrame()

public static void runFrame(){ //1.创建运行窗口界面

int currenttime=0; //记录系统当前时间

while(size!=0){

//2.运行时间片轮转调度算法,并记录信息

}

try { //3将运行信息存入文件

String file="D:\\Java\\Processor\\myfile.txt";

} catch (IOException e1) {

}

}

3.2.5显示结果接口resultFrame()

public static void resultFrame(){

//1.创建显示结果窗体

JFrame jf=new JFrame("显示运行结果");

//2.打开文件

final JTextArea jta=new JTextArea(16,50);

openbutton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

//3.将文件内容读到文本框中

}

});

}

3.3用户接口

用户启动此处理机管理模拟系统后,即可方便的进行操作。以下为用户使用此软件时的图形接口:

a.系统主界面(图3-2):

图3-2 b.进程创建页面(图3-3):

图3-3

第四章系统实现

4.1编码实现

系统采用高级语言Java设计实现,程序容易阅读,易于测试,容易调试,方便维护。并且Java为当今最流行的编程语言,有其独到的优点;程序代码符合基本编程规范,方法,属性命名能体现程序的功能。

4.2单元测试

4.2.1创建进程模块

a.测试数据

进程数num: 2

进程名进程运行时间进程到达时间

神舟1号800 0

神舟2号300 100

b.预期输出

无输出结果,但创建进程模块将输入数据存入内存,并结束输入返回主界面。

c.运行结果

①进程数输入界面(图4-1):

图4-1

②进程信息输入界面(图4-2):

4.2.2运行程序模块

a.测试数据

进程数num:2

进程名进程运行时间进程到达时间

神舟1号800 0

神舟2号300 100

b.预期输出

系统时间进程名剩余时间已运行次数进程状态周转时间0 神舟1号700 1 true

100

200 神舟1号600 2 true

300 神州2号200 1 true

400 神舟1号500 3 true

500 神州2号100 2 true

600 神舟1号400 4 true

700 神州2号100 3 false 700

800 神舟1号300 5 true

900 神舟1号200 6 true

1000 神舟1号100 7 true

1100 神舟1号100 8 false 1200

c.运行结果(图4-3)

图4-3

4.2.3结果显示模块

a.测试数据

无需测试数据

b.预期输出

文件正常打开,在终端显示相关控制信息及内容;在用户界面显示文件内进程运行时的信息内容及运行的结果;合法的输出;

c.运行结果(图4-4)

图4-4

4.3遇到的问题

1)布局管理器实现页面布局时,不能很好的显示在桌面上。对GridLayout,

FlowLayout,BorderLayout,CradLyaout等布局管理器还不是很熟悉。

2)对系统结构的划分不当,没有实现界面和数据处理的分离;

3)对用户的非法操作做了处理,但并没有完全找出处理错误操作的方法;

4)没有充分理解将要设计的系统结构,系统层次结构不够清晰;

时间片轮转调度算法资料

《操作系统》课程实验报告实验名称:时间片轮转调度算法 班级:**************** 学号:************* 姓名:************** 指导老师:*************** 成绩:

一、实验目的: 1、测试数据可以随即输入或从文件中读入。 2、必须要考虑到进程的到达时间 3、最终能够计算每一个进程的周转时间的带权周转时间。 4、时间片大小可以不为1,但至少实现时间片大小为1的RR调度。 二、实验内容: 模拟实现时间片轮转调度算法,具体如下: 设置进程体:进程名,进程的到达时间,服务时间,,进程状态(W——等待,R ——运行,F——完成),进程间的链接指针 进程初始化:由用户输入进程名、服务时间进行初始化,同时,初始化进程的状态为W。 显示函数:在进程调度前、调度中和调度后进行显示。 排序函数:对就绪状态的进程按照进入就绪队列的时间排序,新到达的进行应优先于刚刚执行过的进程进入就绪队列的队尾。 调度函数:每次从就绪队列队首调度优一个进程执行,状态变化。并在执行一个时间片后化,服务时间变化,状态变化。当服务时间为0时,状态 变为F。 删除函数:撤销状态为F的进行。 三、实验代码 #include #include #include typedefstruct PCB2 { char name[10];//进程名 int runtime;//要求运行时间 intfrist;//定义优先数 char zhuangtai; //定义状态,R为就绪,F为完成 }; structshijian {//定义时间片的结构体 char name; //定义进程名 intdaodatime;// 到达时间 intfuwutime; //服务时间 intshengyutime;//剩余时间 char *state;//所处状态 structshijian *next; }; structshijian *time() { inta,i;

时间片轮转算法课程设计

一、实验目的 本课程设计以Windows操作系统为实验平台,进行源代码分析和修改。通过该课程设计,使学生掌握Windows操作系统各部分结构、实现机理和各种典型算法;系统地了解操作系统的设计和实现思路,运用内核开发环境实现对内核的修改,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 二、实验内容 1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。2.画出程序的基本结构框图和流程图。 3.对程序的每一部分要有详细的设计分析说明。 4.源代码格式要规范。 5.设计合适的测试用例,对得到的运行结果要有分析。 6.设计中遇到的问题,设计的心得体会。 7.按期提交完整的程序代码、可执行程序和课程设计报告。 三、实验步骤 1、任务分析: 时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。 2、概要设计: (1)所用数据结构及符号说明 typedef struct PCB{ c har name[10];

时间片轮转课程设计讲解

院学学华夏武汉理工大课程设计报告书 操作系统原理课程名称: 时间片轮转调度算法题目: 系名:信息工程系 专业班级: 名:姓 学号:

指导教师司晓梅: 2015626日年月 武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:操作系统原理课程设计指导教师:司晓梅 自动化与计算开课系、教研室:班级名称:计算机1131-2 机 一、课程设计目的与任务 操作系统课程设计是《操作系统原理》课程的后续实践课程,旨在通过一周的实践训练,加深学生对理论课程中操作系统概念,原理和方法的理解,加强学生综合运用操作系语言程序设计技术进行实际问题处理的能力,进一步提高学生进统原理、Linux系统、C 行分析问题和解决问题的能力,包含系统分析、系统设计、系统实现和系统测试的能力。学生将在指导老师的指导下,完成从需求分析,系统设计,编码到测试的全过程。 二、课程设计的内容与基本要求 1、课程设计题目时间片轮转进程调度模拟算法的实现

2、课程设计内容用c/c++语言实现时间片轮转的进程调度模拟算法。要求:个以上进程5 1.至少要有后,打印出该进程正在运行的相关信息CPU.2进程被调度占有 提示:时间片轮转调度算法中,进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先来处理机则仅使用一个时间片。在使用完一个时间片后,进程还没先服务原则调度,但一旦进程占用有完成其运行,它必须释放出处理机给下一个就绪的进程,而被抢占的进程返回到就绪队列的末尾重新排队等待再次运行。1)进程运行时,只打印出相关提示信息,同时将它已经运行的时间片加就可以了。1PCB结构所包含的内容,有进程名、进程所需运行时间、已运行2)为进程设计出PCB结构。时间和进程的状态以及指针的信息等。、设计报告撰写格式要求:31设计题目与要求2设计思想3系统结构数据结构的说明和模块的算法流程图45:内容包含如何登录、退出、读、写等操作说明使用说明书(即用户手册) 运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)6. 7自我评价与总结8附录:程序清单,注意加注释(包括关键字、方法、变量 等),在每个模块前加注释; 三、课程设计步骤及时间进度和场地安排 本课程设计将安排在第17周,现代教育技术中心。具体安排如下: 课程设计集中时间安排: 星期三星期四星期一星期二星期五周次 第3-6节第2-3节第2-3第17周第2-3节第2-3节节现教地点现教现教现教现教 四、课程设计考核及评分标准 课程设计考核将综合考虑学生的系统设计方案、运行结果、课程设计报告书的质量、 态度、考勤、答辩情况等各因素。具体评分标准如下: (1)设计方案正确,具有可行性、创新性;30分 20)系统开发效果较好;分2(20分(3)设计报告规范、课程设计报告质量高、参考文献充分(4)课程设计答辩时,问题回答正确;20分

时间片轮转算法

一、实验目的 (1)在单处理器情况下按时间片轮转算法实现处理器调度,输出运行动态变化过程。 (2)通过算法的实现加深了解处理器调度的工作。 二、实验内容 输入实现处理器调度的几个进程信息,任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示逐次被选中进程的进程名以及进程控制块的动态变化过程。 三、实验步骤 1、任务分析: 时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。 2、概要设计: (1)所用数据结构及符号说明 typedef struct PCB{ char name[10]; //进程名 struct PCB *next; //循环链指针 int need_time; //要求运行时间 int worked_time; //已运行时间,初始为0 char condition; //进程状态,只有“就绪”和“结束”两种状态 int flag; //进程结束标志,用于输出 }PCB; PCB *front,*rear; //循环链队列的头指针和尾指针 int N; //N为进程数 (2)主程序的流程图:

处理器调度(设计一个按时间片轮转法实现处理器调度的程序)

实验一处理器调度 一、实验容 选择一个调度算法,实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实习模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验题目 设计一个按时间片轮转法实现处理器调度的程序。 [提示]: (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的 格式为: 其中,Q1,Q2,Q3,Q4,Q5。 指针——进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址最后一个进程的指针指出第一个进程的进程控制块首地址。 要求运行时间——假设进程需要运行的单位时间数。 已运行时间——假设进程已经运行的单位时间数,初始值为“0”。 状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。 当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。 (3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到运行的进程。例如,当前轮到P2执行,则有: 标志单元 K1 K2 K 3 K4 K5

(4)处理器调度总是选择标志单元指示的进程运行。由于本实习是模拟处理器调度的 功能,所以,对被选中的进程并不实际的启动运行,而是执行: 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位的时间。 请同学注意:在实际的系统中,当一个进程被选中运行时,必须置上该进程可以运行的时间片值,以及恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行满一个时间片。在这时省去了这些工作,仅用“已运行时间+1”来表示进程已 经运行满一个时间片。 (5)进程运行一次后,应把该进程的进程控制块中的指针值送到标志单元,以指示下一 个轮到运行的进程。同时,应判断该进程的要求运行时间与已运行时间,若该进程的要求运行时间 已运行时间,则表示它尚未执行结束,应待到下一轮时再运行。若该进程的要求运行时间=已运行时间,则表示它已经执行结束,应指导它的状态修改成“结束”(E)且退出队列。此时,应把该进程的进程控制块中的指针值送到前 面一个进程的指针位置。 (6)若“就绪”状态的进程队列不为空,则重复上面的(4)和(5)的步骤,直到所有 的进程都成为“结束”状态。 (7)在所设计的程序中应有显示或打印语句,能显示或打印每次选中进程的进程名以及 运行一次后进程队列的变化。 (8)为五个进程任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示 或打印逐次被选中的进程名以及进程控制块的动态变化过程。 四. 所用数据结构及符号说明 typedef struct PNode//PCB { struct PNode *next; //定义指向下一个节点的指针 char name[10]; //定义进程名,并分配空间 int All_time; //定义总运行时间 int Runed_Time; //定义已运行时间 char state; //定义进程状态Ready/End } *Proc; //指向该PCB的指针 int ProcNum; //总进程数

时间片轮转调度算法

#include #include #include #include /*进程控制块数据结构*/ typedef struct node { char name[10];/*进程名*/ int prio; /*进程优先级*/ int round; /*循环轮转法进程每次轮转的时间片*/ int cputime; /*进程累计消耗的CUP时间*/ int needtime; /*进程到完成还需要的CUP时间*/ int count; /*循环轮转法一个时间片内进程运行时间*/ char state; /*进程的状态:'R':运行,'W':等待,'F':结束*/ struct node *next;/*指向下一个进程的链指针*/ }PCB; PCB *finish,*ready,*tail,*run;/*指向三个队列的队首的指针, finish为完成队列头指针, ready为就绪队列头指针, tail为就绪队列的队尾指针, run为当前运行进程头指针*/ int N;/*定义进程的数目*/ void firstin(void); //调度就绪队列的第一个进程投入运行; void print1(char a); //打印表头行信息 void print2(char chose,PCB *p); //打印每一行的状态信息 void print(char chose); //打印每执行一次算法后所有的进程的状态信息 void insert_prio(PCB *q); //在优先数算法中,将尚未完成的PCB按优先数顺序插入到就绪队列中; void prior_init(char chose); //进程优先级法初始化将进程按优先级插入到就绪队列里 void priority(char chose); //进程优先级算法总函数 void insert_rr(PCB *q); //在轮转法中,将执行了一个时间片单位(为2),但尚未完成的进程的PCB,插到就绪队列的队尾; void roundrun_init(char chose); //循环轮转法初始化将就绪队列保存为FIFO队列 void roundrun(char chose); //循环轮转法总算法 void main()//主函数 {

操作系统课程设计

操作系统课程设计--进程管理 ●操作系统课程设计目的:通过模拟操作系统原理的实现,加深对操作系统工 作原理和操作系统实现方法的理解;通过模拟操作系统原理的实现练习编程 ●1~2人一组,练习合作 ●程序准备 x=?; 给x赋值一位数 x++; x加1 x--; x减1 !??;第一个?表示阻塞原因A,B,第二个?为一位数,表示阻塞时间 (cpu循环次数); end. 表示程序结束,同时将结果写入文件out,其中包括文件路径名 和x的值(软中断方式处理)。 准备10个文本文件,文件放程序(程序可以相同) ●硬件工作的模拟 1.中央处理器的模拟 用函数CPU( )(该函数不能有参数)模拟中央处理器。 该函数主要负责解释“可执行文件”中的命令。 x=?; x++; x--; !??;end. Gob;//表示回到第一句 注意:CPU只能解释指令寄存器IR中的指令。一个进程的运行时要根据进程执行的位置,将对应的指令存放到指令寄存器中。 2.主要寄存器的模拟 用全局变量模拟重要寄存器,如cpu重要寄存器 程序状态寄存器PSW //可以用1表示时钟中断,2表示输入输出中断,4表示软中断,可以组

合1+2,1+4,,2+4,1+2+4 指令寄存器IR //存放4个字符即可 程序计数器//可分为两部分,PCB编号和指令位置 数据缓冲寄存器DR//存放x的值 等。 3.相对时钟的模拟 用相对时钟用于时间片的中断,寄存器TIME 4.中断的模拟 中断的发现应该是硬件的工作,这里在函数CPU中加检测PSW的方式来模拟 在CPU()函数中,每执行一条指令之前,先检查PSW,判断有无中断, 若有进行中断处理,然后再运行解释指令。 CPU函数应该不断循环执行的。 cpu() { 检测有无中断,有进行处理 If(进程结束软中断)撤销进程;进程调度; If(输入输出完成)唤醒进程; If(时间片到)进程调度 根据pc取指令,将指令放入IR寄存器; 执行IR指令;//解释执行课程设计中的指令 pc++ 时间片--;阻塞进程的时间-- ;//等于0时设置中断 延时//不要太小 }

操作系统课程设计2014教学大纲

《操作系统课程设计》大纲 一、设计目的和要求 目的:本课程设计是为配合计算机相关专业的重要专业课《操作系统》而开设的,其主要内容是让学生实际进行操作系统功能模块的设计和编程实现。通过本课程设计的实施,使学生能将操作系统的概念具体化,并从整体和动态的角度去理解和把握操作系统,以巩固和补充操作系统的原理教学,提高学生解决操作系统设计及实现过程中的具体问题的能力。 要求:通过本课程设计的实施,要求培养学生以下能力: (1)培养学生在模拟条件下与实际环境中实现功能模块和系统的能力:课程设计要求学生实际进行操作系统功能模块的设计和编程实现,具体包括:基于线程的多任务调度系统的设计与实现;一个简单文件系统的设计与实现。 (2)培养学生设计和实施工程实验的能力,合理分析试验结果的能力:学生在完成项目的过程中,需要进行实验设计、程序调试、错误分析,从而熟悉实验设计方法及实验结果的分析方法。 (3)培养学生综合运用理论和技术手段设计系统和过程的能力:学生需根据设计项目的功能要求及操作系统原理的相关理论提出自己的解决方案,需考虑项目实现的软硬件环境,设计相关数据结构及算法,在实现过程中发现解决方案的问题并进行分析改进。 (4)培养学生分析并清楚阐述设计合理性的能力:要求学生在项目上机验收和实验报告中分析阐述设计思路的合理性和正确性。 (5)培养学生的组织管理能力、人际交往能力、团队协作能力:课程设计分小组进行,每个小组有一个组长,负责组织本组成员的分工及合作。 二、设计学时和学分 学时:32 ;学分:1 三、设计的主要内容 以下三个题目中:1、2中选做一题,第3题必做。 1、基于线程的多任务调度系统的设计与实现 (1)线程的创建、撤消和CPU切换。 掌握线程的定义和特征,线程的基本状态,线程的私有堆栈,线程控制块TCB,理解线程与进程的区别,实现线程的创建、撤消和CPU切换。 (2)时间片轮转调度 理解各种调度算法、调度的原因,完成时钟中断的截取,具体实现调度程序。 (3)最高优先权优先调度 理解优先权的概念,并实现最高优先权优先调度策略。 (4)利用记录型信号量实现线程的同步

时间片轮转算法C版

int Queue_c::qEnQueue(ElemType e) { if(qFull())return ERROR; Q[rear]=e; rear=(rear+1)%QueueNum; return OK; } //=================qDeQueue=============================== ElemType Queue_c::qDeQueue() { ElemType e; if(qEmpty())return ERROR; e=Q[front]; Q[front]=QueuePre; front=(front+1)%QueueNum; return e; } //===================qGetNumber============================= int Queue_c::qGetNumber()

{int i; i=((rear-front+QueueNum)%QueueNum); return i; } //==================qGetElem============================== ElemType Queue_c::qGetElem(int i) { if(qEmpty()){cout<<"ERROR!"<qGetNumber()-1) { cout<<"ERROR! there is no "<

时间片轮转调度算法实验报告

xx大学操作系统实验报告 姓名:学号:班级: 实验日期: 实验名称:时间片轮转RR进程调度算法 实验二时间片轮转RR进程调度算法 1.实验目的:通过这次实验,理解时间片轮转RR进程调度算法的运行原理,进一步 掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 2.需求分析 (1) 输入的形式和输入值的范围; 输入:进程个数n 范围:0

(4) 测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。正确输入: 错误输入:

2、概要设计 所有抽象数据类型的定义: static int MaxNum=100 int ArrivalTime //到达时间 int ServiceTime //服务时间 int FinishedTime //结束时间 int WholeTime //周转时间 double WeightWholeTime //带权周转时间double AverageWT //平均周转时间double AverageWWT //平均带权周转时间主程序的流程: 变量初始化

操作系统课程设计时间片轮转算法java实现

操作系统课程设计时间 片轮转算法j a v a实现 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

学校代码: 10128 课程设计 题目:处理机管理模拟系统的设计与 实现 学生姓名: 学院:信息工程学院 系别:软件工程系 专业:软件工程 班级: 指导教师:副教授 讲师 2013年1月8日

内蒙古工业大学课程设计任务书(四) 学院(系):信息学院软件工程系课程名称:操作系统课程设计指导教师(签名): 专业班级:学生姓名:学号:

摘要 操作系统是计算机系统的关键组成部分,负责管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本任务。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业优先调度算法;在分时系统中,为保证系统具有合理的响应时间,采用时间片轮转法进行调度。采用算法时,则要考虑多方面因素,以便达到最佳效果。本次课程设计采用时间片轮转调度算法来实现模拟进程调度任务的执行过程。 用Java模拟进程调度过程,可以方便地将运行结果直观地表示出来。Java语言独有的多线程操作,可以实现许多其他语言不能实现的功能,极大地方便了程序开发人员对程序的开发。此外,利用JavaGUI编程,可以使系统提供的界面更加友好。实验中,应用文件I/O操作、线程、AWT、Swing、内部类、接口、异常处理等技术,开发此系统。 关键字:时间片轮转; Java编程; GUI图形用户界面;文件操作;

Abstract The operating system is a key component of the computer system, responsible for the management and configuration memory, decided to system resources supply and demand priority, control input and output equipment, operation and management of network file system, and other basic different systems and system target, computers usually use different scheduling algorithm, such as in a Batch Processing System, in order to take care of a lot of short operation, using Short Job First algorithm;In systems with time sharing, to ensure the system has reasonable response time, need time slice Round Robin algorithm for scheduling. The algorithm, we should consider various factors, in order to achieve the best Course Design uses time slice Round Robin algorithm to simulate the process scheduling task execution process. With Java simulation process scheduling process, which can be conveniently will run results intuitively said addition, the use of JavaGUI programming, can make the system to provide the interface more , application file I/O operation, threads, AWT, Swing, internal class, interface, abnormal processing technology, the development of this system. Keywords: time slice Round Robin; Java Programming; ; File Operation;

时间片轮转算法课程设计

时间片轮转算法课程设 计 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

一、实验目的 本课程设计以Windows操作系统为实验平台,进行源代码分析和修改。通过该课程设计,使学生掌握Windows操作系统各部分结构、实现机理和各种典型算法;系统地了解操作系统的设计和实现思路,运用内核开发环境实现对内核的修改,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。 二、实验内容 1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。2.画出程序的基本结构框图和流程图。 3.对程序的每一部分要有详细的设计分析说明。 4.源代码格式要规范。 5.设计合适的测试用例,对得到的运行结果要有分析。 6.设计中遇到的问题,设计的心得体会。 7.按期提交完整的程序代码、可执行程序和课程设计报告。 三、实验步骤 1、任务分析: 时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。 2、概要设计: (1)所用数据结构及符号说明 typedef struct PCB{ char name[10];

采用时间片轮转算法调度程序

采用时间片轮转算法调度程序 学号: 姓名: 专业: 指导教师: 日期: 目录 一、需求分析 (3)

1、设计要求: (3) 2、解决方案: (3) 二、课程设计简介 (4) 1、课程设计题目 (4) 2、课程设计目的 (4) 3、课程设计内容 (4) 4、时间安排 (4) 三、概要设计 (4) 1、基本原理 (4) 2、算法思想设计 (5) 3、数据结构及模块说明: (5) 四、主要函数及其说明 (6) 五、调试分析 (7) 1、调试过程及步骤 (7) 2、结果分析(以三个进程数为例) (8) 六、总结及参考文献 (9) 1、总结: (9) 2、参考文献 (9) 附录:程序源代码 (9)

一、需求分析 1、设计要求: 在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。为了使系统中各进程能有条不紊地进行,必须选择某种调度策略,以选择一进程占用处理机。要求用时间片轮转算法模拟单处理机调度,以巩固和加深处理机调度的概念。 2、解决方案: (1)、假设系统有5个进程,每个进程用一个进程控制块PCB来表示。PCB包括:进程名、链接指针、到达时间、估计运行时间和进程状态。其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有三种状态,就绪、等待和完成,并假定进程一创建就处于就绪状态,用R表示,当一个进程运行结束时,就将其置成完成状态,用F表示。当一个进程未运行完成并且时间片不足时,就将其置成等待状态,用W表示。 (2)、为每个进程任意确定一个要求运行时间和到达时间。 (3)、按照进程到达的先后顺序排成一个循环队列。再设一队首指针指向第一个到达进程的首址。 (4)、执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行进程。 (5)、由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行: a)、估计运行时间减时间片长度; b)、输出当前运行进程的名字。用这两个操作来模拟进程的一次运行(即一个时间片)。 (6)、进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成状态F,并退出循环队列插入完成队列。 (7)、若就绪队列不空,则重复上述(5)和(6)步骤直到所有进程都运行完为止。 (8)、在所有设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

时间片轮转算法和优先级调度算法 C语言模拟实现

一、目得与要求?进程调度就是处理机管理得核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会与了解优先数算法与时间片轮转算法得具体实施办法。 二、实验内容 1、设计进程控制块PCB得结构,通常应包括如下信息: 进程名、进程优先数(或轮转时间片数)、进程已占用得CPU时间、进程到完成还需要得时间、进程得状态、当前队列指针等。 2、编写两种调度算法程序: 优先数调度算法程序?循环轮转调度算法程序 3、按要求输出结果。?三、提示与说明 分别用两种调度算法对伍个进程进行调度。每个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)与完成状态(FINISH),并假定初始状态为就绪状态。?(一)进程控制块结构如下:?NAME——进程标示符PRIO/ROUND——进程优先数/进程每次轮转得时间片数(设为常数2)? CPUTIME——进程累计占用CPU得时间片数? NEEDTIME——进程到完成还需要得时间片数 STATE——进程状态?NEXT——链指针?注: 1、为了便于处理,程序中进程得得运行时间以时间片为单位进行计算; 2、各进程得优先数或轮转时间片数,以及进程运行时间片数得初值,均由用户在程序运行时给定。?(二)进程得就绪态与等待态均为链表结构,共有四个指针如下:? RUN——当前运行进程指针 READY——就需队列头指针 TAIL——就需队列尾指针 FINISH——完成队列头指针 1、在优先数算法中,进程优先数得初值设为: (三)程序说明? 50-NEEDTIME?每执行一次,优先数减1,CPU时间片数加1,进程还需要得时间片数减1。 在轮转法中,采用固定时间片单位(两个时间片为一个单位),进程每轮转一次,CP

基于时间片轮转法调度算法模拟

操作系统课程设计报告课程设计题目:基于时间片轮转法调度算法模拟 姓名: 学号: 专业:计算机科学与技术 班级: 指导教师:小辉 2013 年1月11日

目录 一.课程设计目的与内容 (1) 二.任务分析 (2) 三.概要分析 (3) 四.详细设计 (4) 五.运行结果 (6) 六.总结 (7) 七.附录 (8) 八.评分表 (11)

一.课程设计目的与内容 1.课程设计目的 (1)在单处理器情况下按时间片轮转算法实现处理器调度,输出运行动态变化过程。 (2)通过算法的实现加深了解处理器调度的工作。 2.课程设计内容 输入实现处理器调度的几个进程信息,任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示逐次被选中进程的进程名以及进程控制块的动态变化过程。 二、任务分析 时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。

三、概要设计 (1)所用数据结构及符号说明 #include"stdio.h" #include"conio.h" #include"malloc.h" #include"string.h" #define NULL 0 typedef struct PCB{ char name[10]; //进程名 struct PCB *next; //链指针 int need_time; //要求运行时间 int worked_time; //已运行时间 char condition; //进程状态,只有“就绪”和“结束”两种状态int flag; //进程结束标志 }PCB; PCB *front,*rear; int N; //N为进程数

计算机操作系统时间片循环轮转算法

淮海工学院计算机工程学院 实验报告书 课程名:《计算机操作系统》 题目:时间片循环轮转调度_______ 班级: _____________ 软件081班___________ 学号: ________________________ 姓名: ______________ 陈点点______________ 评语: 成绩:________________ 指导教师:_________________________ 批阅时间:年月日

一、实验内容 利用高级语言模拟进程的时间片轮转调度算法。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验环境 1. PC微机。 2. Windows操作系统。 3. C/C++/VB开发集成环境。 四、实验题目 设计一个按时间片轮转法实现处理器调度的程序。 算法设计思想: (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进程控制块的格式为: 其中,进程名一一作为进程的标识,假设五个进程的进程名分别为Q, Q2, Q, Q, Q。 指针一一进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。 要求运行时间一一假设进程需要运行的单位时间数。 已运行时间一一假设进程已经运行的单位时间数,初始值为“0 ”。 状态一一有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“ R”表示。当一个进程运行结束后,它的状态为“结束”,用“ E”表示。 (2) 每次运行所设计的进程调度程序前,为每个进程任意确定它的“要求运行时间”。 (3) 把五个进程按顺序排成循环队列,用指针指出队列连接情况。另用一标志单元记录轮到 运行的进程。例如,当前轮到P2执行,则有:

操作系统-时间片轮转算法

进程时间片轮转调度算法 一、实验题目: 进程时间片轮转调度算法 二、实验原理: 在多道程序系统中,一个作业被提交后必须经过处理机调度后,方能获得处理机执行。对调度的处理又都可采用不同的调度方式和调度算法。调度算法是指:根据系统的资源分配策略所规定的资源分配算法。 三、实验目的: 1、加深对进程概念的理解,明确进程和程序的区别。 2、深入系统如何组织进程、创建进程。 3、进一步认识如何实现处理器调度。 4、通过对进程调度算法的设计,深入理解进程调度的原理。 5、加深对时间片轮转调度算法的理解。 四、实验要求: 用C语言编写程序完成单处理机的进程调度,要求采用时间片轮转调度算法。实验具体要求包括:首先确定作业控制块的内容和组成方式;然后完成作业调度;最后编写主函数,并对所做工作进行测试。 五、运行结果

时间片大小为1时(q=1): 时间片大小为4时(q=4):

六、代码 #include"stdafx.h" #include #include #include #include #define OK 0 #define OVERFLOW 1 char pro[20] ; //进程 int processNum; //进程数int timeSlice = 0; //时间片 typedef char QlemTypeChar;

typedef int QlemTypeInt; typedef int Status; typedef struct QNode { QlemTypeChar data; QlemTypeInt timeArrive = 0; QlemTypeInt timeService = 0; QlemTypeInt timeCount = 0; QlemTypeInt runCount = 0; QlemTypeInt timeFinal = 0; //完成时间 QlemTypeInt timeRound = 0; //周转时间 float timeRightRound = 0; //带权周转时间 QlemTypeChar proState = 'W'; //进程的状态,W——就绪态,R——执行态,F——完成态struct QNode *next; //链表指针 }QNode, *QueuePtr; typedef struct{ QueuePtr front; //队头指针 QueuePtr rear; //队尾指针 }LinkQueue; Status InitQueue(LinkQueue &Q){ Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); Q.front->next = NULL;

时间片轮转法

《操作系统》实验二内容要求 【实验题目】:时间片轮转RR进程调度算法 【实验学时】:4学时 【实验目的】 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。 【实验内容】 问题描述: 设计程序模拟进程的时间片轮转RR调度过程。假设有n个进程分别在T1, …,T n时刻到达系统,它们需要的服务时间分别为S1, …,S n。分别利用不同的时间片大小q,采用时间片轮转RR进程调度算法进行调度,计算每个进程的完成时间,周转时间和带权周转时间,并且统计n个进程的平均周转时间和平均带权周转时间。 程序要求如下: 1)进程个数n;每个进程的到达时间T1, …,T n和服务时间S1, … ,S n;输入时间片大小q。 2)要求时间片轮转法RR调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间; 3)输出:要求模拟整个调度过程,输出每个时刻的进程运行状态,如“时刻3:进程B开始运行”等等; 4)输出:要求输出计算出来的每个进程的周转时间,带权周转时

间,所有进程的平均周转时间,带权平均周转时间。 实现提示: 用C++语言实现提示: 1)程序中进程调度时间变量描述如下: int ArrivalTime[100]; int ServiceTime[100]; int PServiceTime[100]; int FinishTime[100]; int WholeTime[100]; double WeightWholeTime[100]; double AverageWT,AverageWWT; bool Finished[100]; 2)进程调度的实现过程如下: 变量初始化; 接收用户输入n,T1, … ,T n,S1, … ,S n;时间片大小q; 按照时间片轮转RR算法进行进程调度,计算进程的完成时间、周转时间和带权周转时间; 计算所有进程的平均周转时间和平均带权周转时间; 按格式输出调度结果。 代码 #include #include #include using namespace std;

相关文档
最新文档