#include "stdio.h"

#include "stdlib.h"

#include "string.h"

#define SizeOfBlock 128

#define M 4

struct info//页表

{

int block;//物理页架号

int disk;//在磁盘上的物理块号

int flag; //内外标志

}pagelist[10];

int po;//队列标记

int t[M];

po=0;

//页表初始化

void init()

{ int i;

printf("页表初始化\n");

for(i=0;i<=9;i++)

{pagelist[i].flag=0; //所有的逻辑页都不在内存

printf("请输入第%d个逻辑页在外存的块号:",i);

scanf("%d",&pagelist[i].disk);

}

}

//地址重定位,请同学们自己完成

void work()

{

int i,logicPage,lPage,pageAddress,phsicAddress;

printf("读入四个逻辑页到内存中,并输入对应的物理页架:\n");

for(i=0;i

{

printf("读入逻辑页号:");

scanf("%d",&logicPage);

while(logicPage>=10)

{

printf("逻辑号出界!重新输入");

printf("读入逻辑号:");

scanf("%d",&logicPage);

}

printf("读入对应的物理页架:");

scanf("%d",&pagelist[logicPage].block);

pagelist[logicPage].flag=1;

}

do{

printf("读入逻辑页号和页内地址:");

scanf("%d",&lPage);

scanf("%d",&pageAddress);

if(lPage>=10)

printf("地址越界!\n");

else if(pagelist[lPage].flag==1)

{

for(i=0;i

{

if(lPage==i)

{

phsicAddress=pagelist[lPage].block*SizeOfBlock+pageAddress;

printf("物理地址是:%d\n",phsicAddress);

break;

}

}

}

else

{

printf("发生缺页中断!");

pagelist[po].disk=pagelist[po].block;

pagelist[po].flag=0;

pagelist[po].block=pagelist[lPage].block;

pagelist[lPage].flag=1;

phsicAddress=pagelist[po].block*SizeOfBlock+pageAddress;

po++;

if(po>4)

{

po=0;

}

printf("物理地址是:%d\n",phsicAddress);

}

}while(lPage!=-1);

}

/*输出菜单*/

void printfunc(void)

{printf(" **********************************\n");

printf(" * 1-虚拟页式管理的地址重定位 *\n");

printf(" * 0-exit *\n");

printf(" **********************************\n");

}

/*主函数*/

int main()

{

int choice;

printfunc();

do

{printf("please input the number:");

scanf("%d",&choice);

getchar();

switch (choice)

{case 1:

init(); //页表初始化

work();//地址重定位

printfunc();

break;

case 0:exit(0);

}

}while(1);

}

模拟存储器管理C语言,操作系统-存储器管理实验C语言.doc相关推荐

  1. 操作系统——存储器管理

    操作系统--存储器管理 程序的装入和链接 用户程序想要在系统中运行,必须先将他装入内存,然后再将其转变为一个可执行的程序,步骤: 编译-->链接-->装入 程序的装入: 绝对装入方式:(只 ...

  2. 操作系统——存储器管理的功能

    一. 内容总览 二. 内存空间的分配和回收 为了能将用户程序装入内存,必须为它分配一定大小的内存空间.连续分配方式是最早出现的一种存储器分配方式 该分配方式为一个用户程序分配一个连续的内存空间,即程序 ...

  3. c语言选择结构程序设计实验报告6,c语言-选择结构程序设计实验报告4.doc

    c语言-选择结构程序设计实验报告4.doc 实验报告 实验题目:选择结构程序设计 实验目的: 了解C语言表示逻辑量的方法(以0代表"假"以非0代表"真"). 学 ...

  4. 操作系统-存储器管理实验

    存储器管理 一.目的 本课题实验的目的是,使学生实验存储器管理系统的设计方法:加深对所学各种存储器管理方案的了解:要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行. 二.题目 存 ...

  5. 操作系统存储器管理管理试验

    存储器管理 一.目的 本课题实验的目的是,使学生实验存储器管理系统的设计方法:加深对所学各种存储器管理方案的了解:要求采用一些常用的存储器分配算法,设计一个存储器管理模拟系统并调试运行. 二.要求及提 ...

  6. 操作系统—存储器管理

    存储器管理 1 存储器的层次结构 ​ 计算机执行时,几乎每条指令都涉及对存储器的访问.因此要求对存储器的访问速度跟得上处理机的运行速度.考虑到价格和现实因素,如今的计算机大都采用了多层结构的存储器系统 ...

  7. 操作系统——存储器管理(连续分配存储管理方式)

    文章目录 一.单一连续分配 二.固定分区分配 1. 划分分区的方法 2. 内存分配 三.动态分区分配 1. 动态分区分配中的数据结构 2. 动态分区分配算法 3. 分区分配操作 四.基于顺序搜索的动态 ...

  8. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  9. c语言des算法实验报告,C语言实现DES算法实验报告解析.doc

    C语言实现DES算法实验报告解析 xx工程大学 实验报告 (2015-2016学年第一学期) 报告题目: DES加密算法 课程名称: 密码学B 任课教员: 专 业: 学 号: 姓 名: 二O一六年一月 ...

最新文章

  1. 特斯拉再裁员3000多人,马斯克称别无选择
  2. 背包九讲之四(混合三种背包问题)
  3. YbtOJ-森林之和【dp】
  4. 需要清除memcach缓存方能解决的几个报错
  5. Velocity 语法学习
  6. angular学习笔记(六)-非入侵式javascript
  7. Andoid Activity.getWindowManager().getDefaultDisplay().getWidth()已被废弃
  8. 某一天,忽然发现自己坚持不下去了。(无关计算机,只是一些自己的困惑和感想)
  9. 十、垃圾回收策略概览
  10. 软件测试人员工作计划怎么写,软件测试个人工作计划.docx
  11. 问题:虚拟机安装Ubuntu时,显示PXE-MOF:Exiting Intel PXE ROM.Operating Systen not found
  12. 2022最新7个开源Kubernetes(k8s)开发工具
  13. 高项47个过程及输入、输出、工具解释
  14. 作品交流:调制解调-勘误情况
  15. delphi网络时间校对
  16. thinkphp5.1+workman+jsonRpc
  17. 前端面试题——计算机网络 高频
  18. linux识别不了u盘格式,Linux识别不了u盘怎么办
  19. OAuth2学习(二)——OAuth2实战
  20. ubuntu16怎么升级到ubuntu18

热门文章

  1. Android TabLayout定制CustomView与ViewPager交互双向联动
  2. 如何绘制平台框架的设计图:使用UML工具
  3. POJ1149 最大流(Isap)
  4. MapX历史轨迹回放[开发源代码]:
  5. Vnc安装rhel6服务器
  6. 课下测试ch17ch18
  7. SpringMVC form:form的一个错误(没有传到前台绑定类)
  8. 百度每周更新时间列表
  9. 使用用WCF中的双工(Duplex)模式将广告图片推送到每个Winform客户端机子上
  10. 时序数据库timescaleDB安装