博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进入保护模式(三)内存的分页
阅读量:6251 次
发布时间:2019-06-22

本文共 1245 字,大约阅读时间需要 4 分钟。

hot3.png

一、分页

      先入为主理解的分页和系统中内存内应的分页

      1.弄过数据库数据查找展示,有个数据分页展示的概念,这个的目的是为了速度、和展示效果上的提升

      2.内存的分页又是怎么回事哪?

         (1)加载程序那么内存分配是必不可少的;

         (2)配的几种方法:单一连续、固定分配、动态分配(最先适应、下次适应、最优适应、最坏适应、快速适应)

         (3)然动态分配是最理想的状态,但是动态分配有个问题:

                                                                             程序的加载内存的碎片化比较严重

                                                                              碎片化后占用内存大的程序分配内存是比较困难的

          处理器分页的目的是为了解决分页中的碎片化,但是太复杂了就由处理器来做这件事情了

二、认识简单分页的模型  

        1.实模式的寻址:段选择器:偏移量

        2.保护模式寻址:段选择子:偏移量  得到真实的基地址+偏移量

                          段选择子=》GDTR/LDTR得到描述符的基地址+选择子*2^3偏移=》真正的描述符=》真实基地址

        3.段式分页的寻址模式:

                                    首先分页模式是建立在保护模式下的

                                    保护模式的寻址方式还是用的但是现在他映射的是一个虚拟的内存4G空间

                                    每个页的大小是固定的4KB,占4个字节(页的物理地址,应该是起始地址)

                                    那么这个页表在内存4G的空间中,占位的描述空间有4M

                           问题1:从上面的描述中页对应的才是真实的物理地址,如何映射?

                                也就是段如何映射到页?用了多个页又是如何映射连接起来的;

                                段部件输出的是线性地址(虚拟地址),因为页的大小是4KB;

                               地址低12位是偏移量,高20位其实是一个描述符表占位(4字节);用于记录当前用的页的位置

                           问题2:从上面可以看出段和页的映射关系?

                                可以随意映射;页的映射也可以是间隔开来,也就是碎片的可以连接起来了

                           问题3:空闲页是如何标示的?

 

三、页目录、页表、页

        就好像书本一样,章节-》目录-》书名(书的分类)

        页还是以前的页;2^20

        页表首先不和页是固定对应的关系;但是每个页表有1024个页;2^10

        页目录有1024个页表的物理地址;

       问题1:这些信息保存在哪里?怎么加载的?

                 每个任务都有自己的页目录和页表;

                 处理器内部,有一个控制寄存器CR3,存放着当前的任务页目录的物理地址(页目录基址寄存器)

                 每个任务都有自己的任务状态(TSS)当任务切换时CR3也随着更新,指向新任务的页目录位置

四、例子

        书上的例子:段的起始地址:0x00800000    界限:0x5000 z字节单位

                        现在寻址偏移量:0x1050

         没开启分页前的地址:基地址+偏移量=真实的物理地址

         开启分页后:处理器页部件专门负责线性地址到物理地址的转换(段部件送的地址+后的虚拟地址)

                         首先将段部件送来的地址分为三部分:高10位 中间10位 低12位

                                                                     页目录  页表       偏移量

                          页目录的物理地址CR3中

                         (1)页目录索引*4+CR3的地址-》页目录中页表的物理地址

                         (2)页表的物理地址+页表索引*4-》页的物理地址-》真是的物理地址+偏移量

      

 

                          

                                   

                         

转载于:https://my.oschina.net/findurl/blog/184414

你可能感兴趣的文章
服务器设计笔记(3)-----消息队列
查看>>
吐槽一下wp toolkit ToggleSwitch控件
查看>>
Ubuntu16.04上Docker的安装及基本用法
查看>>
步步为营 C# 技术漫谈 四、垃圾回收机制(GC)
查看>>
WPF基础之体系结构
查看>>
Linux源码-等待队列注释
查看>>
[转] .htaccess实现www 与没有www之间的重定向
查看>>
c实现统计字符中单词的个数,单词之间用空格分隔开。
查看>>
JavaScript(三) - 精简
查看>>
BZOJ2064:分裂——题解
查看>>
poj 1797 Heavy Transportation(最短路径Dijkdtra)
查看>>
[转] 拉格朗日对偶
查看>>
WPF 在事件中绑定命令
查看>>
《工作DNA》读后感
查看>>
基于WinDbg的内存泄漏分析
查看>>
《小故事》
查看>>
气象预警采集及推送
查看>>
【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表
查看>>
python 基础复习 09 之基础函数
查看>>
Extjs 4
查看>>