• 大小: 6KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Python
  • 标签: 操作系统  python  

资源简介

进程状态模拟转换课程设计代码,使用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

评论

共有 条评论