批量替换
多进程读取同一个地址内容,内容为什么不一样?
地址没变 说明这里的不是物理地址,是虚拟地址(线性地址,逻辑地址)。
进程认为自己独占资源。
地址空间本质是内核的一种数据结构。mm_struct结构体描述。
一共有2^32个地址。
结构体内进行区域划分。
虚拟地址空间,每一个都是虚拟地址。
malloc new本质是扩大栈区堆区地址空间。
虚拟地址和物理地址通过页表进行映射。
每个进程有自己的进程地址空间。自己的页表。
每个进程以为自己有4GB地址空间。
为什么存在地址空间?
页表作用不只是映射,还会拦截非法访问。
父进程创建子进程 会对父进程进行拷贝,进程具有独立性,一个进程对被共享的数据进行修改,不能影响这个数据在其他进程中的内容,所以子进程对数据进行修改后,会存储在一个新的物理内存中。
写时拷贝:任何一方尝试写入,操作系统先进行数据拷贝,更改页表映射,然后再让进程进行修改。
可执行程序有自己的虚拟地址。
cpu读进来的都是指令,指令内部就有虚拟地址。