当前位置:首页 >> 电力/水利 >>

操作系统 请求分页存储管理模拟实现


操作系统 请求分页存储管理模拟实现

#include<stdlib.h> #include<iomanip.h> #include"windows.h" #include"os.h" #define n 64//实验中假定主存的长度 #define m 4//实验中假定每个作业分得主存块块数 i

nt p[m];//定义页 struct { short int lnumber;//页号 short int flag;//表示该页是否在主存, “1”表示在主存, “0”表示不在主存 short int pnumber;//该页所在主存块的块号 short int write;//该页是否被修改过, “1”表示修改过, “0”表示没有修改过 short int dnumber;//该页存放在磁盘上的位置,即磁盘块号 short int times;//被访问的次数,用于 LRU 算法 }page[n];//定义页表 //各个函数的实现如下: computer::computer() { int i; for(i=0;i<n;i++) { page[i].lnumber = i; page[i].flag = 0; page[i].pnumber = 10000;//用 10000 表示为空 page[i].write = 0; page[i].dnumber = i; page[i].times = 0; }//初始化页表 for(i=0;i<m;i++) { page[i].pnumber = i; } for(i=0;i<m;i++) { p[i] = i; page[i].flag = 1; }//初始化页

} void computer::showpagelist() { int i; cout<<" 页 号 "<<"\t"<<" 是 否 在 主 存 中 "<<"\t"<<" 块 号 "<<"\t"<<" 是 否 被 修 改 过 "<<"\t"<<"磁盘块号"<<"\t"<<"访问次数"<<endl; for(i=0;i<n;i++) { cout<<page[i].lnumber<<"\t"<<page[i].flag<<" "<<page[i].pnumber<<"\t"<<page[i].write<<" "<<page[i].dnumber<<" \t"<<page[i].times<<endl; } } void computer::showpage() { int i; for(i=0;i<m;i++) { cout<<"\t"<<p[i]; } cout<<endl; } void computer::transformation() { unsigned logicAddress,logicNumber,innerAddress,physicsAddress,physicsNumber; int i,head=0,fail = 0; int method,temppage=0; short int times = 10000; cout<<"请输入一个逻辑地址(四位十六进制数):"; cin>>hex>>logicAddress;//读入逻辑地址 logicNumber = logicAddress >> 10;//得到页号 cout<<"页号为:"<<logicNumber<<endl; innerAddress = logicAddress & 0x03ff;//得到页内地址 cout<<"页内地址为:"<<innerAddress<<endl; for(i=0;i<n;i++) { if(logicNumber==(unsigned)page[i].lnumber) { if(page[i].flag == 1) { cout<<"请求的页面在主存中!"<<endl; page[i].times++; physicsNumber = page[i].pnumber;//由页号得到块号 cout<<"请求的主存块号为:"<<physicsNumber<<endl;

physicsAddress = physicsNumber << 10 |innerAddress;//得到物理地址 cout<<"请求的物理地址为:"<<physicsAddress<<endl;//输出物理地址 break; } else { cout<<" 请 求 的 页 面 不 在 主 存 中 ! 将 进 行 缺 页 中 断 处 理 !"<<endl<<" 请 选 择 算 法!"<<endl; cout<<"1.先进先出"<<endl<<"2.最近最少用"<<endl<<"请选择置换算法:"; cin>>method; if(method == 1) //采用先进先出算法 { cout<<"采用先进先出算法!"<<endl; fail = p[head]; cout<<"第"<<fail<<"页将被替换!"<<endl; p[head] = logicNumber; head = (head+1) % m; if(page[fail].write == 1) cout<<"第"<<fail<<"页曾被修改过!"<<endl; page[fail].flag = 0; page[logicNumber].flag = 1; page[logicNumber].write = 0; page[logicNumber].pnumber = page[fail].pnumber; page[fail].pnumber = 10000; page[logicNumber].times++; break; } else if(method == 2) //采用最近最少用算法 { cout<<"采用最近最少用算法!"<<endl; for(i=0;i<n;i++) { if(page[i].flag == 1) { if(page[i].times<times) { times = page[i].times; temppage = page[i].lnumber; } } } cout<<"第"<<temppage<<"页将被替换!"<<endl; for(i=0;i<m;i++)

{ if(p[i] == temppage) { p[i] = logicNumber; } } if(page[temppage].write == 1) cout<<"第"<<temppage<<"页曾被修改过!"<<endl; page[temppage].flag = 0; page[logicNumber].flag = 1; page[logicNumber].write = 0; page[logicNumber].pnumber = page[temppage].pnumber; page[temppage].pnumber = 10000; page[logicNumber].times++; break; } else { cout<<"你输入有误,即将退出!"; exit(1); } } } } } void main() { char c,d; computer os; cout<<"页表正在初始化中...,3 秒钟后为你显示页和页表!"<<endl; Sleep(3000); os.showpage(); os.showpagelist(); T: os.transformation(); cout<<"是否显示页和页表?(Y/N)"; cin>>c; switch(c) { case 'y': os.showpage(); os.showpagelist(); case 'n': cout<<"是否继续进行请求分页?(Y/N)"; cin>>d;

if (d=='Y'||d=='y') goto T; else if (d=='N'||d=='n') exit(1); else cout<<"输入错误!"<<endl; default:cout<<"输入错误!"<<endl; } }


相关文章:
计算机操作系统实验_源码_模拟请求分页虚拟存储管理中...
计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程_计算机软件及应用_IT/计算机_专业资料。实验报告 模拟请求分页虚拟存储管理中的硬件地址变换过程...
请求分页存储管理模拟实验
请求分页存储管理模拟实验_计算机软件及应用_IT/计算机_专业资料。调用Windows API,模拟解决生产者-消费者问题;操作系统模拟实验实验名称:请求分页存储管理模拟实验 实验...
分页系统模拟实验
操作系统原理课程设计 题目: 分页系统模拟实验 专业班级:计算机科学与技术基地班 ...(struct Page p[],int logaddr)的功能 实现模拟请求分页虚拟存储管理中的硬件...
兰州大学操作系统实验八存储管理模拟题目和答案
实验报告实验名称:存储管理模拟 实验八马康 320120935711 实验目的: 1. 掌握请求分页存储管理系统的基本原理 2. 实现一个模拟的虚拟分页存储管理系统 实验要求: 编写...
请求分页存储管理(虚拟存储)
虚拟分页存储管理实现 4页 1财富值 模拟分页式虚拟存储管理中... 9页 5财富...操作系统课程设计 请求分页存储管理(虚拟存储)操作系统课程设计 请求分页存储管理(...
操作系统实验报告-理解线程和请求分页存储管理设计
2. 模拟存储管理常用的请求分页存储管理技术,通过本实验使学生更加深入的 理解...四、具体实现: 1.实验程序:1.1 2 计算机操作系统实验报告 结果: 3 计算机...
请求分页存储管理系统设计与实现可课程设计
请求分页存储管理系统设计与实现可课程设计_计算机软件及应用_IT/计算机_专业资料...模拟操作系统原理的实现,使学生能更深刻地领会操作系统工作原理和 理解操作系统的...
操作系统实验3--请求分页式存储管理
操作系统实验3--请求分页存储管理_计算机软件及应用_IT/计算机_专业资料。请求...操作系统实验3实现请求分... 暂无评价 7页 免费 操作系统实验报告模拟分... ...
请求调页存储管理方式的模拟LFU(含源代码)
请求页式存储管理页面置... 2页 3下载券 操作系统 请求分页存储管... 2页...页表、地址转换和页面置换过程的模拟,加深对请求调页系统 的原理和实现过程的...
操作系统请求分页式管理
18 操作系统---课程设计 课程设计题目:请求页式管理模拟实现一、需求分析请求页式管理是一种常用的虚拟存储管理技术。 本设计通过请求页式存储管 理中页面置换算法...
更多相关标签:
请求分页存储管理系统 | 在一个请求分页系统中 | 请求分页存储管理 | 请求分页存储管理方式 | js实现分页并请求ajax | 请求分页系统 | 请求分页存储管理模拟 | 请求分页式存储管理 |