文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» 存储备份 » 虚拟存储技术原理       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] 虚拟存储技术原理  ( 查看:1288  回复:6 )   
 
朱俊飞
助理工程师  点击可查看详细



帖子 207
精华 0
无忧币 1266
积分 1164
阅读权限 40
注册日期 2006-3-9
最后登录 2007-10-30 离线

[查看资料]  [发短消息]  [Blog
[个人主页]         
发表于:2006-8-8 20:21   标题:虚拟存储技术原理
上一帖 |
虚拟存储器是根据程序的逻辑地址转换来的,也称线性地址空间。一般每个进程,甚至每个段都有一个,以32位为例,则每个最大可达4G。

而主存目前一般为百M。因此程序中所指的存储单元并不能都放到主存中,也就是并不是每个程序所用的存储单元,都有具体的物理的存储器单元与之对应。

但 由于程序的两个局部性原理,在一个时刻,程序只在一个比较小的范围内运行。所以我们把程序可能用到的整个存储空间分成一个个相同大小的页(按页管理硬件上容易实现),只把其中的一些页放在主存中,而其它的页则等需要时再建,或放在辅存(磁盘)中。同时建立一个页表,对应于每一页,如果该页在主存中,则页表记录它在主存中的地址;如果不在主存中,则在页表上作不在主存的标记。

这样,当程序需要调用某个存储单元的内容时,先根据它的线性地址,算出其所在的页。查页表,看是不是在主存中?如果在,则直接存取。如果查到页表上是不在的标记,那就是一个page fault。要把主存中的某一页(LRU策略)换到磁盘上,把要访问的那个单元所在的页调入主存,再进行存取。

就象一个预计有一万学生的学校,理论上每个学生都应有一个位子上课(一万个虚拟位子),而学校只有一千个(物理)位子。但实际上,学校也不会一万个人同时上课,只要让上课的同学有位子(在主存中),而其它同学只要留下联系方法能找到就好。为了降低管理的复杂性,我们采用按学号分班(页)管理。每个班要么一起上课(主存),要么一起呆在寝室(磁盘)。而在学校保留一个动态表(页表)表明每个班在哪儿(物理地址)上课,或者没上课(不在主存)。现在假设我们想按学号找一个同学,而且是女同学,只能在教室说话,呵呵。那么:

先算出来是哪个班的,查动态表,看该班是否在教室。在,直接按位置找到(hit);不在(page fault),要先找个不上课的班赶回寝室,把要找女生所在的班调到教室,再按位置找那个同学。

动态表(页表)的大小=表项数*每个表项所需的位数。

表项数=虚拟班数=虚拟人数(虚拟地址空间)/每班人数(每页大小)

每个表项的位数=Log(教室数)+适当控制位数

教室数=实际可以上课的人数(物理地址空间)/每班人数(每页大小)


 



虚拟地址换算:


TLB miss:

4G(32-bit)的存储空间,如果按4K分页,则可分1M页。每个页表项为4B,则一个页表大小为4MB。由于页表太大,只能放在主存中。这样每次读内存都要读主存,大大影响读写速度。而同样基于局部性原理,整个页表在某一时刻,所用的也仅仅几页而已。所以我们把某段时间经常用的几个页表项,即常用的虚拟页号和其对应的物理页地址,存在Cache中,即TLB。

这样,当程序需要调用某个存储单元的内容时,先根据它的线性地址,算出其所在的页。先查TLB(比较虚拟页号),如果有相同的虚拟页号,则就可以马上知道其所在的物理地址,根据物理地址进行存取。

如果没有相同的虚拟页号,则说明该页没有记录在TLB中,那再去查页表,按page fault中所说的进行。

TLB像我们随身记录电话的小纸片,当要查一个电话时,我们先看小纸片。有,我们可以直接打电话。如果没有,我们再回家查详细的电话号码簿(页表),再打电话。

 
2006-8-8 20:211楼
[ 顶部 ]
 
hexiao
助理工程师  点击可查看详细



诚信兄弟  
帖子 534
精华 0
无忧币 2090
积分 1752
阅读权限 40
来自 (保密)
注册日期 2006-8-8
最后登录 2008-1-8 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2006-8-18 19:40 
顶一下
2006-8-18 19:402楼
[ 顶部 ]
 
t008caimiao
新新人类  点击可查看详细


帖子 132
精华 0
无忧币 48
积分 154
阅读权限 20
来自 (保密)
注册日期 2006-12-1
最后登录 2008-6-30 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2006-12-3 03:47 
顶 下啦
2006-12-3 03:473楼
[ 顶部 ]
 
stvlzqxhc
新新人类  点击可查看详细



帖子 105
精华 0
无忧币 25
积分 115
阅读权限 20
注册日期 2006-10-4
最后登录 2008-6-26 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2006-12-3 22:03 
ding
2006-12-3 22:034楼
[ 顶部 ]
 
xiangganggan
新新人类  点击可查看详细



帖子 98
精华 0
无忧币 37
积分 98
阅读权限 20
注册日期 2007-4-12
最后登录 2007-11-4 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-4-16 18:08 
不太懂



网络虽虚拟,技术无边界,来看看大家“真面目”!
2007-4-16 18:085楼
[ 顶部 ]
 
wdg0802
助理工程师  点击可查看详细


十二生肖之狗   双鱼座   行业勋章   技术勋章   诚信兄弟  
帖子 1019
精华 0
无忧币 811
积分 1035
阅读权限 40
注册日期 2007-3-22
最后登录 2008-8-15 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2007-4-17 01:56 
进步了不少



网络虽虚拟,技术无边界,来看看大家“真面目”!
2007-4-17 01:566楼
[ 顶部 ]
 
manchester
新新人类  点击可查看详细



帖子 21
精华 0
无忧币 8
积分 20
阅读权限 20
注册日期 2007-4-11
最后登录 2008-9-1 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-4-18 15:45 
studing



网络虽虚拟,技术无边界,来看看大家“真面目”!
2007-4-18 15:457楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号