阅读:1127回复:3
分页表(PAGE TABLE)空间是如何分配的?
WINDOWS下,每打开一个线程,WINDOWS就要为他分配4M的分页表(PAGE TABLE)空间,这4M空间是不是NONPAGED的?(即不能被虚拟内存管理器转移到硬盘上)如果是的话,一台64M内存的机器,打开16个进程后,内存不是不够用了吗?
|
|
沙发#
发布于:2001-12-11 09:25
WINDOWS下,每打开一个线程,WINDOWS就要为他分配4M的分页表(PAGE TABLE)空间 ... 不知你从哪里看来的? 一个386任务(TSS)可以有不同的页表,但不一定肯定就有。但线程!=TSS!全屏的dos窗口,运行v86任务,此时要构造TSS,并且有地址回绕的问题,因而页表与系统的内核态页表就会不同。至于内核态的线程,我想用同一个页表就足够了。 页表最大是4M,但系统并不需要同时使用4G的地址空间,所以使用时页表并没有那么大。 |
|
|
板凳#
发布于:2002-01-17 12:28
是4M的虚拟地址空间,但是不会映射到4M的物理内存。因为x86使用两级页表,最少使用4k,最多使用4M+4k。
另外,所有的Win32共用一个TSS。页表可以被交换到硬盘。 可以参考Intel 手册和《Undocumented NT》。 |
|
地板#
发布于:2002-01-18 19:39
最多使用4M+4k。 最多应该是4M? 另外应该是在32平台下,每一个任务一个TSS。 |
|
|