加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

内核可以在Linux中使用虚拟内存

发布时间:2020-12-13 22:51:08 所属栏目:Linux 来源:网络整理
导读:参见英文答案 What can cause segmentation faults in C++? [closed]????????????????????????????????????9个 我的问题是linux内核是否可以使用虚拟内存,还是总是使用固定内存?另一个问题是,如果由于某些软错误,内核内存已损坏,会发生什么呢? Linux有没有
参见英文答案 > What can cause segmentation faults in C++? [closed]????????????????????????????????????9个
我的问题是linux内核是否可以使用虚拟内存,还是总是使用固定内存?另一个问题是,如果由于某些软错误,内核内存已损坏,会发生什么呢? Linux有没有任何机制来保护自己免受此类错误的侵害?

解决方法

内核使用虚拟地址.分配的内存,函数指针等…都是虚拟地址.您只能在与某些设备通话或执行某种DMA时操纵物理地址.

“Linux”或“Linux内核”在许多架构上运行.这些架构中的一些可以具有存储器错误检测或校正硬件.我不知道这些设备是如何支持的.
但在大多数架构中,没有针对内存损坏的保护.

但你说的是软错误.在随机地址中没有内核代码写入的保护.有些函数会测试它们捕获bug的参数,但如果你在内核模式下溢出缓冲区或堆栈,那么就会发生各种有趣的事情.

Const数据和代码通常放在只读页面中,以便可以检测到写入.
因此内核的内存保护仅限于:

>在某些地方进行参数检查.
>某些结构中的神奇价值.
>只读代码和const部分的属性.

只读属性是可能的,因为内核使用虚拟内存

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读