页面错误只属于分页内存模型吗?
如果两者都是,由于大多数计算机系统(如x86和Linux )使用分页内存模型而不是分段内存模型,为什么GCC C编译器有时会报告分段错误?
谢谢和问候!
发布于 2011-08-05 01:53:58
这两件事其实是很不一样的。分段错误意味着程序试图访问无效或非法的内存地址:例如,0,或大于任何有效指针的值。页面错误是当指针试图访问当前未映射到物理内存的地址空间页时,因此MMU需要从磁盘上抓取它,然后才能使用它。前者是非法的条件,程序通常会被中止;后者是完全正常的,程序甚至不会知道它。
“分段”与早期x86处理器使用的旧的“分段内存模型”完全无关;它是一种早期的使用,仅指一部分或部分内存。
发布于 2011-08-05 01:51:19
分割错误发生在不允许访问内存(不存在或被禁止)时。最常见的情况是,当您取消引用空变量或从数组的末尾运行时。访问映射但未加载的内存时会发生页错误。它们不是错误,并向操作系统发出信号,表明它应该将适当的页面加载到内存中。
https://stackoverflow.com/questions/6950549
复制相似问题