虚拟地址是什么?什么是虚拟地址空间?如何对其做定义?
常常接触计算机的人也可能会被一些计算机的相关定义搞得头寻目眩。但是理解这些定义却是对我们使用计算机有很大的帮助。那么下面创新互联建站小编就为大家介绍一下虚拟地址是什么?什么是虚拟地址空间?如何对其做定义?
为宜兴等地区用户提供了全套网页设计制作服务,及宜兴网站建设行业解决方案。主营业务为网站设计制作、做网站、宜兴网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!虚拟地址的定义虚拟地址又叫虚拟内存,虚拟内存是内存管理的一种方式, 它在磁盘上划分出一块空间由操作系统管理,当物理内存耗尽是充当物理内存来使用。它将多个物理内存碎片和部分磁盘空间重定义为连续的地址空间,以此让程序认为自己拥有连续可用的内存。当物理内存不足时,操作系统会将处于不活动状态的程序以及它们的数据全部交换到磁盘上来释放物理内存,以供其它程序使用。
虚拟地址空间的定义
虚拟地址空间(virtual address space)是2018年公布的计算机科学技术名词。
是由进程的虚地址构成的地址空间。
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中,这个沙盘就是虚拟地址空间(virtual address space)。虚拟地址空间由内核空间(kernel space)和用户模式空间(user mode space)两部分组成。
虚拟地址会通过页表(page table)映射到物理内存,页表由操作系统维护并被处理器引用,每个进程都有自己的页表。内核空间在页表中拥有较高特权级,因此用户态程序试图访问这些页是会导致一个页错误(page fault)。其中内核空间是持续存在的,并且在所有进程中都映射到同样的物理内存。与此相反,用户模式空间的映射随进程切换的发生而不断变化。
对虚拟地址空间的理解
1、创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟 进程地址空间。之所以是 4GB ,是因为在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,大值 0xFFFFFFFF 表示的即为 4GB 大小的容量。
2、每个进程只能访问自己虚拟地址空间中的数据,无法访问别的进程中的数据,通过这种方法实现了进程间的地址隔离。
3、4GB 的虚拟地址被分成了 4 部分: NULL 指针区、用户区、 64KB 禁入区、内核区。应用程序能使用的只是用户区而已,大约 2GB 左右 ( 大可以调整到 3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
4、目前PC上页面大小为4K,程序运行到哪页就为哪页分配内存,并建立虚拟地址空间页和刚刚建立的物理内存页间的映射。
5、一个PE是一些编译好的数据和指令的集合,也被分为很多页。4G的地址空间并非真正创建,只是创建虚拟地址空间到物理地址空间映射的页表。
6、PE文件中所有的段会一一映射到虚拟地址空间中相应的页。
7、当CPU访问某一个虚拟地址时,发现该地址并没有相关联的物理地址时,产生一个缺页错误,于是CPU将控制权交回OS,OS为该页面映射物理内存。
8、当CPU要访问的数据在内存中时,可以直接访问。
当CPU要访问的数据不再内存中,而位于页交换文件中,OS会在内存中找到一个闲置的页面,如果找不到闲置的页面,先释放一个已分配的页面。
9、页交换文件的左右时物理内存不够时,将部分数据从内存中移到页交换文件中,否则要释放物理内存,删除页面映射关系。
什么是虚拟地址空间?相信对于这个问题你已经有了自己的答案。这些都是我们在使用计算机时需要学习的进阶内容,了解这些可以帮助我们更好的使用计算机,做到更多事情。想要学习更多有关知识,欢迎长期关注创新互联!
网站名称:虚拟地址是什么?什么是虚拟地址空间?如何对其做定义?
网站网址:http://pwwzsj.com/article/chichc.html