堆栈、BSS段、代码段、数据段、RO、RW、ZI等概念区分
堆栈、BSS段、代码段、数据段、RO、RW、ZI等概念区分 一 预备知识 二 程序文件中的分区 三 程序进程中的分区 四 总结 一 预备知识 在区分一个程序的堆栈、bss、text段、RO、RW、ZI等概念时,首先区分一下程序进程和程序文件,然后了解一下哈弗结构和冯诺依曼结构。 程序进程就是程序运行时的程序,程序文件是编译后生成的可执行文件,比如.bin文件等,这两个概念很好区分,特别强调一下,分开表达主要是怕读者在阅读过程中混淆了。 哈佛结构和冯诺依曼结构的主要区别就是 处理器能不能实现取指令和取数据的并发进行 。嵌入式芯片中主要是哈佛结构,PC机上是冯诺依曼结构。 经典的哈佛结构: 程序存储器和数据存储器是各自独立的存储器。处理器应该有两套总线,一套是程序存储器的数据和地址总线,一套是数据存储器的数据和地址总线。取指令和取数据能并发进行。51的程序进程的逻辑代码段放在ROM中,而变量部分则放在RAM中,取ROM中的指令和RAM中的变量是两套总线。 改进型哈佛结构: 程序存储器和数据存储器是各自独立的存储器。处理器只有一套总线,分时访问程序存储器和数据存储器,但是在处理器中有icache和dcache将程序和数据分开,所以处理器仍然可以并步执行取指令和取数据。从ARM9开始以后所有的ARM处理器内核都是改进型的哈佛结构。ARM的逻辑代码和变量都是存放在RAM中的,但是