结束
检查所有PCB是否都为结束状态?
执行用户服务进程UserServer(long kx)
设置PCB[3]状态为结束
否
是
PCB[kx].status为3(结束状态)
检查a是否为0?
模拟器工作循环work()函数
生成随机数r并重新选择
是更新PCB[kx].count
开始
生成随机数a更新PCB[kx].po和wait数组”
初始化init()函数
检查PCB[k].status是否为0(可运行状态)
生成随机数r根据r的值选择进程k
检查well[kx]是否满?
检查PCB[1]和PCB[2]是否都为结束状态?
输入文件大小input()函数
是更新well[kx]”
检查PCB[kx].count是否等于K[kx]?
PCB[kx].status为1(不可运行状态)更新“输出块计数n”和“ReqBlock数组”