OS实验四:页面置换算法

本文详细介绍了操作系统中的页面置换算法,包括最佳置换算法OPT、先进先出算法FIFO、最近最久未使用算法LRU、改进型Clock算法和页面缓冲置换算法PBA。通过实验和性能比较,展示了不同算法的优缺点及其在缺页率上的表现。
摘要由CSDN通过智能技术生成

OS实验四:页面置换算法

github地址:https://github.com/RebekahYuuu/OS_Experiment_04

一、实验目的

  • 设计和实现【最佳置换算法OPT】、【先进先出置换算法FIFO】、【最近最久未使用置换算法LRU】、【页面缓冲置换算法PBA】;
  • 通过页面访问序列随机发生器实现对上述算法的测试及性能比较。

二、知识背景说明

请求分页虚拟内存管理

在这里插入图片描述

工作集与缺页率
  • 工作集
    多数程序都显示出高度的局部性,也就是说,在一个时间段内,一组页面被反复引用。这组被反复引用的页面随着时间的推移,其成员也会发生变化。有时这种变化是剧烈的,有时这种变化则是渐进的。我们把这组页面的集合称为工作集。

  • 缺页率
    缺页率 = 缺页中断次数/页面访问次数

三、最佳置换算法OPT

  • 基本思想
    选择永不使用或是在最长时间内不再被访问(即距现在最长时间才会被访问)的页面淘汰出内存
  • 评价
    理想化算法,具有最好性能(对于固定分配页面方式,本法可保证获得最低的缺页率),但实际上却难于实现,故主要用于算法评价参照
  • 假定系统为某进程分配了三个物理块,并考虑有以下页面号引用串:
    7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
    进程运行时,先将7, 0, 1三个页面依次装入内存。
    进程要访问页面2时,产生缺页中断,根据最佳置换算法,选择第18次访问才需调入的页面7予以淘汰。
    然后,访问页面0时,因为已在内存中所以不必产生缺页中断。
    访问页面3时又会根据最佳置换算法将页面1淘汰……依此类推,如图。
    可以看到,发生缺页中断的次数为9,页面置换的次数为6。
    在这里插入图片描述
    实现方式
void OPT()
{
	int i = 0;
	int k = 0;
	int loadInEmpty = 0;//在空页面载入该物理块
	int loadByCover = 0;
	int alreadyLoaded = 0;
	//输出当前内存页面中分别装入的物理块
	printPages(i);
	for (i = 0; i < setBlockNum; ++i)//每装入一个物理块,进行一次检验
	{
		initLocatFirstUseInTheFuture();
		//OPT确定每一个物理块的载入位置
		loadBlockByOPT(i);
		//输出当前内存页面中分别装入的物理块
		printPages(i);
	}
}
//OPT确定每一个物理块的载入位置
void loadBlockByOPT(int i)
{
	int k = 0;
	int loadInEmpty = 0;//在空页面载入该物理块
	int loadByCover = 0;
	int alreadyLoaded = 0;
	for (k = 0; k < setPageNum; ++k)//先查看是否有空位
	{
		if (page[k] == -1)//当前页面为空
		{
			page[k] =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值