关于隔离

来源:互联网 发布:auto.js 编辑:程序博客网 时间:2024/04/30 02:49
  •       让我们回到程序的运行本质上来。用户程序在运行时不希望介入到这些复杂的存储器管理过程中,作为普通的程序,它需要的是一个简单的执行环境,有一个单一的地址空间、有自己的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设备映射到物理空间的,也是有效的,但是我们暂时无视其存在)。

  •        虚拟地址空间是指虚拟的、人们想象出来的地址空间,其实他并不存在,每个进程都有自己独立的虚拟空间,而且每个进程只能访问自己的地址空间,这样就有效地做到了进程隔离。
0 0
原创粉丝点击