pango99
驱动牛犊
驱动牛犊
  • 注册日期2001-08-21
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1126回复:3

分页表(PAGE TABLE)空间是如何分配的?

楼主#
更多 发布于:2001-12-10 23:37
WINDOWS下,每打开一个线程,WINDOWS就要为他分配4M的分页表(PAGE TABLE)空间,这4M空间是不是NONPAGED的?(即不能被虚拟内存管理器转移到硬盘上)如果是的话,一台64M内存的机器,打开16个进程后,内存不是不够用了吗?
matt
驱动中牛
驱动中牛
  • 注册日期2001-07-24
  • 最后登录2016-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-11 09:25
WINDOWS下,每打开一个线程,WINDOWS就要为他分配4M的分页表(PAGE TABLE)空间 ...


不知你从哪里看来的?

一个386任务(TSS)可以有不同的页表,但不一定肯定就有。但线程!=TSS!全屏的dos窗口,运行v86任务,此时要构造TSS,并且有地址回绕的问题,因而页表与系统的内核态页表就会不同。至于内核态的线程,我想用同一个页表就足够了。

页表最大是4M,但系统并不需要同时使用4G的地址空间,所以使用时页表并没有那么大。
System Internals http://sys.xiloo.com
wilton
驱动牛犊
驱动牛犊
  • 注册日期2001-04-23
  • 最后登录2005-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-01-17 12:28
是4M的虚拟地址空间,但是不会映射到4M的物理内存。因为x86使用两级页表,最少使用4k,最多使用4M+4k。
另外,所有的Win32共用一个TSS。页表可以被交换到硬盘。
可以参考Intel 手册和《Undocumented NT》。
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-18 19:39
最多使用4M+4k。
另外,所有的Win32共用一个TSS。

最多应该是4M?
另外应该是在32平台下,每一个任务一个TSS。
一剑西来,天外飞仙
游客

返回顶部