Python
来源:互联网 发布:程序员一天工作几小时 编辑:程序博客网 时间:2024/05/21 03:55
操作系统课程作业代码
from math import *from random import *from time import clockimport systry: #生成随机序列 def stream(n,m): stm = [] for i in range(n): stm.append(randint(0,m)) print("输入流为:"+str(stm)) return stm #返回去重序列 def uniquelist(lst): newlist = [] for i in lst: if i not in newlist: newlist.append(i) return newlist #LRU算法 def LRU(b,stm): lst = [] count = 0 index = 0 for s in stm: if s in lst: index +=1 print(s , ' ', lst) continue #如果在物理块中,不缺页 else: if len(lst)<b: lst.append(s) else: lstb = stm[:index] #反之,将所求数据流中前第b个非重复值置换出来 lstb = lstb[::-1] lstb = uniquelist(lstb) lstb[b-1]= s lst = lstb[:b] print(s , ' ', lst , '缺页') count += 1 index += 1 print("LRU算法缺页率为:{:.5f}".format(count/len(stm))) #time+1 def timeadd1(lst): tranlist = [] for i in lst[1::2]: i += 1 tranlist.append(i) lst[1::2] = tranlist return lst #FIFO算法 def FIFO(b,stm): lst = [] count = 0 for s in stm: if s in lst[::2]: lsta = lst[::2] lst[lsta.index(s)*2+1] += 1 print(s , ' ', lst[::2]) continue #如果在物理块中,不缺页 else: lstb = lst[1::2] if len(lst)< 2*b: lst.append(s) timeadd1(lst) lst.append(1) else: c = lstb.index(max(lstb)) lst[2*c] = s timeadd1(lst) lst[2*c+1] = 1 print(s , ' ', lst[::2] , '缺页') count += 1 print("FIFO算法缺页率为:{:.5f}".format(count/len(stm))) #主函数 def main(): n = eval(input("Enter the length of input stream:")) #n = 输入流的长度,由用户输入 m = eval(input("Enter the range of the input stream(0-m):"))#m = 输入流的范围,由用户输入,即范围为0-m之间 b = eval(input("Enter the block size:")) #b = 物理块的大小,由用户输入 print("物理块大小为:%d"%b) # 打印物理块的大小 stm = stream(n,m) # 调用stream()函数生成输入流 t1 = clock() FIFO(b,stm) #调用FIFO()函数计算FIFO算法的缺页率 print("FIFO算法用时为:{:.5f}".format(clock()-t1)) #打印FIFO算法大概用时 t2 = clock() LRU(b,stm) #调用LRU()函数计算LRU算法的缺页率 print("LRU算法用时为:{:.5f}".format(clock()-t2)) #测试函数 def test(): n = 30 m = 9 b = 3 stm = [1,2,5,6,8,3,6,5,3,6,5,6,8,9,2,7,0,4,9,5,3,6,7,4,5,8,7,3,4,5] print("物理块大小为:%d"%b) print(stm) FIFO(b,stm) LRU(b,stm) #调用主函数 if __name__ == '__main__': main() except: print ("Unexpected error:", sys.exc_info() )# sys.exc_info()返回出错信息
效果为:
当时还用py2exe模块封装成exe格式,py2exe仅支持Python2.X,具体使用自行摸索
阅读全文
0 0
- Python
- Python
- Python
- python
- Python
- PYTHON
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- python
- Python
- java 虚拟机--新生代与老年代GC
- 从EXCEL数据读到数据库
- Maven构建SSM项目
- 考试管理系统
- 【简记】Java Web 内幕——jdbc基础
- Python
- Spring中常用注解的区别和作用
- email 定时任务xml设置
- str不能为null
- VS产生sdf和ipch文件太大处理方案
- Android捕捉未捕捉的异常
- 翻转二叉树
- 设计模式之享元模式
- lintcode 整数排序 II | 快速排序(Java)