日志档案

发表于 2007-10-31 23:46:33

0

标签: 无标签

Linux之越界访问

页式存储管理机制通过页面目录和页面表将每个线性地址转换成物理地址。如果在这个过程中遇到某种障碍而使得CPU无法最终访问到相应的物理内存单元,影射便失败了,而当前的指令也就不能执行完成。此时CPU会产生一次页面出错异常(缺页中断),进而执行预定的页面异常处理程序,使应用程序得以从因映射失败而暂停的指令处开始恢复执行,或进行一些善后处理。

导致页面中断的一种情况就是用户程序访问了该进程虚存空间的空洞。一个任务的虚存空间的空洞可能有两种情况:其一是堆栈空间之下的大空洞,它代表着供动态分配而仍未分配出去的空间;其二是各虚存区域之间的空洞,它们的形成可能是因为该空洞处的映射已被取消,或者是在建立映射时跳过了这块空间。

如果是第二种情况,就对当前进程的task_struct结构内的一些成分进行一些设置后,就向该进程发出一个强制的“信号”SIGSEGV。剩下的事就是中断/异常返回前的信号的处理了。

系统分类: 嵌入式   |   用户分类: 无分类   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(246)    回复(0)  

投一票您将和博主都有获奖机会!