刚才看了一下这一段的上下文,写的明显有错误。
这一部分写的是栈(stack),这一节的标题是内核态栈。作者想表达的意思是内核态栈对系统内存的影响很大,会占用宝贵的内核态空间。但是表达的不太好,而且不知道为什么会算出2048个线程会用1GB的分页内存空间,360MB的物理内存。两个数字都不对啊。
按每个线程1MB用户态栈算,2048个线程会用2*1024*1MB=2GB;内核态栈即使不考虑分页与否,那么占用的物理内存即使按多算,按16KB(12KB加上PTE/PDE)算,那么只是:
16*210*2*210 = 32*220 = 32 MB
也就是32MB。
查了一下勘误表:
http://technet.microsoft.com/en-us/sysinternals/bb963901.aspx
还没有加入这个错误,所以LZ可以把这个问题报告给作者。我拿到书后就看了这一节的下一节,DPC Stack,也发现了一个错误,栈这一部分是Alex写的,看来年轻人还是需要时间走向成熟。
事实上,内核态的栈大小,还和CPU架构有关,这部分也没有提,完全就是当做x86的情况来写的...