专注于操作系统19之走进分页
来源:互联网 发布:java字符串转date类型 编辑:程序博客网 时间:2024/04/29 21:04
在保护模式下,还提供了分页机制。为什么要分页呢?在开始的分段中,是静态分配的(也就是说段的大小是固定的),这样使内存不能充分利用(因为如果一个小程序放到了一个较大的段中,这样,这个段就有空闲空间,而这个空闲空间又不能被其它程序利用)。后来引入了动态分配(段的大小可以根据程序大小相应的变化),这解决了内存不能充分利用的问题。但在程序结束后,回收内存时,要将空闲内存连起来,这很麻烦。分页可以很好的解决内存充分利用的问题,又不用把空闲内存连起来,并且分页的内存分配更灵活,每一个线性地址对应的页可以对应任意的物理页。
分页机制中的地址变化是:虚拟地址(48位,由16位的段选择子和32位的段内偏移组成)-->线性地址(32位,通过段选择子得到段的基址再加上段内偏移地址得到)-->物理地址(32位,通过32位的线性地址高20位用于查页目录表和页表找到相应的物理页,得到物理页的首地址,再将这个地址加上线性地址的低12位)。 这里有两个表,页目录表(表项存的是页表的地址),页表(表项存的是物理页的地址)。页目录表的地址存放在CR3中。具体变换可以看下面的图:
怎么启动分页机制呢?在CR0的最高位PG,如果PG=1则启动分页。分页我们需要做:1.建立页目录表,2.建立页表,3.将页目录表的地址放到CR3中,4.将CR0中的PG置1表示启动分页。
- 专注于操作系统19之走进分页
- 专注于操作系统20之启动分页
- 专注于操作系统21之分页进阶
- 专注于操作系统10之走进保护模式
- 专注于操作系统4之引导程序
- 专注于操作系统5之引导程序代码
- 专注于操作系统13之LDT
- 专注于操作系统15之特权级
- 专注于操作系统22之中断
- 专注于操作系统23之中断进阶
- 专注于操作系统29之从loader进入保护模式并分页
- 专注于操作系统1之操作系统的从无到有a
- 专注于操作系统2之操作系统的从无到有b
- 专注于操作系统6之导入操作系统内核
- 专注于操作系统3之计算机的启动过程
- 专注于操作系统7之初识保护模式
- 专注于操作系统8之保护模式基础知识a
- 专注于操作系统9之保护模式基础知识b
- php 变量判断
- 博客tuan-group
- jquery导航
- c程序设计语言笔记2
- Oracle常用服务简介
- 专注于操作系统19之走进分页
- C#中StringReader和StringWriter的使用
- ubuntu11.10 搭建 SMB (samba)服务
- Oracle语句及查询结果
- day04基础
- 学习笔记,如何调试硬件OK6410(综合)
- Session,ViewState用法
- 3.12
- Jquery入门——选择器