OS lab4实验报告
一、实验要求
1.符合局部访问特性的随机生成算法
- 确定虚拟内存的尺寸N,工作集的起始位置p,工作集中包含的页数e,工作集移动率m(每处理m个页面访问则将起始位置p +1),以及一个范围在0和1之间的值t;
- 生成m个取值范围在p和p + e间的随机数,并记录到页面访问序列串中;
- 生成一个随机数r,0 ≤ r ≤ 1;
- 如果r < t,则为p生成一个新值,否则p = (p + 1) mod N;
- 如果想继续加大页面访问序列串的长度,请返回第2步,否则结束。
2.算法流程图
3.算法实现
'''
函数名称:Random_Sequence_String
功能:生成符合局部访问特性的随机序列
参数:
start 序列的开始 p
page_num 序列包含页数 p + e
length 生成序列长度
mobility 工作集移动率
N 虚拟内存的尺寸
返回值:
Sequence_String 随机生成的序列
'''
def Random_Sequence_String(start, page_num, length, mobility, N): # To create a sequence string with random numbers
start1, page_num1 = (int(start), int(page_num)) if start <= int(page_num) else (int(page_num), int(start))
length = int(abs(int(length))) if length else 0
Sequence_String = []
temp = 0
print(start)
print(page_num)
for i in range(length):
if temp == mobility:
start1 = start1 + 1
page_num1 = page_num1 + 1
temp = 0
temp = temp + 1
if page_num1 == N:
page_num1 = page_num
start1 = start
Sequence_String.append(random.randint(start, page_num))
return Sequence_String
二、实验设计
1.最佳置换算法
1.1 基本思想
选择永不使用或是在最长时间内不再被访问(即距现在最长时间才会被访问)的页面淘汰出内存
1.2 算法流程图
1.3 算法实现
'''
函数名称:Optimal_page_replacement_algorithm
功能:最佳置换算法
参数:
Sequence_String 随机序列
Memory_Length 内存大小
返回值:
Missing_Page 缺页量
'''
def Optimal_page_replacement_algorithm(Sequence_String, Memory_Length):
temp = 0
temp1 = 0
Missing_Page = 0
mem = []
Memory = []
flag = 99
for i in Sequence_String:
if len(Memory) < Memory_Length:
Memory.append(i)
temp = temp + 1
else