·操作系统实验——内存管理之页面置换算法
目前的内存管理技术
今天我们主要讲的是虚拟内存分页管理技术,并模拟其调度
虚拟内存调度简单的讲就是不适一次性把进程的所有数据都写入内存,而是只写入需要的一部分。那么问题就来了,我们怎么知道那部分是进程运行所需要的呢,但所需要的没有在内存中怎么办呢?这些问题将是我们所要研究的几个内存调度算法所要解决的。
内存调度算法
- FIFO算法
按照时间顺序,先进先出,当有需要调出一页的时候选择最先进来的页。特点:他的特点是简单,容易实现,但效率不是很高 - LRU算法
最近最少使用算法,当有需要调出一页的时候选择最近最少使用的调出。特点:效率较高,很好的预估了未来要使用的页,但逻辑较复杂 clock算法
给每个页帧关联一个使用位。当该页第一次装入内存或者被重新访问到时,将使用位置为1。每次需要替换时,查找使用位被置为0的第一个帧进行替换。在扫描过程中,如果碰到使用位为1的帧,将使用位置为0,在继续扫描。如果所谓帧的使用位都为0,则替换第一个帧。特点:位于FIFO和clock之间实验解析
这次代码很简,就不做解释了,直接上代码
FIFO
include <stdio.h>
include <stdlib.h>
include <string.h>
int N,jishu=0,lost=0,counter=0,time;
const int page[5]={
100,500,1000,2000,5000};
typedef struct MCB{
int time;
char valid;
int adress;
}Mcb;
int find(int adress,Mcb *mcb){
int j=0;
for(int i=0;i<N;i++){
if(mcb[i].adress==adress){
j=i;
break;
}