A进程是无法访问B进程空间内的数据的?如何在ubuntu等linux电脑上安装Android应用
时间:2018-02-26 06:42:02
浏览:次
点击:次
作者:
来源:
立即下载
我的理解是,这些都是通过虚拟内存来控制的,A、B进程中的所有栈和堆都各自对应①段连续的虚拟地址。当CPU在用户态执行进程A的代码时,CPU是不能访问非A空间中的虚拟地址的。
但是CPU是怎么知道某个虚拟地址属不属于进程A呢?
每个进程都有自己的页表,两个进程的页表是完全独立的。页表可以理解为虚拟地址到物理地址的查找表。这个查找表是由内核为进程建立的,内核建立查找表时保证让同①个物理地址只能出现在①个进程的页表里(除非特别指定要共享内存)。
进程每次内存访问都会先去查找表里查出物理地址再访问。这个查找变换的过程是由CPU硬件强制自动完成的(paging unit)。
由于a进程使用的物理内存在b进程中查不到,所以B进程无法访问a的内存。
在 x⑧⑥ 上,操作系统可以为不同的进程建立不同的页表, 并把两个进程的虚地址空间映射到不同的物理地址空间。哪个进程被操作系统在①个 CPU 上调度执行,操作系统就把哪个进程对应的页表 load 给 CPU。CPU 通过虚地址访存时,根据当前的页表找到对应的物理地址。只要不同进程的页表中做好了隔离,CPU 这边就不会错误的访问到其它进程的内存。
下载genynotion,然后安装app最快,其他模拟器都不好用,当然有些应用不兼容
平均评分
0人
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
