FCFS和SJF

上课老师要求不管用什么语言写出先来先服务FCFS和短作业SJF服务,贪图时间,就用了python来写。网上资源也少。没有什么难点,纯属逻辑问题。怕我自己会忘记,所以记下来以备后用。
使用的版本是python3.0
软件是pycharm

#coding:utf-8
###python3.5
__author__ = 'DD'
global N
N = 5
pcb = []
#输入函数
def inPcb():global Ni=0while (i < N):print("****************************************")pName = input("请输入进程名 :")                 #进程名inTime = input("请输入进入时间:")               #进入时间serverTime = input("请输入服务时间:")           #服务时间#数据按顺序存放到列表中 startTime=开始时间 finishTime=完成时间 zzTime=周转时间 dqzzTime=带权周转时间#          进程名 进入时间 服务时间  开始 完成 周转 带权pcb.append([pName, inTime, serverTime, 0,  0,   0,    0])i = i + 1
#先来先服务
def fcfs():global Npcb.sort(key=lambda x:x[1], reverse=False)  ##升序排序   x:x[1] 按照进入时间排序i = 0for i in range(N):if(i==0):startTime = int(pcb[i][1])pcb[i][3] = startTimepcb[i][4] = startTime + int(pcb[i][2])else:startTime = pcb[i-1][4]pcb[i][3] = startTimepcb[i][4] = startTime + int(pcb[i][2])i = i + 1for i in range(N):     #计算周转时间和带权周转时间pcb[i][5] = float(pcb[i][4]) - int(pcb[i][1])    #周转时间pcb[i][6] = float(pcb[i][5]) / int(pcb[i][2])    #带权周转时间i = i + 1#讲结果输出出来pcb.sort(key=lambda x:x[0], reverse=False)     ##升序排序  按照进程名排序print('运行结果:')for i in range(N):print("进程名:%s 进入时间:%d 服务时间:%d 开始时间:""%d 完成时间:%d 周转时间:%d 带权周转时间:%.2f"% (pcb[i][0],int(pcb[i][1]),int(pcb[i][2]),int(pcb[i][3]),int(pcb[i][4]),int(pcb[i][5]),float(pcb[i][6])))i +=1
#短作业优先
def sjf():sjf_pcb=pcbtemp_pcb = pcb[1:len(sjf_pcb)]   #切片 临时存放后备队列  len(sjf_pcb)获取长度。temp_pcb.sort(key=lambda x:x[2], reverse=False)  ##对后背队列 按照服务时间排序sjf_pcb[1:len(sjf_pcb)]=temp_pcbi = 0for i in range(N):if(i==0):startTime = int(sjf_pcb[0][1])pcb[0][3] = startTimepcb[0][4] = startTime + int(sjf_pcb[0][2])else:startTime = sjf_pcb[i-1][4]pcb[i][3] = startTimepcb[i][4] = startTime + int(sjf_pcb[i][2])i = i + 1for i in range(N):sjf_pcb[i][5] = int(sjf_pcb[i][4]) - int(sjf_pcb[i][1])    #周转时间sjf_pcb[i][6] = float(sjf_pcb[i][5]) / int(sjf_pcb[i][2])    #带权周转时间i = i + 1#输出结果pcb.sort(key=lambda x:x[0], reverse=False)     ##升序排序  按照进程名排序print('短作业优先SJF运行结果:')for i in range(N):print("进程名:%s 进入时间:%d 服务时间:%d 开始时间:""%d 完成时间:%d 周转时间:%d 带权周转时间:%.2f"% (sjf_pcb[i][0],int(sjf_pcb[i][1]),int(sjf_pcb[i][2]),int(sjf_pcb[i][3]),int(sjf_pcb[i][4]),float(sjf_pcb[i][5]),float(sjf_pcb[i][6])))
if __name__ == '__main__':inPcb()fcfs()sjf()

结果如下显示:

****************************************
请输入进程名 :a
请输入进入时间:0
请输入服务时间:4
****************************************
请输入进程名 :b
请输入进入时间:1
请输入服务时间:3
****************************************
请输入进程名 :c
请输入进入时间:2
请输入服务时间:5
****************************************
请输入进程名 :d
请输入进入时间:3
请输入服务时间:2
****************************************
请输入进程名 :e
请输入进入时间:4
请输入服务时间:4
运行结果:
进程名:a 进入时间:0 服务时间:4 开始时间:0 完成时间:4 周转时间:4 带权周转时间:1.00
进程名:b 进入时间:1 服务时间:3 开始时间:4 完成时间:7 周转时间:6 带权周转时间:2.00
进程名:c 进入时间:2 服务时间:5 开始时间:7 完成时间:12 周转时间:10 带权周转时间:2.00
进程名:d 进入时间:3 服务时间:2 开始时间:12 完成时间:14 周转时间:11 带权周转时间:5.50
进程名:e 进入时间:4 服务时间:4 开始时间:14 完成时间:18 周转时间:14 带权周转时间:3.50
短作业优先SJF运行结果:
进程名:a 进入时间:0 服务时间:4 开始时间:0 完成时间:4 周转时间:4 带权周转时间:1.00
进程名:b 进入时间:1 服务时间:3 开始时间:6 完成时间:9 周转时间:8 带权周转时间:2.67
进程名:c 进入时间:2 服务时间:5 开始时间:13 完成时间:18 周转时间:16 带权周转时间:3.20
进程名:d 进入时间:3 服务时间:2 开始时间:4 完成时间:6 周转时间:3 带权周转时间:1.50
进程名:e 进入时间:4 服务时间:4 开始时间:9 完成时间:13 周转时间:9 带权周转时间:2.25

python编写FCFS和SJF相关推荐

  1. c语言编写FCFS和SJF

    #include <stdio.h> #define MAXNUM 100 int id[MAXNUM]; double send[MAXNUM];//提交时间 double proces ...

  2. JAVA编写FCFS(先来先服务算法) 和 SJF(最短进程优先调度算法)

    核心代码如下: import java.util.ArrayList; import java.util.Scanner;public class opera {private static doub ...

  3. c语言实现FCFS SJF算法,实现FCFS和SJF调度算法.docx

    操作系统实验报告 实验一:作业调度 学院: 软件学院 专业: 软件工程 班级: 软件工程12-01 姓名: *** 学号:541213460157 实验一:作业调度 实现FCFS和SJF调度算法 [实 ...

  4. 实现FCFS和SJF调度算法(电梯调度算法详解)

    实现FCFS和SJF调度算法 操作系统实验报告 实验一:作业调度 学院:软件学院 专业:软件工程 班级:软件工程12-01 姓名:*** 学号:541213460157 实验一:作业调度 实现FCFS ...

  5. 1-2 用Python编写【房价预测】模型----paddle

    课程>我的课程>百度架构师手把手教深度学习>1-2 用Python编写[房价预测]模型> 1-2 用Python编写[房价预测]模型 paddle初级教程第一章 第二节 王然( ...

  6. python怎么编程乘法口诀表_用python编写乘法口诀表的方法

    用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到 ...

  7. python编写脚本方法_【Python】教你一步步编写banner获取脚本

    Hello 各位小伙伴们大家好,周末过的愉快吗? 刚好最近学习了使用python编写banner获取脚本,今天就跟大家一起一步一步再学习一遍吧. Part.1 说明篇 什么是banner? banne ...

  8. Python编写循环的两个建议 | 鹅厂实战

    作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...

  9. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

最新文章

  1. 什么时候用var关键字
  2. java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)
  3. 利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II
  4. Java BigDecimal valueOf()方法与示例
  5. sr650服务器cpu型号,至强Gold 联想ThinkSystem SR650评测
  6. Zookeeper单机安装(开启kerberos)
  7. 设置windows引导linux分区,windows下安装grub引导Linux
  8. mysql 索引 hash_Mysql中索引类型,B-tree、Hash索引怎么实现的以及其特点?
  9. 收银怎样挂单和取单_挂单取单(PC收银)
  10. 前端学习--PS移动和选区工具
  11. 星门跳跃-rqnoj-341
  12. 【C标准库】通过locale.h设置美元的格式
  13. c语言何钦铭,C语言 何钦铭
  14. Android5.1 -Recents分析
  15. golang Use of package XXX without selector
  16. 微信小程序 苹果手机 https wx.request 不反应
  17. Scala学习笔记(三)
  18. Java基础 Stream流方法引用异常文件
  19. JS相关笔记---DAY2(逻辑运算,判断,循环以及demo,在输出方面和C,java有很大不同!)
  20. Unity编辑器扩展——通用组件替换工具

热门文章

  1. 获取新浪实时股票行情数据
  2. html5 网页兼容性测试工具,网页兼容性测试工具(MultiBrowser)
  3. COM编程入门第一部分——什么是COM,如何使用COM
  4. LINQ读书笔记(一)
  5. 什么高大填空四个字动人_高大怎么填空四个字
  6. PEB进程环境块分析研究
  7. N个节点的二叉树的形态数详细推导
  8. 振镜可以用计算机控制,激光振镜的工作原理
  9. [ubuntu]用SSH实现ubuntu系统互联并传输文件(无图形界面)
  10. 游戏谈话界面编写心得