如何管理代码存储器?

smw*_*dia 13 c c++ operating-system

在谈论进程的内存时,我听说过代码内存数据内存等问题.

而对于数据存储器,有两种主要的管理机制,堆栈和堆.

我现在想知道代码存储器是如何管理的?谁管理它?

如果我的陈述不那么清楚,请原谅我.

谢谢.

The*_*ice 17

如果您有兴趣了解有关流程的详细信息,我建议您阅读http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory(和其他与内存相关的文章)内存管理.

代码存储器=文本段

注意地址空间是4GB.当内核创建进程时,它会为其提供虚拟内存.下面是32位操作系统的示例.内核通过处理器的MMU管理哪些地址映射到实际RAM .因此,内核和MMU管理代码内存,就像它们管理进程的整个地址空间一样.

借用duartes.org http://static.duartes.org/img/blogPosts/linuxFlexibleAddressSpaceLayout.png

  • 布局通常由链接器而不是内核设置(和管理).内核只读取可执行映像中的信息并相应地设置内存映射.如果可执行文件如此指定(动态链接的可执行文件),则动态链接器将被映射,并处理很多事情.您可以将链接器视为操作系统的一部分,但您可以创建一个可以执行任何操作的自定义链接器, (2认同)