废话不多说了,省的又有衰人找我麻烦。希望我讨厌的,和讨厌我的少来骚扰我,由衷的感谢它们。

我不回那些骚扰,是因为我见到名字就直接删了,看都懒的看了。也别怪我粗鲁,因为我一向是对什么人说什么话

的,觉得我对你不好的,先想想自己做过什么,别老是傻了吧唧的瞎得瑟。我只是想积累点东西。如果我因为某人

的扯淡而受到某些影响的话,只能说我还是不够成熟。

软件截图:

只实现了三种算法,先进先出,时间片轮转(多线程),抢占式优先级,贴点代码,省得被说是水文。

抢占式优先级核心调度:

 1 public static void priorityOperating() {
 2             if (processRegister != freeProcess && CpuPanel.getCpu().getPSW() != 3) {
 3             boolean isNeedScheduling = false;
 4             
 5             int excuteProcessPriority = processRegister.pcb.getPriority();
 6             if (readyQueue.getItems().length>0) {
 7                 excuteProcessPriority--;
 8             }
 9             processRegister.pcb.setPriority(excuteProcessPriority);
10             executeField.setText(processRegister.pcb.getSign() + "-优先级:"
11                     + processRegister.pcb.getPriority());
12             
13             Object[] readyProcessList = readyQueue.getItems();
14             for (int i = 0; i < readyProcessList.length; i++) {
15                 int readyProcessPriority = ((Process) readyProcessList[i]).pcb
16                         .getPriority();
17                 readyProcessPriority++;
18                 ((Process) readyProcessList[i]).pcb
19                         .setPriority(readyProcessPriority);
20                 if (processRegister.pcb.getPriority() < ((Process) readyProcessList[i]).pcb
21                         .getPriority()) {
22                     isNeedScheduling = true;
23                 }
24             }
25             showReadyQueen();
26             
27             if (isNeedScheduling) {
28                 for (int i = 1; i < readyProcessList.length; i++) {
29                     for (int j = 0; j < readyProcessList.length - i; j++) {
30                         if (((Process) readyProcessList[j]).pcb.getPriority() < ((Process) readyProcessList[j + 1]).pcb
31                                 .getPriority()) {
32                             swap(readyProcessList, j, j + 1);
33                         }
34                     }
35                 }
36                 processRegister.pcb.setPSW(0);
37                 processRegister.pcb.setPC(CpuPanel.getCpu().PC);
38                 processRegister.pcb.setDIndex(CpuPanel.getCpu().getDIndex());
39                 readyQueue.enterQueen(processRegister);
40                 
41                 processRegister = (Process) readyProcessList[0];
42                 try {
43                     readyQueue.getOutQueen(readyProcessList[0]);
44                 } catch (NullQueueException e) {
45                     e.printStackTrace();
46                 }
47                 executeField.setText(processRegister.pcb.getSign() + "-优先级:"
48                         + processRegister.pcb.getPriority());
49                 showReadyQueen();
50                 showBlockQueen();
51                 registerProcess(processRegister);
52                 CpuPanel.run();
53             }
54         }
55     }

这样的代码,不需要加注释,也一样很容易理解。

在写的过程中看了一个仁兄的代码,结果让我大跌眼镜,不但功能是糊弄老师的,而且没有封装性,命名也不规范,还用异常来控制

程序的逻辑,错误拼写一堆。还好是我这个明白人看的出来,如果让学弟学妹们看到岂不是误导别人嘛。老师还拿那个程序当范例。哎~~~

时间片轮转必须要多线程才算标准实现,单线程实现的看都不必看了。

对程序精益求精的人,真是不多了。我之所以在学校自己单干项目的缘由也可想而知了,别的人写的代码功能是能实现,但是实在是不敢恭维。

本来是打算把书上的算法都实现一遍的,不过因为临近考试,所以我就简单叙述下思路。

4.最短运行期优先:将每次申请设备前都需要占用CPU执行一段时间,但是使用设备不占用CPU,所以可以把程序的申请设备的几个占用时间段

记录到一个数组或者队列中,每执行一条指令,判断一边就绪进程和执行进程的下一次运行时间,然后选出最短运行时间的进程,调度执行。

5.最高响应比优先:道理和上面的算法的差不多,不过需要记录一个等待执行的时间,也就是加一个字段模拟。然后计算出响应比,然后排序,选择

响应比最高的进程调度执行。

6.前后台调度:前台时间片,后台先进先出,只需要加一个字段,记录前后台,然后加个判断就完了。

7.多级反馈队列轮转:给队列加一个级别字段,每调度两次就把级别减一,初始进程级别最高。时间片到时根据级别查找级别最高的进程,直接出队列

调度执行。

模拟进程管理小结,编码规范的重要性相关推荐

  1. pep8 python 编码规范_编码规范的重要性

    很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性. 对于 ...

  2. c语言编程模拟进程管理,C语言如何模拟进程管理?

    C语言如何模拟进程管理? 发布日期:2016-01-04 09:15 来源: 标签: 编程语言 C教程 C语言模拟进程 C语言模拟进程管理 本章我们主要学习C语言如何模拟进程管理,下面我们就做一下具体 ...

  3. 操作系统实验一:进程管理

    操作系统实验一:进程管理 一.实验目的: 通过实验理解进程的概念,进程的组成(PCB结构),进程的并发执行和操作系统进行进程管理的相关原语(主要是进程的创建.执行.撤销). 二.实验要求及内容: 用C ...

  4. Java入门编码规范之小白崛起

    IT小生浅谈阿里编码规范.spring boot后端注意事项及前端编码规范. JAVA编码规范摘要 无规矩不成方圆 无规范不能协作 Java代码规范能够给业界带来一个标准,促使整体行业代码规范水平得到 ...

  5. 编码规范重要性_沟通比您的编码技能更重要

    编码规范重要性 TL; DR (TL;DR) Communication is More Important Than Your Coding Skills 沟通比您的编码技能更重要 A few sh ...

  6. c语言进程管理,OS进程管理模拟(C语言实现)

    实验原理和方法 1. 进程(Process)是计算机中的程序关于其数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 1)动态性.并发性.独立性.异步性. 2)程序是 ...

  7. 【部门管理入门-3】编码规范

    [执行说明] 1.坦言之,编码规范是执行层面的规则,并不是贯穿项目过程始终的一条刚性原则,在执行的过程中,务必要实事求是.最求实际效果,千万不要教条的执行,僵化的执行.我在ThroughoutCMS的 ...

  8. 《Google C++ 编码规范》小结

    前言: 现在写代码,很多时候都是借鉴的别人的代码.而大家的代码风格都不同,很多时候我也会造成自己没有固定的代码风格.从网上找了这个<Google C++ 编码规范>,希望整理出自己的编码风 ...

  9. Discuz代码研究-编码规范

    来源:http://www.cnblogs.com/janas/archive/2013/08/20/3271408.html Discuz中的编码规范很值得PHP开发人员借鉴.里面既介绍了编码时代码 ...

最新文章

  1. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品
  2. 分子排列不同会导致_原子或分子之间的作用力是什么力?
  3. MyBatis 缓存详解-一级缓存的不足
  4. 前端学习(3146):react-hello-react之getBeforeUpdate
  5. rocksdb ubuntu c++源码编译测试
  6. mysql 单表union_在MySQL中用union合并两个表?
  7. POJ3070:Fibonacci——题解
  8. 城市平乱 (dijkstra模板题)
  9. linux page buffer cache深入理解
  10. php curl 及其参数
  11. 如何下载并使用别人写的库——jupyter notebook
  12. 网络盘的计算机密码是什么,如何让win7映射网络驱动器记住密码
  13. 【loj2339】【WC2018】通道
  14. fox邮箱新建的服务器,foxmail新建账户创建其他邮箱的操作步骤
  15. do还是doing imagine加to_“imagine to do”与“imagine doing”的区别是什么?
  16. linux中如何查看mac地址
  17. 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
  18. 利用GPU(CUDA)跑YOLO V5(Windows环境)(一)
  19. 【前端】Vue项目:旅游App-博客总结
  20. 区分浏览器,判断浏览器版本

热门文章

  1. 并行计算——OpenMP加速矩阵相乘
  2. ASN.1简介及OpenSSL中ASN.1接口使用举例
  3. 提高C++性能的编程技术笔记:编码优化+测试代码
  4. Caffe中Layer注册机制
  5. mytag.class.php,织梦CMS/dedecms织梦模板留言板调用{dede:}标签的头部尾部的方法
  6. java 安装界面广告_用javascript实现仿163的js广告向下挤压页面的效果
  7. 计算机管理员身份有哪些优点,重装系统有什么好处?有哪些理由值得让电脑重装系统?...
  8. named 客户端无法解析_解析天联高级版客户端无法访问用友U8问题
  9. 图像在计算机中通过什么方式表示_万物皆可“计算机视觉”
  10. linux服务器加固的命令,Linux 服务器安全加固