如果用户进程直接操作物理地址会有以下的坏处:
1、 用户进程可以直接操作内核对应的内存,破坏内核运行。
2、 用户进程也会破坏其他进程的运行
CPU中寄存器中存储的是逻辑地址,需要进行映射才能转化为对应的物理地址,然后获取对应的内存。
通过引入逻辑地址,每个进程都拥有单独的逻辑地址范围。
当进程申请内存的时候,会为其分配逻辑地址和物理地址,并将逻辑地址和物理地址做一个映射。
不同进程的逻辑地址可以一样,但是其映射的物理地址是不一样的。
逻辑地址 分为 内核空间 和 用户空间。
内核空间 就是 操作系统内核使用的虚拟地址集合,对应的物理内存用来存放内核代码、内核数据等。
用户空间 就是 用户进程使用的虚拟地址集合,对应的物理内存用来存放进程对应代码和数据。
地址映射分为:
1、直接映射
直接映射的规则是死的,一个逻辑地址对应的物理地址是固定的。通过逻辑地址加或者减去一个数,就可以得到对应的物理地址。
2、动态映射
动态映射是动态的绑定,每个逻辑地址对应的物理地址是动态的,通过页表进行查询