第59页 源代码编译后程序数据和程序指令分开存放原来有这么多好处
ziyoudefeng (娜娜,有你生活真幸福~~)
读过 程序员的自我修养
- 章节名:源代码编译后程序数据和程序指令分开存放原来有这么多好处
- 页码:第59页
程序源代码被编译以后主要分成两种段:程序指令和程序数据。代码段属于程序指令,而数据段和.bss段属于程序数据。 引自 源代码编译后程序数据和程序指令分开存放原来有这么多好处 这个好处是大大的:
1:当程序被装载后,数据和指令分别被映射到两个虚存区域。由于数据区域对于进程来说是可读写的,而指令区域对于进程来说是只读的,所以这两个虚存区域的权限可以被分别设置成可读写和只读。这样可以防止程序的指令被有意或无意地改写。 2:对于现代的CPU来说,它们有着极为强大的缓存体系。由于缓存在现代的计算机中地位非常重要,所以程序必须尽量提高缓存的命中率。指令区和数据区的分离有利于提高程序的局部性。现代CPU的缓存一般都被设计成数据缓存和指令缓存分离,所以程序的指令和数据被分开存放对CPU的缓存命中率提高有好处。 3:最重要的原因。 当系统中运行着多个该程序的副本时,它们的指令都是一样的,内存中只需保存一份该程序的指令部分。 引自 源代码编译后程序数据和程序指令分开存放原来有这么多好处
143人阅读
ziyoudefeng对本书的所有笔记 · · · · · ·
-
第51页 链接过程包括。。。
链接过程主要包括了地址和空间分配(Address and Storage)、符号决议(Symbol Resolution)、和...
-
第56页 ELF文件类型分类真的是四种吗?
P56把ELF文件类型分为四类: Relocatable File、Executable File、Shared Object File、Core ...
-
第59页 源代码编译后程序数据和程序指令分开存放原来有这么多好处
-
第63页 SImpleSection.o中各个段地址怎么不连续,求解答。
P62给的作者电脑上段的结果如下: $ objdump -h SimpleSection.o i4@i4:~/文档/proger$ objdu...
-
第68页 还可以自己定义把代码放到哪个段~霸气
GCC提供了一个扩展机制,使得程序员可以指定变量所处的段。 __attribute__((section("FOO")))...
> 查看全部29篇
说明 · · · · · ·
表示其中内容是对原文的摘抄