LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1315|回复: 0

在读<<undering the kernel of linux>>,关于Page Faul

[复制链接]
发表于 2003-5-28 17:09:48 | 显示全部楼层 |阅读模式
以下这段话的每个句子都看得懂,但是整个意思怎么也看不懂,麻烦哪们大侠解释一下:

Let us make a short digression to explain how stacks are mapped into memory regions. Each region that contains a stack expands toward lower addresses; its VM_GROWSDOWN flag is set,thus the value of its vm_end field remains fixed while the value of its vm_start field may be decreased. The region boundaries include, but do not delimit precisely, the current size of the User Mode stack. The reasons for the fuzz factor are:

• The region size is a multiple of 4 KB (it must include complete pages) while the stack size is arbitrary.
• Page frames assigned to a region are never released until the region is deleted; in particular, the value of the vm_start field of a region that includes a stack can only decrease; it can never increase. Even if the process executes a series of pop instructions, the region size remains unchanged.

It should now be clear how a process that has filled up the last page frame allocated to its stack may cause a "age fault" exception: the push refers to an address outside of the region (and to a nonexistent page frame). Notice that this kind of exception is not caused by a
programming error; it must thus be handled separately by the page fault handler.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表