免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12660 | 回复: 13
打印 上一主题 下一主题

init386之前的地址空间和页表结构示意图 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-26 20:54 |只看该作者 |倒序浏览
init386之前的地址空间和页表结构是在/sys/i386/i386/locore.s中建立的。
相关过程的分析笔记参见http://bbs.chinaunix.net/thread-1254867-1-1.html
页表相关宏值定义的含义参见http://bbs.chinaunix.net/thread-1254863-1-1.html

[ 本帖最后由 雨丝风片 于 2008-8-27 19:34 编辑 ]

locore_vm.jpg (361.5 KB, 下载次数: 225)

locore_vm.jpg

评分

参与人数 1可用积分 +6 收起 理由
杜比环绕声 + 6 好图

查看全部评分

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
2 [报告]
发表于 2008-08-26 21:44 |只看该作者
好,挺复杂的!

论坛徽章:
0
3 [报告]
发表于 2008-08-26 21:45 |只看该作者
原帖由 congli 于 2008-8-26 21:44 发表
好,挺复杂的!


结合分析笔记一起看。。。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
4 [报告]
发表于 2008-08-26 21:47 |只看该作者
嗯,水平不够,呵~~

论坛徽章:
0
5 [报告]
发表于 2008-08-26 22:19 |只看该作者
这个示意图可没少花功夫啊!

论坛徽章:
0
6 [报告]
发表于 2008-08-26 23:07 |只看该作者
原帖由 杜比环绕声 于 2008-8-26 22:19 发表
这个示意图可没少花功夫啊!


花了我半天时间。 有了形象的示意图,代码就没那么枯燥了。。。

论坛徽章:
0
7 [报告]
发表于 2008-08-27 00:33 |只看该作者
我觉得这里面比较有意思的是这一段


  1. /*
  2. * PTmap is recursive pagemap at top of virtual address space.
  3. * Within PTmap, the page directory can be found (third indirection).
  4. */
  5.         .globl  PTmap,PTD,PTDpde
  6.         .set    PTmap,(PTDPTDI << PDRSHIFT)
  7.         .set    PTD,PTmap + (PTDPTDI * PAGE_SIZE)
  8.         .set    PTDpde,PTD + (PTDPTDI * PDESIZE)

复制代码


很有想法

论坛徽章:
0
8 [报告]
发表于 2008-08-27 09:05 |只看该作者
原帖由 mingyanguo 于 2008-8-27 00:33 发表
我觉得这里面比较有意思的是这一段


/*
* PTmap is recursive pagemap at top of virtual address space.
* Within PTmap, the page directory can be found (third indirection).
*/
        .glob ...


4M -> 4K -> 4

论坛徽章:
0
9 [报告]
发表于 2008-08-27 19:35 |只看该作者
在/sys/i386/i386/vm86.c中给出了vm86区域4个页面的布局:
   384          /*
   385           * Below is the memory layout that we use for the vm86 region.
   386           *
   387           * +--------+
   388           * |        |
   389           * |        |
   390           * | page 0 |
   391           * |        | +--------+
   392           * |        | | stack  |
   393           * +--------+ +--------+ <--------- vm86paddr
   394           * |        | |Page Tbl| 1M + 64K = 272 entries = 1088 bytes
   395           * |        | +--------+
   396           * |        | |  PCB   | size: ~240 bytes
   397           * | page 1 | |PCB Ext | size: ~140 bytes (includes TSS)
   398           * |        | +--------+
   399           * |        | |int map |
   400           * |        | +--------+
   401           * +--------+ |        |
   402           * | page 2 | |  I/O   |
   403           * +--------+ | bitmap |
   404           * | page 3 | |        |
   405           * |        | +--------+
   406           * +--------+
   407           */

vm86phystk指向的页面用于栈。vm86pa指向的3个页面用于存放页表、pcb以及io映射等信息。
每个vm86任务的线性地址空间的上限是1M+64K(FFFF:FFFF=10FFEF),共256+16=272个页面,
因此需要272个页表项,共占1088字节。随后是624字节的进程控制块和140字节的扩展进程
控制块,32字节的中断映射和8192字节的io映射以及1个字节的vml_iomap_trailer。
用于定义这三个页面布局的vm86_layout结构体共占10080字节。

因此原图中的vm86pa区域中,除去1个指向第0页面的页表项、96个指向ISA hole的页表项和
159个空页表项之外,在顶部还剩余16个页表项。其余空间是留给进程控制块、扩展进程
控制块、中断映射和io映射的。

现已更新。

论坛徽章:
0
10 [报告]
发表于 2008-08-27 20:52 |只看该作者
好图,看看先!
果然是好图!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP