虚拟存储技术

网工笔记--虚拟存储技术网工笔记 2008-04-03 09:18:19 阅读20 评论0 字号:

2005年考题

虚拟存储管理系统的基础是程序的 (7) 理论,这个理论的基本含义是指程序执行时往往会不均匀地访问主存储器单元。根据这个理论,Denning提出了工作集理论。工作集是进程运行时被频繁地访问的页面集合。在进程运行时,如果它的工作集页面都在 (8) 内,能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。
(7) A.全局性
    B.局部性
    C.时间全局性
    D.空间全局性
(8) A.主存储器
    B.虚拟存储器
    C.辅助存储器
    D.优盘

解析:
虚拟存储的定义可以从两个方面来理解:从专业角度看,虚拟存储实际上是逻辑存储,是一种智能、有效地管理存储数据的方式;从用户角度看,虚拟存储将使用户使用存储空间,而不是使用物理存储硬件(磁盘、磁带);管理存储空间,而不是管理物理存储硬件。
虚拟存储管理系统的基础是程序的局部性理论。该理论的基本含义指程序执行时,往往会不均匀地访问存储器,也就是说,某些存储空间可能被经常访问,而有的可能访问量较少。
根据这个理论,Denning提出了工作集理论。工作集是进程运行时被频繁地访问的页面集合。在进程运行时,如果它的工作集页面都在主存储器内,就能够使该进程有效地运行,否则会出现频繁的页面调入/调出现象。

下面的内容转自:cisco技术网

 

虚拟存储器是根据程序的逻辑地址转换来的,也称线性地址空间。一般每个进程,甚至每个段都有一个,以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像我们随身记录电话的小纸片,当要查一个电话时,我们先看小纸片。有,我们可以直接打电话。如果没有,我们再回家查详细的电话号码簿(页表),再打电话。

 

 

名称解释:
TLB:Translation Lookaside Buffer.

根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内存地址,而CPU寻址时会优先在TLB中进行寻址。处理器的性能就和寻址的命中率有很大的关系。

映射机制必须使一个程序能断言某个地址在其自己的进程空间或地址空间内,并且能够高效的将其转换为真实的物理地址以访问内存。一个方法是使用一个含有整个空间内所有页的入口(entry)的表(即页表),每个入口包含这个页的正确物理地址。这很明显是个相当大的数据结构,因而不得不存放于主存之中。

由于CPU首先接到的是由程序传来的虚拟内存地址,所以CPU必须先到物理内存中取页表,然后对应程序传来的虚拟页面号,在表里找到对应的物理页面号,最后才能访问实际的物理内存地址,也就是说整个过程中CPU必须访问两次物理内存(实际上访问的次数更多)。因此,为了减少CPU访问物理内存的次数,引入TLB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 虚拟存储技术主要采用以下两种策略: 1.页面置换策略:当物理内存不足时,需要将部分页面置换出去,以腾出空间给新的页面使用。页面置换策略有多种,例如先进先出(FIFO)、最近最少使用(LRU)、最少使用(LFU)等。 2.页面调度策略:当一个进程需要访问一个不在物理内存中的页面时,需要将该页面从磁盘读入到物理内存中。页面调度策略主要是根据页面的访问模式和访问频率来选择哪些页面需要调入物理内存中。一般的页面调度策略有随机置换、先进先出、最近最少使用、最少使用等。 ### 回答2: 虚拟存储技术主要采用了两种策略:页面置换策略和页面调度策略。 页面置换策略是虚拟存储技术中的一项关键策略,它用于在系统的物理内存中找到适当的页面来替换到磁盘中,以便为新的页面腾出空间。常见的页面置换算法包括最佳置换算法、先进先出算法、最近最少使用算法和时钟算法等。这些算法通过评估页面的重要性、访问模式和时间等因素,以确定需要置换的页面。 页面调度策略是指在虚拟存储系统中,将磁盘上的页面调入物理内存的策略。根据不同的需求和算法设计,常见的页面调度策略有按需调度、预调度和预先分页调度等。按需调度是在需要访问某个页面时才进行页面调度,避免过度的页面调度开销。而预调度则是在预测需求的基础上提前将磁盘上的页面调入物理内存,以减少访问延迟。预先分页调度则是将磁盘上的相关页面一并调入物理内存,以提高程序的运行效率。 虚拟存储技术的主要目的是提供更大的可用内存空间,使得运行大型程序和处理大型数据集变得可能。通过合理的页面置换策略和页面调度策略,可以确保系统能够高效地管理内存资源,提高系统的整体性能和响应能力。 ### 回答3: 虚拟存储技术主要采用了分页和分段的策略。 在分页策略中,计算机将物理内存划分为固定大小的页框,同时,将进程的地址空间划分为相同大小的页。当进程需要访问某个地址时,操作系统通过页表将逻辑地址映射到物理地址,然后将所需的页面调入物理内存。如果物理内存空间不足,操作系统会使用页面置换算法将不常用的页面从内存交换到磁盘上,以释放出空间。 分段策略中,进程的地址空间被划分为多个逻辑段,每个段具有不同的大小和特定的用途,比如代码段、数据段和堆栈段。每个段被划分为若干个大小相等的块,称为页或段页。当进程需要访问某个段时,操作系统将该段调入内存,并将逻辑地址映射到物理地址。如果内存空间不足,操作系统会使用段页置换算法将不常用的段页换出到磁盘上。 虚拟存储技术的主要目的是扩大可用的地址空间,使得进程能够运行更大的程序。通过分页和分段的策略,操作系统能够根据需要将程序的一部分加载到内存中,而不是将整个程序都加载进内存。这样可以节省内存空间,提高内存利用率,并提供更好的响应速度。另外,虚拟存储技术还可以实现进程间的隔离和保护,确保每个进程都拥有独立的地址空间。总之,虚拟存储技术是现代操作系统中非常重要的一项技术,为多任务处理和大型程序运行提供了支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值