[053][x86汇编语言]16.3.1 开启页功能 内存以及GDT示意图

学习笔记

《x86汇编语言:从实模式到保护模式》
https://www.jianshu.com/p/d481cb547e9f

内核程序被加载后 页功能尚未开启前的示意图

[053][x86汇编语言]16.3.1 开启页功能 内存以及GDT示意图_第1张图片
第十六章 内核程序加载之后的内存以及GDT示意图.png

开启页功能

[053][x86汇编语言]16.3.1 开启页功能 内存以及GDT示意图_第2张图片
开启页功能:加入页目录和页表后的低端1MB内存布局.png
  • 1个任务必须要有1个页目录,也只需要一个页目录;
  • 内核本身也是1个任务,那么内核也需要自己的页目录,数量是一;
  • 内核需要多少页表?1个页表里面有1024个页,单个页的大小是4KB,那么1个页表就有4MB的内存空间可以用,书上的内核程序远远没有4MB那么大,所以1个页表足够用;
  • 因此,对内核程序而言,需要1个页目录以及1张页表;
可以这样理解,把内核程序想象成一个人,去坐公交,
司机就是页目录,座位就是页表,整台车就是内存

内核程序就是一个人,一个人就坐一个位子
(一张页表足以),
一台公交车,有好几十个座位,但是坐不满没关系
(整个内存有4GB 空闲的地方多得是)
需要开车那么必须有一个司机,也只需要一名司机即可
(有且只有一个页目录)

比起公交,其实内存更像火车,那个长,那个座位多...

按照这个思路,可以把磁盘想象成火车站,可以容纳的人更多
(大量没在使用的数据放在磁盘里)
乘客上车
(数据从磁盘放入内存)
而只有坐在了车上的乘客才可以去到目的地
(程序放到内存才可以被执行,数据放到内存才可以被使用)
  • 在GDT到内核程序之间有一段很大的空闲内存,用来放内核自己的页目录以及页表;
  • 页目录的大小是4KB,4K= 4096D(十进制)=0x1000(十六进制),因此页目录占用的内存空间是0x0002 0000 ~ 0x0002 1000.

你可能感兴趣的:([053][x86汇编语言]16.3.1 开启页功能 内存以及GDT示意图)