关于隔离
2016-03-03 18:07
316 查看
让我们回到程序的运行本质上来。用户程序在运行时不希望介入到这些复杂的存储器管理过程中,作为普通的程序,它需要的是一个简单的执行环境,有一个单一的地址空间、有自己的CPU,好像整个程序占有整个计算机而不用关心其他的程序(当然程序间通信的部分除外,因为这是程序主动要求跟其它程序通信和联系)。
所谓的地址空间是个比较抽象的概念,你可以把它想象成一个很大的数组,每个数组的元素是一个字节,而这个数组大小由地址空间的地址长度决定,比如32bit的地址空间的大小为 2^32 = 4294967296 byte,即4GB,地址空间有效的地址是0 ~ 4294967295 , 用十六进制表示为 0x 0000 0000 ~ 0x ffffFFFF。
地址空间分两种:虚拟地址空间(Virtual Address Space)和物理地址空间(Physical Address Space)。
物理地址空间是实实在在存在的,存在于计算机中,而且对于每一台计算机来说只有唯一的一个,你可以把物理地址空间想象为物理内存,比如:你的计算机用的是Intel 的 Pentium4 的CPU,那么它是32bit的机器,即计算机地址线有32条(实际上是36条地址线,不过我们暂时认为它只是32条),那么物理地址空间就有4GB。 但是你的计算机上只装了 512MB的内存,那么其实物理地址的真正有效部分只有 0x 0000 0000 ~ 0x1FFFffff,其他部分都是无效的(实际上还有一些外部I/O设备映射到物理空间的,也是有效的,但是我们暂时无视其存在)。
虚拟地址空间是指虚拟的、人们想象出来的地址空间,其实他并不存在,每个进程都有自己独立的虚拟空间,而且每个进程只能访问自己的地址空间,这样就有效地做到了进程隔离。
所谓的地址空间是个比较抽象的概念,你可以把它想象成一个很大的数组,每个数组的元素是一个字节,而这个数组大小由地址空间的地址长度决定,比如32bit的地址空间的大小为 2^32 = 4294967296 byte,即4GB,地址空间有效的地址是0 ~ 4294967295 , 用十六进制表示为 0x 0000 0000 ~ 0x ffffFFFF。
地址空间分两种:虚拟地址空间(Virtual Address Space)和物理地址空间(Physical Address Space)。
物理地址空间是实实在在存在的,存在于计算机中,而且对于每一台计算机来说只有唯一的一个,你可以把物理地址空间想象为物理内存,比如:你的计算机用的是Intel 的 Pentium4 的CPU,那么它是32bit的机器,即计算机地址线有32条(实际上是36条地址线,不过我们暂时认为它只是32条),那么物理地址空间就有4GB。 但是你的计算机上只装了 512MB的内存,那么其实物理地址的真正有效部分只有 0x 0000 0000 ~ 0x1FFFffff,其他部分都是无效的(实际上还有一些外部I/O设备映射到物理空间的,也是有效的,但是我们暂时无视其存在)。
虚拟地址空间是指虚拟的、人们想象出来的地址空间,其实他并不存在,每个进程都有自己独立的虚拟空间,而且每个进程只能访问自己的地址空间,这样就有效地做到了进程隔离。
相关文章推荐
- 计算机网络——5.路由协议
- ios 单张图片上传(从相册或者相机)
- centos6 yum 安装nginx 不成功解决办法
- 操作过程中一些小的注意事项--------------运维日志28
- jsp内js片段压缩器
- DynamoRIO工作原理
- 十进制小数转化为二进制小数
- 关于tableviewCell 使用的心得
- avalon学习笔记一 列表及条件过滤
- java并发编程读书笔记(1)-- 对象的共享
- 内存不够怎么办?
- 隐马尔可夫模型(HMM)攻略
- Jackson转换JSON例子
- 设备驱动
- 事件穿透
- Android中的类装载器DexClassLoader
- 二叉搜索树(BST)递归与非递归的插入、删除、查找的实现
- 51nod--Dijkstra算法
- HDU 1181 变形课
- php依赖管理工具Composer的安装和使用