目标文件中有很多段,根据其性质进行分类可分为两类,一类是程序段,代码段即属于程序段;另一类是数据段,.bss段和.data 段均属于数据段。这样划分的原因如下:
1.可以防止程序的指令被有意或无意的改写:
程序段中的指令通常都是不可写的,而数据段中的信息通常是可读写的。因此,将数据与指令分别映射到两个虚拟区域,并将这两个区域的权限分别设置为可读和读写,能够有效的防止程序指令被破坏
2.可以增加CPU的缓存命中率
指令区和数据区的分离有利于提高程序的局性,现代CPU的缓存一般被设计为数据缓存与指令缓存分离。以配合提高缓存命中率
3. 当系统中运行着某个程序的多个副本时,其指令都一样,所以内存只须保存一份该程序的指令部分(共享指令)
对于运行同一个程序的多个进程,将共享该程序的指令区域与只读数据,没有进程的数据区域将是进程的私有信息。在大部分程序中,指令区域占程序中很大的比例,因此,这项策略将节省大量的空间。该原因也是数据与指令分离的主要原因