页式存储管理(模拟操作系统)
来源:互联网 发布:淘宝客服怎么拿提成 编辑:程序博客网 时间:2024/04/30 14:52
最近操作系统课程实践要求,我们模拟页式存储管理,起初自己很没有思路,但是在详细的画出整个的流程的时候自己还是发现了一些规律,并且发现可以数组和队列进行模拟,我在自己写程序的时候用的是数组模拟的,当然在程序中,也会有很多的数组表示各种要记录的东西,这就要求你对页式存储管理要相当的熟悉。
这里我简单的讲述一下其中需要模拟的相关信息
1)首先需要将逻辑地址转换为对应的页号以及页内位移(这里我默认页面大小是1024,页面数为5)
例如:
830/1024=0......830
1234/1024=1......210
3333/1024=3......261
2456/1024=2......408
3500/1024=3......428
5678/1024=5......558
1245/1024=1......221
200/1024=0......200
4560/1024=4......464
1333/1024=1......309
上边的计算就是在记录每一个逻辑地址相对应的页面号以及页内位移。程序是采用输入逻辑地址,这就需要一个数组进行逻辑地址的记录,计算出的页号和页内位移需要两个数组进行记录。为了后边的编写程序时候方便,建议大家编程时将相关的变量名进行起名的时候尽量用其英文代替,这样在以后进行讲解的时候也帮助自己理解。
你还要判断你输入的逻辑地址是否越界,当你输入页面大小,以及页面数的时候就是确定了总的大小,如果逻辑地址超过了页面大小*页面数量就是代表越界。我在程序里边就是进行简单的打印越界信息,进行输出。(上边的5678就已经发生了越界 5678>5*1024)
在这里打印出页号,页内位移相关信息(是已经排除了越界的逻辑地址)
页号页内位移0 83012103261240834281221020044641309
以上表格显示就是最后打印出来的输入的逻辑地址对应的页号及页内位移。我是模拟页式存储管理,采用先进先出算法。
根据表格就可以得到访问序列就是0,1,3,2,3,1,0,4,1
根据所学的知识采用先进先出算法(FIFO)模拟替换情况
访问序列 0 1 3 2 3 1 0 4 1 物理块10002T22221T物理块2 111110T00物理块3 333334T4表格中用大写字母T表示的就是进行了替换。
由此可以得知这次访问中淘汰的页面数是 0,1,3,2,缺页次数是7
最后计算出物理地址,物理地址的计算方法 块号*页面大小 + 页内位移 在程序中做了简单的处理,从开始就是第一个对应块号为0,第二个对应1,第三个对应2,第四个对应0,依次循环对应,便可以得知相应页面对应的块号,今儿计算出物理地址。
以下是我自己写的程序,实现这一具体的过程。但是经过测试有点缺陷,就是输入的前三个访问的逻辑地址不能有相同的页面号(三个页号全不相等)
自己也只是简单的实现了,要想很完整的实现就要进行相关的判断,这个程序还是要完善。只是把先进先出算的思想表示出来。这里是运行截图:
第一次写这么长的博客,希望对你有帮助,嘿嘿
- 页式存储管理(模拟操作系统)
- 【操作系统】可变分区存储管理,模拟实现
- 求助帖 关于C#编写模拟操作系统(文件管理 存储管理 设备管理 进程管理)
- 操作系统存储管理之页式存储管理深入浅出
- 操作系统原理:页式存储管理
- 《操作系统》—页式存储管理
- 操作系统原理:页式存储管理
- 模拟请求页式存储管理--LRU
- 操作系统分页式存储管理
- 操作系统——请求调页存储管理方式的各种模拟
- 操作系统试验七——模拟虚拟存储管理(上)
- 操作系统实验七——模拟虚拟存储管理(下)
- 操作系统---文件管理 模拟
- 操作系统的页式,段式和段页式存储管理
- 请求式分页存储管理算法(操作系统)C/C++
- 操作系统 - 虚拟存储管理技术之虚拟页式存储管理
- 操作系统:虚拟页式存储管理(缺页中断、页面置换算法)
- 以考带学操作系统(存储管理)
- LMDB使用说明
- java no XXX in java.library.path怎么配置
- 常量放在java接口里还是java类里的问题
- 初识Servlet
- Mongdb 3.2 复制集配置 官方默认配置 无认证 Windows环境
- 页式存储管理(模拟操作系统)
- Android 内存优化-常见内存泄露
- android:configuration 处理屏幕旋转和语言切换等问题
- 1. C++新增加了bool类型
- 2016个人年终总结
- mysql 5.7 的安装
- 邮箱校验华为
- 如何在Linux上安装Composer
- 使用dcm4che3解析DICOM中,中文乱码问题