+ -
当前位置:首页 → 问答吧 → 问一个内存管理的问题。

问一个内存管理的问题。

时间:2010-09-06

来源:互联网

大家好,我想问大家一个内存管理中关于堆管理的问题。
假设用户程序通过 int *p=malloc(sizeof(int)*10)来分配了40个字节的堆空间,然后调用p[11]来访问,一般会造成越界访问段错误的。
我想问问,这个在内核中如何实现的?
我的疑惑是:页表映射是以页为基础的,所以,如果这10个字节在某一页的话,那整个pte就指向这一页,页表管理的粒度也只能到页上,怎么控制到字节上呢?还是有其他控制方法?
谢谢。

作者: wzhongyuan   发布时间: 2010-09-06

用户空间的虚拟地址用vm_struct来管理,这里面有长度限制。

作者: jxyushy   发布时间: 2010-09-06

回复 jxyushy


    但是在实际运行过程中,是如何起作用的呢?实际运行还是依靠硬件的保护机制的呀

作者: wzhongyuan   发布时间: 2010-09-06

没法控制到字节. p[11]如果刚好跨过了已分配的page的边缘, 那就段错误了. 否则就没事.

作者: kouu   发布时间: 2010-09-06

热门下载

更多