flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1306回复:8

请问斑竹和PJF一个问题--关于page table

楼主#
更多 发布于:2002-12-27 12:35
在虚拟地址向物理地址转换时,需要用到page directory和page table,每一个进程都有自己的,它们占用内存空间最大应该是4M+4K,而NT在物理内存中应该怎样维护它们呢?
一般是在有个最大4M空间物理内存来维护当前进程的,也就是如果线程调度时,如果不是同一进程,那么就要把memory context也切换了,也就是把另一个进程的page directory和page table装载到同一物理内存中。
请问是否如此,那么这样调度时,是否会影响效率?
如果不这样,在物理内存中对每个进程维护page directory和page table,显然又是不可能的!

最新喜欢:

zackaryzackar...
一剑西来,天外飞仙
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-27 14:42
在虚拟地址向物理地址转换时,需要用到page directory和page table,每一个进程都有自己的,
----------------------------------------------------------------
只是有自己的page directory,而page table大部分不用换,使得页目录中的很多项是一样的


它们占用内存空间最大应该是4M+4K,而NT在物理内存中应该怎样维护它们呢?
-----------------------------------------------------------------
页表本身是分页的,你找个进程的页目录看看,映射了的页表只占比较少的部分。顺便一提,在NT中就算全映射了,也只占4M,其中原因自己研究一下吧,不多说了,呵呵


一般是在有个最大4M空间物理内存来维护当前进程的,也就是如果线程调度时,如果不是同一进程,那么就要把memory context也切换了,也就是把另一个进程的page directory和page table装载到同一物理内存中。
请问是否如此,那么这样调度时,是否会影响效率?
----------------------------------------------------------------
一般切换时只改页目录指针reg和不多的页表。
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-27 15:41
呵呵,多谢多谢!
我还想问下,最多为4M,是否是因为全部映射时那么所有内存都被映射了,最后一项就不用了。所以是PD的4k加上PT的(4M-4K)。
一剑西来,天外飞仙
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-12-27 15:57
呵呵,多谢多谢!
我还想问下,最多为4M,是否是因为全部映射时那么所有内存都被映射了,最后一项就不用了。所以是PD的4k加上PT的(4M-4K)。
 

非也,有一个页标与页目录重合了
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-12-27 16:01
哦,懂了!而且这4M空间是非分页空间吧!
一剑西来,天外飞仙
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-12-27 16:13
哦,懂了!而且这4M空间是非分页空间吧!


呵呵,要仔细看上面了
这4M空间可以换出去的,并且大部分没映射(页目录里大片零,并且有些用的少的页表也被换出了)
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-27 16:18
[quote]哦,懂了!而且这4M空间是非分页空间吧!


呵呵,要仔细看上面了
这4M空间可以换出去的,并且大部分没映射(页目录里大片零,并且有些用的少的页表也被换出了) [/quote]
这个我就有点奇怪了,我认为那4M有部分内容是要被重写,但不能被swap,因为我先看到linux中似乎说了这4M是不能被切换的!再追踪过来的。
而且于理不通啊,线程一调度,就可能引发memory context switch,那么它如果被swap,会page fault的,可能有点说不通吧?
一剑西来,天外飞仙
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-12-27 16:32
这个我就有点奇怪了,我认为那4M有部分内容是要被重写,但不能被swap,因为我先看到linux中似乎说了这4M是不能被切换的!再追踪过来的。
而且于理不通啊,线程一调度,就可能引发memory context switch,那么它如果被swap,会page fault的,可能有点说不通吧?

NT与Linux的内存映射方式差别挺大的,Linux的内核空间是物理地址的线性映射,有其方便性,而NT很灵活,各有好处。都没你说得那么严重。
不必担心,呵呵,对NT,页目录是不会被换出的,内核空间中关键代码与数据部分(比如集成子系统)每个进程都会用到,根本不可能被换出,一点都不必改。
flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-27 16:37
呵呵,太感谢了,每次你一出马,我就长进不少!
非常感谢!改天还要问你个win9x的问题,我还没有想明白.
一剑西来,天外飞仙
游客

返回顶部