但是x86比较特殊,x86对于设备有独立的端口地址空间,CPU核需要引出额外的地址线来连接片内设备(和访问内存所用的地址线不同),访问设备寄存器时用特殊的in/out指令(汇编),而不是和访问内存用同样的指令...在x86平台上,硬盘是挂在IDE、SATA或SCSI总线上的设备,保存在硬盘上的程序是不能被CPU直接取指令执行的,操作系统在执行程序时会把它从硬盘拷贝到内存,这样CPU才能取指令执行,这个过程称为加载...程序加载到内存之后,成为操作系统调度执行的一个任务,就称为进程(Process)。进程和程序不是一一对应的。...操作系统和MMU是这样配合的:
1.操作系统在初始化或分配、释放内存时会执行一些指令在物理内存中填写页表,然后用指令
设置MMU,告诉MMU页表在物理内存中的什么位置。...我们在程序中使用的变量和函数都有各自的地址,程序被编译后,这些地址就成了指令中的地址,
指令中的地址被CPU解释执行,就成了CPU执行单元发出的内存地址,所以在启用MMU的情况下,程序中使用的地址都是虚拟地址