3.7 虚拟存储器

主存和联机工作的辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作,对应用程序员来说,虚拟存储器是透明的。

虚拟存储器将主存或辅存的地址空间同一编址,形成一个庞大的地址空间,不必在乎实际的主存容量和程序在主存中实际的位置

用户编程允许涉及的地址称为虚地址逻辑地址,虚地址对应的存储空间称为虚拟空间程序空间。实际的主存单元地址称为实地址物理地址,实地址对应的是主存地址空间,也称实地址空间。虚地址比实地址大的多。

CPU使用虚地址时,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址对应的存储单元内容是否已装入主存。

实地址=主存页号+页内字地址

虚地址=虚存页号+页内字地址

页式虚拟存储器

以页为基本单位的虚拟存储器称为页式虚拟存储器。虚拟空间与主存空间都被划分成同样大小的页,主存的页被称为实页,虚存的页被称为虚页。虚拟地址分为两个字段:虚页号和页内地址。虚地址到实地址的变化由页表来实现。页表一般长久保留在内存中。

页表基址寄存器存放当前运行程序的页表的起始地址,它和虚页号拼接成页表项地址,每个页表项纪录与某个1虚页对应的虚页号,实页号和装入位等信息。装入位为“1”,则表示该页面已在主存中,将对应的实页号和虚地址中的页内地址拼接,得到完整的实地址;装入位为“0”,表示该页面不在主存中,此时要启动I/O系统,把该页从辅存调入主存后再供CPU使用。

段式虚拟存储器

段式虚拟存储器中的段是按程序的逻辑结构划分,各个段的长度因程序而定。把虚地址分为两部分:段号和段内地址。由于段的长度可变,所以段表中要给出各段的起始地址与段的长度,如下图的逻辑

段页式虚拟存储器

每一个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。以页为基本的传送单位。

快表(TLB)

根据程序执行的局部性原理,将经常访问的某些页对应的页项放入高速缓冲器组成快表,相应的把存放在主存中的页表称为慢表(Page)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值