知识积累->目标文件里有什么(1)

程序源代码被编译后主要分成两种段:程序指令和程序数据,代码属于程序指令,而数据段和.bss属于程序数据。

为什么程序指令和数据不混在在一起而是分开放?

1.因为程序被装载后,数据和指令分别被映射到两个虚存区域。由于数据区域对于进程来说是可读写的

指令区域对于进程来说是可读的。所以这两个虚存区域的权限可以分别被设置成可读写可只读,可以防止程序的指令被有意或无意地改写。

2.对于现在的CPU来说,有极为强大的缓存,由于缓存对于现在计算机中地位非常重要。程序必须尽量提高缓存的命中率,指令区和数据区的分离有利于提高程序的局部性。

现代CPU的缓存一般都被设计成数据缓存和指令缓存分离,所以指令和数据分开存放对CPU的缓存命中率提高有好处。

3.最重要的原因:当系统中运行着多个该程序的副本时,它们的指令都是一样的。内存中只需要保存一份改程序的指令部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章