python实现先来先服务_Python实战——实现进程调度算法:先来先服务(FCFS)、短作业优先(SJF)和动态最高优先数优先(HRRN)...

Python实战——实现进程调度算法:FCFS、SJF和HRRN

实验要求

进程调度算法:采用先来先服务、短作业、动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。

每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:

进程名—进程标示数 ID

优先数 PRIORITY 优先数越大优先权越高(仅HRRN)

到达时间—进程的到达时间为进程输入的时间。、

进程还需要运行时间ALLTIME,进程运行完毕ALLTIME=0,

已用CPU时间----CPUTIME、

进程开始阻塞时间STARTBLOCK-表示当进程在运行STARTBLOCK个时间片后,进程将进入阻塞状态

进程的阻塞时间BLOCKTIME–表示当进程阻塞BLOCKTIME个时间片后,进程将进入就绪状态

进程状态—STATE

因为FCFS和SJF比较简单,所以写这两个算法时比较粗糙,没有设置阻塞时间,执行时也只是打印执行进程的信息(这俩是白给的)~~

HRRN算法每次都计算作业的优先级,随着作业等待时间的变长,优先级不断的提高,所以能够得到更快的执行。一般优先级的计算方法是:优先级 = (作业已等待时间 + 作业的服务时间) / 作业的服务时间,而这里我只是简单地令进程在等待或阻塞时优先数+1,效果都差不多~~

代码如下

运行环境为python 3.7

import random

class PCB:

def __init__(self,pid,priority,arr_time,all_time,cpu_time,start_block,block_time,state): ##初始化进程

self.pid=pid

self.priority=priority

self.arr_time=arr_time

self.all_time=all_time

self.cpu_time=cpu_time

self.start_block=start_block

self.block_time=block_time

self.state=state

def output(self): ##hrrn输出

print("进程"+str(self.pid),"优先级:"+str(self.priority),"到达时间:"+str(self.arr_time),

"还需运行时间:"+str(self.all_time),"已运行时间:"+str(self.cpu_time),

"开始阻塞时间:"+str(self.start_block),"阻塞时间:"+str(self.block_time),"状态:"+self.state)

def Output(self): ##sjf fcfs输出

print("进程"+str(self.p

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值