资源简介
进程状态模拟转换课程设计代码,使用python编写,设计要求:模拟两种系统资源,每种资源的初始数目有自己设定
有进程的标识、进程的具体数据结构由自己设定
利用队列的概念。设置就绪队列和阻塞队列
至少模拟四种条件下的进程状态转换,即进程调度、时间片用完、I/O请求和I/O完成等四种条件
代码片段和文件信息
# coding=utf-8
import random
import time
resource1=3
resource2=3
ready = [] # 就绪状态队列
block = [] # 阻塞状态队列
creat= [] # 创建状态队列
def paixu(list lens): # 按优先级排序
temp = []
for j in range(0 lens):
for k in range(0 lens - j - 1):
if list[k][3] < list[k + 1][3]:
temp = list[k]
list[k] = list[k + 1]
list[k + 1] = temp
def creat_new():
global resource1resource2
print(‘*******进程获得了执行所需的资源******‘)
# print(‘创建一个进程前,资源1为%d,资源2剩余%d‘ % (a b))
# print(resource1resource2)
resource1 =resource1- need1
resource2 =resource2- need2
# print(need1need2)
# print(resource1 resource2)
# print(‘创建一个进程后,资源1剩余%d,资源2剩余%d‘%(resource1resource2))
counter = random.randint(1 8) # 随机产生进程执行所 需的时间片
priority = random.randint(1 30) # 优先级随机产生范围为1-30
id = creat[0]+1
zhouzhuan = [] # 周转时间列表,用于保存进程每次执行开始的时间
state = 0
io = random.randint(0 1) # 进程是否需要io
print(‘----正在创建标号为%d的进程----‘ % (creat[0] + 1))
#time.sleep(0.5)
print(‘----进 程 创 建 成 功----‘)
del creat[0]
#time.sleep(0.5)
task = [id state priority counter zhouzhuan io need1 need2] # 建立进程列表
ready.append(task)
print(‘该进程已加入就绪队列中,此时就绪队列中的进程数为%d\n‘ % (len(ready)))
#time.sleep(0.5)
def show_num():
print(‘***此时就绪队列中的进程数为%d***‘ % (len(ready)))
print(‘***此时阻塞队列中的进程数为%d***‘ % (len(block)))
print(‘***此时处于创建状态的进程数为%d***\n‘%(len(creat)))
def jiance():
global resource1 resource2
global need1need2
while len(creat)>0:
need1 = random.randint(0 2) # 定义进程执行需要的第一种系统资源
need2 = random.randint(0 2) # 定义进程执行需要的第二种系统资源
print(‘需求A:%d资源A:%d‘ % (need1 resource1))
print(‘需求B:%d资源B:%d‘ % (need2 resource2))
if (need1 <= resource1 and need2 <=resource2):
creat_new()
print(‘创建一个进程后,资源A剩余%d,资源B剩余%d‘ % (resource1 resource2))
else:
print(‘资源再次不足,等待系统再次释放资源‘)
show_num()
break
def io(readyblock):
for every in block:
if every[5]==0:
every[5]=int(input(‘请为标号为%d的进程执行I/O操作(输入1):‘%ev
- 上一篇:python五子棋代码
- 下一篇:协同过滤代码实现
评论
共有 条评论