虚拟地址 物理地址还可以这样理解

来源:互联网 发布:linux canopen协议栈 编辑:程序博客网 时间:2024/05/19 16:34

    名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。从这个角度将,虚拟技术就是在硬件和操作系统之间增加了一层虚拟层,使得一台计算机上可以同时运行多个操作系统。

    计算机发展之初的程序是直接存放在内存中的,但这样存放有很多弊端:

        1.地址空间不隔离。物理内存就那么大,程序按序存放在物理内存中。这就像是很大房子,里面没有墙隔开,大家都按序住着。没有隔离感,没有安全感。

        2.内存使用效率低。因为程序是按照整体存放的,整个程序输入输出难免会降低效率。

        3.程序运行的地址不确定。程序输入输出是按序的,不清楚自己装入的时候里面会是什么排序。

   解决这个问题的办法就是:增加中间层,即使用一种间接的地址访问方法。具体解法是:我们把程序给出的地址看作是一种虚拟地址,然后通过某种映射的方法,将这个虚拟地址转换成物理地址。

   虚拟空间是指虚拟的、人们想象出来的地址空间,其实它并不存在,每个进程都有自己独立的虚拟地址空间,而且每个进程只能访问自己的地址空间,这样就有效的进行了隔离。(解决了第一个问题)

   刚开始人们采用分段的思想,按程序内容,分成段,按段将虚拟空间映射到某个物理空间。(解决了第三个问题)

   按段将程序装入内存,粒度太大,不能提高效率,就发明了粒度更小的方法,分页。分页的基本方法就是把地址空间人为地等分成页,具体一页有多大由硬件或者操作系统决定。根据程序局部行原理,程序的效率就提高了。(解决了第二个问题)

    具体执行:cpu->Virtual Address--->(MMU)--->Physical Address--->Physical Memory.

PS:

1.

如果你的计算机用的是Intel的Pentium 4 的处理器,那么它是32 bits 的机器,即计算机地址线有32条,物理空间有4GB(实际上是36条地址线)。但你的计算机上只装了512MB的内存,那么其物理地址的真正有效部分只有0x00000000~0x1FFFFFFF,其他部分是无效的。

2.

虚拟内存计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换


0 0
原创粉丝点击