码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟内存

时间:2018-06-26 22:36:52      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:并且   异常   处理   磁盘   组织   地址转换   进程   虚拟内存   连续   

在一个系统中,进程与其他进程是共享cpu和内存的。如果一个进程不小心写了另一个进程所使用的内存,那么可能会引起令人迷惑的错误。为了更加有效的管理内存并减少出错,现代系统提出了虚拟内存的概念。虚拟内存是硬件异常、硬件地址翻译、主存、磁盘和内核的完美交互,为每个进程提供了一个等同的私有的地址空间。

那么是怎么通过虚拟内存来进行内存管理的呢?总的来说就是一个地址的转换工作:将虚拟地址转换为物理地址。概念上而言,虚拟内存是被组织在磁盘上的N个连续的字节单元。为了更好的进行内存管理,将内存看成磁盘的一个缓存,将虚拟内存分割成块,每块大小相同,并且物理内存也进行相应的分割,每个小块成为一页,即虚拟页、物理页。同时提出了页表的概念来方便管理。页表存放在物理内存中,每个进程有单独的页表。如图索示,每个进程的页表位置可以有页表基址寄存器(PTBR)得到,由虚拟地址的虚拟页号可以得到相应页表条目(PTE),从而可以得到对应的物理页号,物理页号加上虚拟页偏移量就是所求的物理地址。当然,有可能引起缺页,此时会引发一个缺页异常。值得说明的是,页面命中完全是由硬件来处理的,缺页异常则要求硬件和内核协作完成。

 

虚拟内存

标签:并且   异常   处理   磁盘   组织   地址转换   进程   虚拟内存   连续   

原文地址:https://www.cnblogs.com/coderht/p/9231382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!