实验报告
题目 名称 院系 指导老师 组长 联系电话 组长 (姓名、学号) 成员(姓名、学号) 进程调度算法模拟 信息学院 班级 完成时间 10月17日 本次实验成绩 邮件地址 主要 任务 主要 任务 主要原理及说参考的资料(包括实验内容及条件) 本实验模拟了进程调度的三种算法:静态优先级的立即抢占式调度算法;动态优先级调度算法;时间片轮转调度算法。 一、静态优先级的立即抢占式调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),且优先数在生命周期中不再改变。就绪队列中的进程根据优先权高低进行排队,等待CPU运行。在进程运行过程中,如果就绪队列出现优先级更高的进程时(本实验开始运行后系统会在任意时间随机创建一个新的进程,最多共创建7个),则立即进行重新调度,剥夺当前运行进程所占有的CPU,分配给更高优先权的进程使用。 二、动态优先级调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),但动态优先级的优先数随时间会发生改变。本实验的基本原则是:正在运行的程序每次运行CPU的时间为1000ms时,优先数减1,若在就绪队列中出现优先权高的进程,则剥夺当前进程所占有的CPU,分配给优先权高地进程使用,否则,继续占用CPU,当运行1000ms后,优先数继续减1,重新比较。以此循环,直至所有进程运行完为止。 三、时间片轮转调度算法原理:就绪队列中的每个进程轮流的运行一个时间片(本实验时间片为固定值2000ms),当时间片耗尽时,就强迫当前的运行进程让出处理器,转而排到就绪队列尾部,等候下一轮调度。 本实验中,在创建进程时,就绪队列按照优先权高低进行排队,然后依次从就绪队列取出首个进程根据时间片轮转法进行调度。当进程正在运行时,系统会在任意时间自动创建新的进程(规定:系统自动创建最多7个进程,此后不再创建),并根据优先级高低插入就绪队列中。当某个进程的时间片耗尽时,则排到就绪队列尾部,然后调度就绪队列的首个进程。进程每呆一个时间片,优先数减1。 以上三种算法都是每1000ms显示一次运行结果,并规定每次运行CPU时间为1000ms。 标注:R:代表正在CPU中运行;W:代表正在就绪队列中;F:代表此进程已运行完。 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第1页
主程序流程图: 开始 输入进程数,系统自动创 建指定数目的进程PCB 选择进程调度算法: 1.静态优先2.动态优先 级立即抢占级; 主要算法及流程图 (包括实验步骤) 程序结束 静态优先级立即抢占式调度流程图: 静态优先级 立即抢占式 获取进程信息,如运行时间,优先 级等,根据优先级调度进程 调用静态优先级立即抢占 式算法,优先数不改变 运行进程 进程运行完 3.时间片 轮转法 系统自动创建新的进程 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第2页
动态优先级调度流程图: 动态优先级 获取进程信息,如进程运行 时间,优先级等。根据优先 级高低进行调度 调用动态优先级算法,占用CPU 时间一次 判断进程是 否运行完 N 优先数减1 Y 判断该进程优 先级是否最高 程序结束 N 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第3页
时间片轮转法调度流程图: 时间片轮转法 获取进程信息,本程序按优 先级高低排在就绪队列 取出就绪队列首个进程, 调用时间片轮转法算法 在每个时间片内运行进程 计算各进程 剩余时间 程序运行结束 大于0 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第4页
本实验涉及的主要数据结构和函数说明 主要数据结构: PCB类包含的属性与方法: public int id;//进程唯一标识:进程号 public int prio;//进程优先数,随机产生(10以内) String in;//进程进入CPU的时间,格式为hh:mm:ss(当前系统时间) public char state;//进程的状态标志 public int cputime;//进程已在CPU运行的时间 public int needtime;//进程需要运行的时间(开始由系统随机产生,此后每运行一次,相应减少) PCB next;//用来将多个进程PCB块链接为链表 public PCB()//构造函数 {} public PCB(int id)//带参的构造函数 { } LinkList类包含的属性与方法: public static int j=0;//用来标识创建进程的ID public static PCB ready,run,finish;//分别表示运行,就绪,完成,初始化都为NULL; public static void prt3();//输出显示函数,首先输入运行队列进程,其次是就绪队列进程,最后是完成队列的进程; public static void insert(PCB q)// 按优先级高低插入就绪队列 public static void noPrioInsert(PCB q)//插入到就绪队列尾部 public static void creat(int n)//系统自动创建进程 静态优先级立即抢占式类包含的主要方法为: class staticPrio implements Runnable { public void run(){} }// 动态优先级调度算法类包含的主要方法为: class movePrio implements Runnable { public void run(){} } 时间片轮转法调度算法包含的主要方法为: class Timer implements Runnable { public void run(){} } Main方法中: Thread t1=new Thread(new staticPrio()); t1.start();//调用线程类并启动线程执行静态优先级立即抢占式调度算法 Thread t2=new Thread(new movePrio()); t2.start();//调用线程类并启动线程执行动态优先级调度算法 Thread t3=new Thread(new Timer()); t3.start();//调用线程类并启动线程执行时间片轮转法调度算法 this.id=id; 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第5页 本次实践计划、进度安排及完成情况 (进度及计划由组长填写,完成情况由组员填写并注明填写人) 实践进度: 10月3日---10月5日:小组同学对操作系统课本上有关进程调度算法的相关知识进行复习与回顾,深入了解各个进程调度算法; 10月6日:小组同学讨论编写本实验程序的语言,经过讨论后,选取JAVA语言作为本程序的编写语言;并一起讨论画出整个程序的详细流程图,而且对其中的三个进程调度算法进行深究,讨论如何用数据结构实现。 10月7日---10月9日:回顾数据结构有关链表的知识,并借阅有关用JAVA语言实现数据结构的相关书籍,已达到能够在程序中熟练运用数据结构的思想。 10月10日----10月14日:动手编写程序;并测试、修改、完善程序; 10月14日----10月17日:小组同学分工合作,一个同学将eclipse软件编写的JAVA文件导出,并借助EXE4J软件生成可跨平台的可执行文件。于此同时,另一个同学撰写实验报告。 组长:王珂 完成情况: 小组组长制定计划后,我们严格按照计划完成每一项任务。 在10月7日---10月9日回顾数据结构知识时,由于原来课程讲的是用C语言实现的数据结构,而且在JAVA中没有指针的使用,所以在看用JAVA语言实现数据结构这部分知识时,遇到些困难,但很快得以解决。 在10月10日----10月14日编写程序阶段,主要是在静态优先级调度算法上花费了很多时间,以及如何实现并发环境。但当这两个问题解决后,其他两个调度算法也就很容易上手了。 在10月14日----10月17日最后一个阶段,我们又面临着如何将转化成的EXE文件可以在没有装JAVA虚拟机上运行,但通过上网查资料,以及借阅有关书籍也得以解决。 组员:冯弼 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第6页
主要测试方法及测试输入数据、运行结果 主要测试方法: (1) 对源程序的测试 在eclipse软件中进行测试。首先输入进程数,然后依次选择三种算法运行进程,最后进行结果分析,检验是否和预想的结果一致。 (2) 对生成的可执行文件的测试 将可执行文件拷贝在其他未安装JAVA虚拟机环境的机子上进行测试。由于eclipse软件不能直接生成.exe文件,必须借助其他软件进行转换,但是JAVA语言的跨平台性决定了JAVA运行所需要的JAVA虚拟机环境,因此,对于用软件生成的可执行文件需要测试是否能在其他未安装JAVA虚拟机环境的机子上运行。 测试输入数据:1(表示系统默认产生一个进程,由于要对结果统计分析,因此选取1个进程,减少了分析统计工作的工作量)。 运行结果:(选取动态优先级调度结果) ********************************************************************* 网工092班 组长:王珂(19309204);组员: 冯弼(19309205) 进程调度模拟算法 标注: 1.系统根据你所输入的进程数自动创建进程,优先数大者,优先级高。 2.R:运行中;W:就绪队列中;F:该进程运行完了。 ********************************************************************* 请输入进程数: 1 系统为你自动生成的进程如下: 进程号 已运行CPU时间 还需时间 优先数 状态 进入cpu时间 0 0 4 14 R 08:56:02 ********************************************************************* 请选择进程调度算法: 1.静态优先级调度 2.动态优先级调度 3.时间片轮转调度 4.退出 2 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 状态 进入cpu时间 0 1 3 13 R 08:56:02 新的进程被创建! 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 状态 进入cpu时间 0 2 2 12 R 08:56:02 1 0 4 11 W Unknown 新的进程被创建! 进程正在运行.......................................... 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第7页 主要测试方法及测试输入数据、运行结果) 进程号 已运行CPU时间 还需时间 优先数 2 1 2 27 R 08:56:06 0 2 2 12 W Unknown 1 0 4 11 W Unknown 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 2 2 1 26 R 08:56:06 0 2 2 12 W Unknown 1 0 4 11 W Unknown 新的进程被创建! 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 2 3 0 25 R 08:56:06 3 0 2 17 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 新的进程被创建! 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 2 3 0 25 F 08:56:06 3 0 2 17 W Unknown 4 0 6 13 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 3 1 1 16 R 08:56:10 4 0 6 13 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 3 2 0 15 R 08:56:10 4 0 6 13 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 2 3 0 25 F 08:56:06 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第8页
主要测试方法及测试输入数据、运行结果) 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 3 2 0 15 F 08:56:10 4 0 6 13 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 4 1 5 12 R 08:56:12 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 新的进程被创建! 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 5 1 3 20 R 08:56:14 4 1 5 12 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 5 2 2 19 R 08:56:14 4 1 5 12 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 5 3 1 18 R 08:56:14 4 1 5 12 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第9页
本次实验的心得体会(每位同学一段) 进程号 已运行CPU时间 还需时间 优先数 5 4 0 17 R 08:56:14 4 1 5 12 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 5 4 0 17 F 08:56:14 4 1 5 12 W Unknown 0 2 2 12 W Unknown 1 0 4 11 W Unknown 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 0 2 2 12 R 08:56:18 4 2 4 11 W 08:56:18 1 0 4 11 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 新的进程被创建! 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 0 3 1 11 R 08:56:18 4 2 4 11 W 08:56:18 1 0 4 11 W Unknown 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 4 2 4 11 R 08:56:21 1 0 4 11 W Unknown 0 4 0 10 W 08:56:18 6 0 5 1 W Unknown 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第10页
5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 1 0 4 11 R 08:56:22 4 3 3 10 W 08:56:21 0 4 0 10 W 08:56:18 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 1 1 3 10 R 08:56:22 4 3 3 10 W 08:56:21 0 4 0 10 W 08:56:18 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 4 3 3 10 R 08:56:24 0 4 0 10 W 08:56:18 1 2 2 9 W 08:56:22 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 0 4 0 10 R 08:56:26 4 4 2 9 W 08:56:24 1 2 2 9 W 08:56:22 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 一个进程执行完毕! 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第11页
进程号 已运行CPU时间 还需时间 优先数 0 4 0 10 F 08:56:26 4 4 2 9 W 08:56:24 1 2 2 9 W 08:56:22 6 0 5 1 W Unknown 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 1 2 2 9 R 08:56:27 4 5 1 8 W 08:56:27 6 0 5 1 W Unknown 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 1 3 1 8 R 08:56:27 4 5 1 8 W 08:56:27 6 0 5 1 W Unknown 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 4 5 1 8 R 08:56:29 1 4 0 7 W 08:56:27 6 0 5 1 W Unknown 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 4 6 0 7 R 08:56:29 1 4 0 7 W 08:56:27 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第12页
6 0 5 1 W Unknown 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 4 6 0 7 F 08:56:29 1 4 0 7 W 08:56:27 6 0 5 1 W Unknown 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 1 4 0 7 F 08:56:32 6 0 5 1 W Unknown 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 6 1 4 0 R 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 6 2 3 -1 R 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第13页
2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 6 3 2 -2 R 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 6 4 1 -3 R 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 进程正在运行.......................................... 进程号 已运行CPU时间 还需时间 优先数 6 5 0 -4 R 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 一个进程执行完毕! 进程号 已运行CPU时间 还需时间 优先数 6 5 0 -4 F 08:56:32 1 4 0 7 F 08:56:32 4 6 0 7 F 08:56:29 0 4 0 10 F 08:56:26 5 4 0 17 F 08:56:14 3 2 0 15 F 08:56:10 2 3 0 25 F 08:56:06 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 状态 进入cpu时间 《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第14页
心得体会(组长:XX): 本次实验一开始让我不知道从何入手,课本上讲到的每种算法是能看懂,但是让我真的自己模拟仿真出来,感觉很难。但是当和小组同学先认真看完操作系统课本上关于这部分内容,以及书上讲的关于Linux系统中进程调度的举例,感觉有点眉目了。在回顾过数据结构知识后,我开始着手编写程序了。在编写程序时,虽然遇到过很多问题,出现很多Bug,但是当把这些问题一个个解决后,感觉很有成就感。 本次实验我不仅仅对操作系统相关进程调度算法有了深入的了解,还对以前学过的数据结构知识以及现在正在学的JAVA语言有了实际的应用,巩固了专业知识,收获很多。 心得体会(组员:XX): 刚刚拿到试验作业的时候我们一脸茫然,根本连题目究竟是要让我们做什么都需要揣测很久,课本上的算法过程很清晰,头脑里也有大概的模型。但是要实际用一行行代码表示出来却是异常艰难。我们在国庆期间几次碰头、讨论,最后确定了使用Java语言来编写,并且在数据结构的选择时我们经过再三地权衡还是使用了比较灵活的链表而不是单纯的队列。在图书馆翻阅了大量相关方面的书籍,确定大致的算法以及流程图的情况下我们开始分工合作。由动手能力强,Java应用较为熟练的王珂同学着手编写程序,然后一起讨论,修正,消灭Bug。而后我们还助EXE4J软件生成可跨平台的可执行文件。 通过这次进程调度的模拟实验,我们不仅将操作系统里的几大进程调度算法烂熟于心,而且Java编程能力也有了很大的提升,并且能够将数据结构里边学到的知识应用。让我们获益匪浅。更为重要的是,虽然我们小组只是两人,却也在共同的努力中体会到了团队合作的滋味,我们学会了倾听,讨论,协作,互助。我相信有了这些经历,在未来的学习工作中我们必然能够更加地得心应手。 备注 (提交资料目录、源程序文件清单及其它说明) 备注: 关于code目录下地.exe文件需要安装到电脑上即可实现跨平台使用。可安装在电脑上的任意路径。若需要卸载,则可以在安装程序中找到unins000.exe文件,则可直接完全卸载。
《计算机操作系统原理》课外上机实践 南京农业大学信息学院计算机系 第15页
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务