上面是32位系统下的进程结构图。
那么程序为什么要分段呐?
程序分段的好处
1.当程序被装载后,数据和指令分别被映射到两个虚存区域,由于数据区域对进程来是可读写的,指令区域对进程来说是只读的,所以这两个虚存区的权限可以被设置为可读写和只读,防止程序的指令被恶意改写。
2.现代CPU的缓存一般被设计成数据缓存和指令缓存分离,程序和指令的分离有助于提高缓存命中率
3.当程序中运行着多个副本时,它们的指令都是一样的,所以内存中只需要保存一份改程序的指令部分,这样把数据和指令分开的话,可以共享指令,减少内存占用
4.我们在运行的时候,当把指令存在一起时,只需要通过PC++就可以找到下一条指令的地址,从而减少了一次取地址的次数。