1、地址空间
地址空间分为物理地址空间和逻辑地址空间。其中物理地址空间指硬件支持的地址空间,包括主存(内存条)和磁盘;逻辑地址空间指一个运行的程序所拥有的内存范围。某一个应用程序的逻辑地址空间最终都需要落实到物理地址空间上面去。
2、逻辑地址空间的生成
从一个C程序开始,C程序之中的函数,变量的名字对应了自己的地址,是一种逻辑地址;将C语言编译成汇编语言,汇编语言中依然使用变量和函数名等来进行编写;之后将汇编语言进行汇编形成.o程序,.o程序特点为吉他的起始地址都是从0开始的,将之前汇编程序的变量和函数符号名称转变为相应的连续逻辑地址空间;
之后将多个.o程序通过链接器linker进行链接编程单一的可执行程序.exe文件,.exe文件是一种存放在硬盘中的可以在内存中进行执行的程序。最终硬盘中的.exe文件通过loader载入内存中进行执行,相对于原始硬盘中的.exe文件,载入内存中的.exe文件的地址有一定的偏移量,有了这个偏移量,所有的.exe文件中的功能都能够对应找到相应的文件和数据。
3、逻辑地址如何对应到具体物理地址
当CPU要执行某条指令时,其ALU部件会发出请求指令(发送逻辑地址);之后CPU中的MMU部件会根据逻辑地址和物理地址的映射表查找到ALU发送来的逻辑地址对应的物理地址,若没有,则会转移到内存中继续查找物理地址,若找到了,则CPU的控制器会给主存发出请求,需要某物理地址的内容;
之后主存会将物理地址中的内容通过总线传递给CPU;最后CPU拿到指令内容,开始进行执行。OS在此过程中起到的作用为:在上述过程开始之前,OS需要将逻辑地址和物理地址的映射关系表建立完毕;同时确保每一个程序访问的地址空间是合法的,不能产生交叉干扰的情况。