linux是如何保护内存的?

Posted

技术标签:

【中文标题】linux是如何保护内存的?【英文标题】:How does linux protect memory? 【发布时间】:2012-04-28 07:31:09 【问题描述】:

我感兴趣的是从汇编的角度来看 linux 如何在保护模式下运行。在将 cpu 置于 i386:0x86_64 机器的保护模式时,使用了哪些寄存器和中断?当我查看诸如 mmap 和 mprotect 之类的函数的 c 源时,我了解内存管理是如何工作的,但是是什么让我无法接管汇编?我在哪里可以获得更多信息?

【问题讨论】:

【参考方案1】:

我相信您正在寻找 arch/x86/mm/ -- arch/x86/mm/init.c 为正确的架构(ia32 或 AMD64)设置页表并考虑可用的处理器功能(PSE、PGE 等)。

【讨论】:

【参考方案2】:

需要强调的是:这是处理器的功能。 Linux 告诉处理器要保护什么,而处理器会这样做。

AFA 系统调用接口,看看http://stromberg.dnsalias.org/~strombrg/pbmonherc.html 在C 库有mmap 之前,但在Linux 内核有mmap 之后。请参阅文件 mmap.c。

【讨论】:

以上是关于linux是如何保护内存的?的主要内容,如果未能解决你的问题,请参考以下文章

linux c 段错误如何定位

如何在 Linux 上超过 64 位 LuaJIT 的 1gb 内存限制?

如何在 Go 中使用 CGroup 实现进程内存控制

Linux从头学08:Linux 是如何保护内核代码的?从实模式到保护模式

如何看待Linux操作系统的用户空间和内核空间

如何保护你的linux操作系统