80386的内存分页机制

来源:互联网 发布:polyfit函数的算法 编辑:程序博客网 时间:2024/05/16 20:44

除了CR3,使用的是物理地址,其他寄存器使用的是线性地址。

是否启动分页机制,是由CR0中PG(31)位决定的。

在启用分页机制后,32位的线性地址被划分成3个域:

  • Directory(目录),在线性地址中为最高10位,用于访问页目录表中的项。
  • Table(页表),在线性地址中为中间10位,用于访问页表中的项。
  • Offset(偏移量),最低12位,用于访问页内的某个存储单元。

映射表结构:4G的线性空间,页大小为4K,那么就需要1M页,也就是说映射表中有1M项,每项占4字节,那么这张表就需要4字节。

采用上面页映射表分为二级。页目录表有1K个表项,每项为4字节。页表也这么分配。

windows98的一个进程的线性空间安排

开始位置

 

ffffffff

操作系统代码

c0000000

系统dll

80000000

用户dll

10000000

进程堆栈和进程代码、数据

00400000

dos/win16兼容区

00001000

空指针区域

通过切换页表内容让线性地址在不同的时间片内映射不同的内容。

原创粉丝点击