【题目描述】所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。
问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LRU算法时,输出发生的缺页次数。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在第一行中输入进程获得使用权的主存块数量n。
在第二行中输入进程访问页面的次序,各数据之间以空格为间隔。
【输出格式】输出对于给定的n和进程访问页面的次序,输出采用LRU算法时的缺页次数。
【输入样例】3
1 2 3 4 1 2 5 1 2 3 4 5
【输出样例】7
import math
# 三维图形功能接口
class ThreeDimensionalShape:
def perimeter(self):
pass
def area(self):
pass
def volume(self):
pass
# 定义点类
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def get_coordinates(self):
return self.x, self.y
def set_coordinates(self, x, y):
self.x = x
self.y = y
def display(self):
print("点坐标: ({}, {})".format(self.x, self.y))
# 圆类
class Circle(Point):
def __init__(self, x, y, radius):
super().__init__(x, y)
self.radius = radius
def get_radius(self):
return self.radius
def set_radius(self, radius):
self.radius = radius
def perimeter(self):
return 2 * math.pi * self.radius
def area(self):
return math.pi * self.radius ** 2
def display(self):
super().display()
print("半径: ", self.radius)
print("周长: ", self.perimeter())
print("面积: ", self.area())
# 球类
class Sphere(Circle, ThreeDimensionalShape):
def __init__(self, x, y, radius):
super().__init__(x, y, radius)
def volume(self):
return (4 / 3) * math.pi * self.radius ** 3
def display(self):
super().display()
print("体积: ", self.volume())
# 圆柱类
class Cylinder(Circle, ThreeDimensionalShape):
def __init__(self, x, y, radius, height):
super().__init__(x, y, radius)
self.height = height
def volume(self):
return math.pi * self.radius ** 2 * self.height
def display(self):
super().display()
print("高度: ", self.height)
print("体积: ", self.volume())
# 圆锥类
class Cone(Circle, ThreeDimensionalShape):
def __init__(self, x, y, radius, height):
super().__init__(x, y, radius)
self.height = height
def volume(self):
return (1 / 3) * math.pi * self.radius ** 2 * self.height
def display(self):
super().display()
print("高度: ", self.height)
print("体积: ", self.volume())
# 测试
point = Point(0, 0)
circle = Circle(1, 2, 5)
sphere = Sphere(3, 4, 6)
cylinder = Cylinder(5, 6, 3, 8)
cone = Cone(7, 8, 4, 10)
print("点:")
point.display()
print("-----------------")
print("圆:")
circle.display()
print("-----------------")
print("球:")
sphere.display()
print("-----------------")
print("圆柱:")
cylinder.display()
print("-----------------")
print("圆锥:")
cone.display()