本实验报告针对操作系统课程中的页面置换算法进行详细探讨与实践分析,旨在通过具体操作加深对先进先出、最近最久未使用等算法的理解。
### 实验题目:页面置换算法(请求分页)
#### 一、实验目的:
1. 进一步理解父子进程之间的关系。
2. 理解内存页面调度的机理。
3. 掌握页面置换算法的实现方法。
4. 比较不同调度算法的优劣,培养综合运用所学知识的能力。
通过本次试验,学生将深入理解虚拟存储管理中的关键部分——内存页面调度机制。实验要求在模拟实现FIFO(先进先出)和LRU(最近最少使用)等经典页面置换算法的基础上,比较这些算法的有效性及各自的优缺点,并了解虚拟存储的实现过程。此外,在不同的子进程中分别运用这两种置换算法进行模拟,以强化综合知识的应用能力。
#### 二、实验内容与要求:
这是一个综合性较强的实验项目,需要在掌握父子进程并发执行机制和内存页面置换算法的基础上完成。具体而言:
- **程序设计**:编写一个包含父进程及两个子进程的程序。
- 父进程利用`rand()`函数生成若干随机数,并将这些数据存储在一个数组Acess_Series[]中,作为模拟内存访问序列的基础。
- 两个独立运行的子进程基于这个访问序列分别采用FIFO和LRU算法进行页面置换操作。每个子进程需记录每次页面调度的结果(包括命中与缺页情况),并计算出相应的统计数据:
- 缺页次数(diseffect):代表在当前内存中找不到所需数据时发生的事件。
- 总访问次数(total_instruction):表示整个实验过程中总的内存请求数量。
- **性能指标**:
- 缺页率 = diseffect / total_instruction
- 命中率 = (1 - disaffect / total_instruction)
此外,还需通过多次运行程序来观察和分析当为进程分配不同大小的内存页面数mframe时FIFO算法所表现出的独特现象(即Belady效应)。