精华内容
下载资源
问答
  • 二实验目的 在计算机系统中为了提高主存利用率往往把辅助存储器如磁盘作为主存储器的扩充使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间用这种办法扩充的主存储器称为虚拟存储器通过本实验帮助...
  • 课后习题---虚拟存储器

    千次阅读 2021-01-26 21:47:21
    Part A 常规存储器管理方式具有哪两大特征?它对系统性能有何影响? 一次性:作业必须一次性地全部装入内存后方能运行 驻留性:作业被装入内存后,整个作业...虚拟存储器有哪些特征?其中最本质的特征是什么? 多次性:

    Part A
    常规存储器管理方式具有哪两大特征?它对系统性能有何影响?

    一次性:作业必须一次性地全部装入内存后方能运行
    驻留性:作业被装入内存后,整个作业都一直驻留在内存中,直到作业运行结束
    对于许多程序运行中不用或暂时不用的程序占据了大量的内存空间,而一些需要运行的作业又无法装入导致内存资源浪费
    

    什么是程序运行时的时间局限性和空间局限性?

    时间局限性:某条指令被执行,不久以后可能再次被执行
    空间局限性:某存储单元刚被访问,不久以后可能被再次访问
    

    虚拟存储器有哪些特征?其中最本质的特征是什么?
    多次性:只将当前要运行的那部分程序和数据装入内存即可运行(最本质)
    对换行:允许作业在运行过程中进行换进换出(最本质)
    虚拟性:逻辑上扩充存储空间
    虚拟性是以多次性和对换行为基础的

    实现虚拟存储器需要哪些硬件支持?

    请求分页的页表机制:在纯分页的页表机制上增加若干项而形成的,作为请求分页的数据结构
    缺页中断机构:访问未调入内存的页面,便产生一缺页中断,以请求OS将所缺的页调入内存
    地址变换机构:在纯分页地址变换的机构的基础上发展的
    

    在请求分页系统中,页表应该包括哪些数据项?每项的作用是什么?

    页号,物理块号,状态位P,访问字段A,修改位M,外存地址
    状态位P:用于指示该页是否已调入内存
    访问字段A:用于记录本页在一段时间内被访问的次数,或者最近长时间未被访问
    修改位M:标识该页在调入内存后是否被修改过
    外存地址:用于指出该页在外存上的地址
    

    试比较缺页中断机构与一般的中断,他们之间的区别?

    在指令执行期间产生和处理中断信号:缺页则是发现缺页则立即产生和处理缺页中断信号;中断则是一条指令执行完以后才检查是否有中断请求到达
    

    试说明请求分页系统中的地址变换过程?

    检索快表,找要访问的页
    有,便修改页表项中的访问位,然后利用页表项中的物理块号和页内地址形成物理地址
    
    无,便在内存中查找页表,再从中找到页表项中的状态位来了解是否调入内存:
    已调入内存,则写入快表,快表满则调度替换
    未调入内存,则发生缺页中断,从外存调入内存
    

    何谓固定分配局部置换和可变分布全局置换的内存分配策略?

    固定分配局部置换:为每个进程分配一组固定数目的物理块,在进程运行期间不再改变,如果发生缺页则只能从分配给出该进程的n个页面中选出一页换出然后在调入
    可变分布全局置换:为每个进程分配一定数目的物理块,发现缺页时,只允许从该进程在内存的页面中选择一页进行置换
    

    在请求分页系统中页面的调入过程?

    当程序所访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后转入缺页中断处理程序
    查找页表得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘 I/O 将缺页调入内存,然后修改页表
    如果磁盘已满,则按照某种置换算法进行置换【被置换的页,已修改则写回磁盘,否则直接替换】,并修改页表,同时将此页表项写入块表中
    最后,通过页表得到物理地址,再访问内存【整个过程对用户透明】
    

    试着说明在请求分页系统中,常用哪几种页面置换算法?

    最佳置换算法:长时间内,该页将不再被访问【无法实现】
    先进先出算法:先进来的页,先淘汰
    最久未被使用算法【LRU】:最近,目标页都未被访问使用(硬件支持:寄存器,栈)
    最少使用置换算法【LFU】:每个页面设置一个移动寄存器,记录被访问的次数
    clock置换算法:判断访问位是否为零,如果都不为零,则循环达到下一次
    页面缓冲算法【PBA】
    

    在一个请求分页系统中,采用FIFO页面置换算法时,假如一个作业的页面走向为4,3,2,1,4,3,5,4,3,2,1,5,当分配给该作业的物理块数M分别为3,4时候,试着计算在访问过程中所发生的缺页次数和缺页率,比较所得结果

    M=3
    一共缺页10次,5/6的缺页率
    M=4
    一共缺页10次,5/6的缺页率
    

    实现LRU算法所需的硬件支持是什么?

    寄存器,用于记录某进程在内存中各页的使用情况;栈,用于保存当前使用的各个页面的页面号
    

    试着说明改进型clock置换算法的基本原理

    考虑页面的使用情况外,还增加一个置换代价,即设置访问位和修改位
    

    影响页面换进换出效率的若干因素是什么?

    页面的置换算法,写回磁盘的频率,读入内存的频率
    

    页面缓冲算法的主要特征是什么?它是如何降低页面换进换出的频率?

    特征:降低了页面换进换出的频率,减少了开销
    在内存中设置空闲页面链表和修改页面链表
    

    在请求分页系统中,产生“抖动”的原因是什么?

    运行的进程太多,分配给每个进程的物理块太少,不能满足进程正常运行,使得频繁出现缺页
    

    何谓工作集?它是基于什么原理确定的?

    工作集:在某段时间间隔中,进程实际所要访问页面的集合
    

    当前可以利用哪几种方法来防止抖动?

    局部置换策略,把工作集算法融入到处理机调度中,利用“L=S”准则调节缺页率,选择暂停的进程
    

    试着说明如何利用“L=S”准则来调节缺页率,以避免“抖动”的发生

    L表示缺页之间的平均时间,S是平均缺页服务时间
    L大于S的时候,说明很少发生缺页,磁盘的能力尚未得到充分利用
    L小于S的时候,说明缺页频繁
    L=S时候,磁盘和处理器可以达到最高利用率
    

    为了实现请求分段式存储管理,应在系统中增加配置哪些硬件机构?

    请求段表机构,缺段中断机构,地址变换机构
    

    在请求段表机制中,应设置哪些段表项?

    存取方式,访问字段A,修改位M,存在位P,增补位,外存始地址
    

    说明请求分段系统中的缺页中断处理过程

    发生中断时,发出缺段中断信号,中断处理程序将所需要的段调入内存
    

    请对共享段表中各项作简要说明

    共享进程计数count,存取控制字段,段号
    

    如何实现共享分段的分配和回收?

    分配:对第一个请求使用该段的进程,由系统为该共享分配一物理区,再把共享段调入该区,同时将该区的起始地址填入请求进程的段表的相应项中
    回收:释放目标段,count自减,结果为0时则回收,否则只取消调用者进程在共享段表中的有关记录
    

    Part B

    • 现代操作系统中,提高内存利用率主要是通过【虚拟存储器】功能实现的

    • 从下列关于非虚拟存储器的论述中,选出一条正确的论述

        要求作业在运行前,必须全部装入内存,且在运行过程中也必须一直驻留内存【对】
        要求作业在运行前,不必全部装入内存,且在运行过程中不必一直驻留内存【错,运行过程中需要驻留在内存】
        要求作业在运行前,不必全部装入内存,但在运行过程中必须一直驻留在内存【错】
        要求作业在运行前,必须全部装入内存,但在运行过程中不必一直驻留内存【错,不需要全部装入内存】
      
    • 虚拟存储器最基本的特征是【多次性】;该特征主要是基于【局部性原理】;实现虚拟存储器最关键的技术是【请求调页(段)】

    • 虚拟存储器管理系统的基本是程序的局部性理论,此理论的基本含义是【程序执行时对主存访问是不均匀的】。局部性有两种表现形式,时间局部性和【空间局部性】,它们的意义分别是【最近被访问的单元,很可能在不久的将来还要被访问】和【最近被访问的单元,很可能他附近的单元也即将被访问】。根据局部性理论denning提出了【工作集理论】

    • 实现虚拟存储器的目的是【扩充主存容量】;下列方式中,【可变分区管理】不适用于实现虚拟存储器

    • 从下列关于虚拟存储器的论述中,选出两条正确的论述

        在请求段页式系统中,以页为单位管理用户的虚空间,以段为单位管理内存空间【错】
        在请求段页式系统中,以段为单位管理用户的虚空间,以页为单位管理内存空间【对】
        为提高请求分页系统中内存的利用率,允许用户使用不同大小的页面【错,页面大小是相通的】
        在虚拟存储器中,为了能让更多的作业同时运行,通常只应装入百分之10~30的作业便启动运行【错】
        实现虚拟存储器的最常用的算法,是最佳适应算法OPT【错】
        由于有了虚拟存储器,于是允许用户使用比内存更大的地址空间【对】
      
    • 一个计算机系统的虚拟存储器的最大容量由【计算机的地址结构】确定的,其实际容量是由【内存和硬件容量之和】确定的

    • 在请求分页系统的页表中,增加了若干项,其中状态位供【程序访问】,修改位供【换出页面】,访问位供【置换算法】,外存起始地址供【调入页面】

    • 在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起【越界中断】,否则,若所需的页不在内存中,则会引起【缺页中断】,在【缺页中断】处理完后,进程将执行【被中断指令的那一条】指令

    • 在请求调页系统中,内存分配有【固定分配】和【可变分配】,【固定分配】的缺点是可能导致频繁地出现缺页中断而造成cpu利用率下降

    • 在请求调页系统中有着多种置换算法,1.选择最先进去内存的页面予以淘汰的算法称为【FIFO】;2.选择在以后不再使用的页面予以淘汰的算法【OPT】;3.选择自上次访问以来所经历时间最长的页面予以淘汰的算法【LRU】;4.选择自某时刻开始以来,访问次数最少的页面予以淘汰的算法【LFU】

    • 在页面置换算法中,存在belady现象的算法是【FIFO】,其中,belady现象是指【当分配到的内存块数增加时,缺页中断的次数有可能反而增加】

    • 在请求调页系统中,凡未装入过内存的页都应从【文件区】调入;已运行过的页主要是从【对换区】调入,有时也从【页面缓冲池】调入

    • 共有32个页面,每页1KB,主存为16KB,假定某时刻用户页表中已调入主存页面的虚页号和物理号对照表,则十六进制虚地址相应的物理地址的虚地址:0A5C~物理地址:125C;虚地址:1A5C~物理地址:页失效,虚拟存储器的功能由【软硬件结合】完成。在虚拟存储器系统中,采用【高速缓冲存储器】提高【动态地址翻译】的速度

    • 从下面关于请求分段存储管理的叙述中,选出一条正确的叙述

        分段的尺寸受内存空间的限制,且作业总的尺寸也受内存空间的限制【错】
        分段的尺寸受内存空间的限制,且作业总的尺寸不受内存空间的限制【对】
        分段的尺寸不受内存空间的限制,且作业总的尺寸不受内存空间的限制【错】
        分段的尺寸不受内存空间的限制,且作业总的尺寸受内存空间的限制【错】
      
    • 系统抖动是指【被调出的页面又立刻需要被调入所形成的频繁调入出的现象】,其产生的原因主要是【置换算法选择不当】

    • 在环保机构中,操作系统应处于【最高特权环】,一般应用程序应处于【最低特权环】内,并应遵循下属规则:1.一个程序可以访问驻留在【相同和较低特权环】中的数据;2.一个程序可以调用驻留在【相同或较高特权环】中的服务

    • 测得某个请求调页的计算机系统部分状态数据为:CPU利用率百分之20,用于对换空间的硬盘利用率百分之97.7,其他设备的利用率百分之5,由此断定系统出现异常,此种情况,【较少运行的进程数】或【加内存条,增加物理空间容量】能提高CPU的利用率

    • linux采用【请求分页】存储管理方式

    • Linux内核的页面分配程序采用【伙伴系统】算法进行页框的分配和回收

    Part C

    • 在请求调页系统中,地址变换过程可能会因为【逻辑地址越界】,【缺页】,【访问权限错误】等原因而产生中断
    • 虚拟存储器的基本特征是【对换性】和【多次性】,因而决定了实现虚拟存储器的关键技术是【请求调页技术】和【页置换技术】
    • 实现虚拟存储器除了需要有一定容量的内存和相当容量的外存外,还需要有【页表机制】,【地址变换机构】,【缺页中断机构】的硬件支持
    • 为了实现请求分页管理,应在纯分页的页表基础上增加【访问位】,【修改位】,【状态位】,【外存地址】等数据项
    • 在请求调页系统中要采用多种置换算法,其中opt是【最佳置换算法】,lru是【最近最久未被使用算法】,而lfu是【最少使用算法】,pba是【页面缓冲算法】
    • Vax/Vms操作系统采用页面缓冲算法,它采用【FIFO】算法选择淘汰页,如果淘汰的页未被修改,则将它所在的物理块插入到【空闲页面】中,否则便将其插入【修改页面】中,它主要优点可以大大减少【换进换出而读写磁盘】次数
    • 在请求调页系统中,调页的策略有【请求调页策略】和【预调页策略】
    • 在请求调页系统中,反复进行页面换进和换出的现象称为【抖动】,它产生的主要原因是【置换算法选用不当】
    • 分页系统的内存保护通常有【越界检查】和【存取控制】措施
    • 分段系统中的越界检查是通过【段表寄存器】中存放的【段表长度】和逻辑地址中的【段号】的比较,以及段表项中的【段长】和逻辑地址中的【段内地址】的比较来实现的
    • 为实现段的共享,系统中应设置一张【共享段表】,每个被共享的段占其中的一个表项,其中应包含了被共享段的段名,【共享进程计数】,【段在内存的起始地址】,【段长】等数据项,另外还在该表项中记录了共享该段的【每个进程】的情况
    • 在分段系统中常用的存储保护措施有【越界检查】,【存取控制权限检查】,【环保护机构】三种方式
    • 在采用环保护机制时,一个程序可以访问驻留在【相同环或较低特权】环中的数据,可以调用驻留在【相同环或较高特权】环中的服务
    • Intel x86/Pentium系列CPU可采用【实模式】和【保护模式】两种工作方式
    • Intel x86/Pentium的分段机制,每个进程用于地址映射的段表也叫作【局部描述符表LDT】;另外,当进程运行在特权级别为0的核心态下时,它必须使用【全局描述符表GDT】来进行地址映射
    • Intel x86/Pentium的分页机制,采用【两】级分页模式,其外层页表也叫做【页目录】
    展开全文
  • 每当我们安心的使用LINUX系统或者在编写C语言的时候,安心的使用malloc或者free的时候,我们很少关注过其底层的内存是怎么工作的,CPU是如何...那么,这篇博客就要讲述一下虚拟存储器是一个什么东西。 第一篇会从硬

    每当我们安心的使用LINUX系统或者在编写C语言的时候,安心的使用malloc或者free的时候,我们很少关注过其底层的内存是怎么工作的,CPU是如何获取从主存中获取数据的,我们的寻址是不是可以直接寻找到对应的数据,还是通过某种转化机制。实际上,对于每一个进程,它所能接触到的地址都不是实际的物理地址,而是通过虚拟地址进行映射而来的。那么,这篇博客就要讲述一下虚拟存储器是一个什么东西。
    第一篇会从硬件和操作系统的角度来说明虚拟存储器是个什么东西。
    第二篇会从动态存储器,从程序应用的角度重点讲述(malloc和free的相关机制)。
    闲话少说,你将在这篇博客里面看到如下内容:
    这里写图片描述
    1.1 什么是虚拟地址和物理地址:
    首先,要说虚拟地址就要先说一下物理地址。可以理解我们的主存被组织成一个由M个连续的字节大小的单元组成的数组。而每一个字节都有一个对应的地址,这样的地址就被称作是物理地址。那么,我们的程序是不是可以直接可以接触到物理地址,就是是不是可以直接从物理地址当中获取数据。答案明显是不是的,我们先来分析一下如果所有的进程直接访问同一块连续的物理地址有什么弊端呢?
    1. 主存的容量有限。虽然我们现在的主存容量在不断上升,4G,8G,16G的主存都出现在市面上。但是我们的进程是无限,如果计算机上的每一个进程都独占一块物理存储器(即物理地址空间)。那么,主存就会很快被用完。但是,实际上,每个进程在不同的时刻都是只会用同一块主存的数据,这就说明了其实只要在进程想要主存数据的时候我们把需要的主存加载上就好,换进换出。针对这样的需求,直接提供一整块主存的物理地址就明显不符合。
    2. 进程间通信的需求。如果每个进程都 独占一块物理地址,这样就只能通过socket这样的手段进行进程通信,但如果进程间能使用同一块物理地址就可以解决这个问题。
    3. 主存的保护问题。对于主存来说,需要说明这段内存是可读的,可写的,还是可执行的。针对这点,光用物理地址也是很难做到的。
    针对物理地址的直接映射的许多弊端,计算机的设计中就采取了一个虚拟化设计,就是虚拟内存。CPU通过发出虚拟地址,虚拟地址再通过MMU翻译成物理地址,最后获得数据,具体的操作如下所示:
    VA转化为PA
    利用了虚拟内存就可以比较有效的解决以上三个问题,在每一个进程开始创建的时候,都会分配一个虚拟存储器(就是一段虚拟地址)然后通过虚拟地址和物理地址的映射来获取真实数据,这样进程就不会直接接触到物理地址,甚至不知道自己调用的那块物理地址的数据。
    1.2 地址空间的概念
    为了能更好的理解下面的所说的地址翻译等知识点,这里说一下地址空间的概念。首先,对于32位的计算机,每一个地址所对应的数据空间是32位,也就是四个字节。那么如果一个地址可以用32位表示,那么对于这32位地址的所有可能就是:2 32 种可能,那么32位地址的地址空间就为2 32 。下面所说的,虚拟地址的地址空间和物理地址的地址空间也就是取决于虚拟地址和物理地址的位数,如果位数分别为M,N,那么地址空间也为:2 M 和2 N .
    下面补充一下几个常见的单位:
    这里写图片描述.

    1.3 地址分页的概念
    对于一整块连续的内存,直接连续使用也是不太符合实际的。于是,就有分页的概念。将1024个地址分成一页,通过访问页来访问数据。那么有了页就要有如何寻找页的概念了。我们通过每一页的首地址作为页入口,即(PTE)来检索页。那么,对于这些PTE,我们也需要一个专门的数据结构来进行管理,这样的数据结构就是页表(page table)。

    1.4 虚拟存储器的缓存作用
    这里先说明一下DRAM,SRAM和磁盘的速度区别,对于速度:
    SRAM>DRAM>>磁盘
    SRAM的速度是DRAM的10倍,DRAM是磁盘速度的百来倍,所以SRAM常作为CPU上L1,L2,L3缓存的材料,DRAM作为主存,针对于SRAM和DRAM,cache MISS的惩罚而言,DRAM的惩罚更大,因为DRAM的读写速度是磁盘的几百倍,所以利用在DRAM的缓存的作用就更大了,针对于虚拟存储器的缓存作用可以用下图所示:
    这里写图片描述
    虚拟存储器中的块分为:未分配的,缓存的,未缓存的。
    未分配的:顾名思义,这一块的虚拟存储器不映射于任何块。
    缓存的:这一块的虚拟存储器映射于已经存在于DRAM中的物理页。
    未缓存的:这一块的虚拟存储器映射于存在于磁盘中的虚拟页。(也就是要使用就要把磁盘中的虚拟页替换到DRAM中的物理页,会发生Page Fault )
    有效和无效通过一个valid bit(有效位)来进行判断
    这里写图片描述

    这里就要再重复说明一下了:页表,PTE,物理存储器,虚拟存储器分别放在什么地方。
    DRAM里面有:页表,PTE,物理存储器
    磁盘里面:虚拟页表

    那么对于缓存来说:就有页命中,和页不命中两种情况
    页命中:在图中就类似于VP1,VP2,这类的页表,直接缓存在DRAM中的物理存储器中,可以直接从DRAM中获取速度就快了。
    页不命中:就是访问页表中未缓存的PTE,如VP3,VP6之类,如下图所说明的情况
    这里写图片描述
    这里写图片描述

    虚拟地址想访问VP3的时候,发现VP3未在缓存中,发生page fault.利用替换算法(替换算法可能是FIFO,或者LRU)将物理存储器中的一个VP3从物理存储器中导出,VP4从磁盘导入DRAM中。此时,PTE3就变成了已缓存,PTE4变成了未缓存。这时候在进行地址翻译,就变成页命中了。
    可见,page fault从磁盘导入的效率是非常低的,但是由于局部性原理,进程往往更多的在较小的活动页面上工作,很少有大跨度的访问内存,使得page fault产生的可能性降低。页命中的可能性提高。
    获取数据的效率就快了很多。

    1.5虚拟存储器的其它作用:
    正如上面所说的只使用物理地址的弊端,虚拟存储器可以解决部分的问题。
    1.简化共享:利用虚拟地址来映射物理地址,使得可以让多个进程的不同虚拟地址映射同一块物理地址,比如类似于printf,这一类常用的库,不会把printf的代码拷贝到每一个进程,而是让不同进程都使用同一块printf.
    2. 虚拟存储器作为存储器保护的工具,在虚拟存储器里面可以设计该PTE是可读,可写,还是可执行的。如果一旦出现只读的PTE被写入了,CPU就会发送出现segmentation fault(段错误)但并不会影响到实际存放数据的物理内存,
    这里写图片描述

    地址翻译

    地址翻译作为虚拟存储器中最难的一块也不为过,本人也是花了好大的功夫才这块东西吃透。
    1.首先先来了解地址翻译的目的是什么,地址翻译的目的是通过MMU将虚拟地址翻译成物理地址。
    那么虚拟地址的那么多个地址位又分成那些部分呢?,我先放上一张符号说明图来为后面的地址翻译提供便利:
    这里写图片描述

    下面以只有一级页表为例:
    下面的转化图将说明虚拟地址到物理地址的一个过程
    这里写图片描述

    无论是虚拟地址还是物理地址都被分成两个部分,一个页号(PN),用来寻找对应的存储页,还有一个偏移量(PO)用来寻找在对应页中的偏移量。对于偏移量来说,虚拟页的偏移量和物理页的偏移量是相同的。那么,说明我们所需要的转化就是从虚拟页号转化到物理页号。
    这也就意味着我们可以使用一个小trick加速翻译的速度,分别将VPN,VPO分开传输,VPN传输到MMU进行翻译,VPO直接传输到L1 cache进行偏移检索,而不是等到VPN翻译成PPN再进行翻译,这个称作是优化地址翻译
    什么下就是翻译页号了,翻译页号的步骤就是通过VPN在页表中进行寻找找到对应的PTE,如果发现PTE的有效位为0,说明页面不存在,就出现缺页错误,重新加载页面到物理存储器中,然后设有效位为1(上面的缺页错误说的就是这个问题)。反之,有效位为1,说明页命中,取出PPN和VPO一合,得到物理地址,下图分别说明了,缺页错误和页命中两种情况的翻译情况:
    这里写图片描述
    这里写图片描述

    1. 但是通过DRAM中的页表来进行地址翻译的速度有可能太慢了,无法满足速度的需求。这个时候就要TLB中派上用场了,TLB作为SRAM的一部分,速度是快于页表查询的。TLB的实际作用,做一个映射,将VPN在TLB中寻找,找到对应的PPN。那么问题来了,TLB是怎么做的映射的呢?这时候就要说明一下VPN对于TLB来说可以分成那几块,请看下图:
      这里写图片描述

    可以看见VPN被分为(TLBT:TLB标记,TLBI:TLB索引)
    这时候再来看看TLB构成是什么样的呢?
    这里展示的是一个四路组相连的一个TLB
    这里写图片描述
    TLBI的两位就说明该选TLB的那一组,前面的6位TLBT说明标记位。

    3.二级或者多级页表怎么处理

    二级页表或者多级页表都是为了更快的检索和更节约空间,请先看下面一个二级页表的例子:
    这里写图片描述
    首先二级页表并不复杂,就相当于多了一次映射,我们做一个简单的计算来说明二级页表容量关系,在二级页表中,一个PTE指向的是二级页表中,1024个PTE的一页,那么二级页表中的一个PTE也就指向虚拟存储器中的一页,也就是1KB的地址空间,一个地址中有32位,也就是4个字节,那么在二级页表中的一个PTE所包含的容量就为4KB字节。对于一级页表而言,一个PTE就代表着4MB字节的空间,1K的一级页表就代表了4GB字节的空间,4GB已经是现在很多内存条的容量了。
    那么对于多级页表,一个VPN又是怎么分配和映射的呢。相信下面的一张图就可以说明清楚。
    这里写图片描述

    1. 物理地址怎么处理
      那么,现在我们得到了物理地址,那么通过物理地址又怎么在物理存储器中寻找到我们想要的数据呢?
      先来看一下我们的物理地址分成那几个部分
      这里写图片描述

    可以看到物理地址被分成了三个部分:CO(块偏移),CI(索引),CT(标签)三个部分
    那么物理存储器又长什么样子呢?请看下图:
    这里写图片描述

    物理地址先找到CI索引,找到对应的set集合,然后判断这个集合的valid bit是否等于一并且tag是否与CT一致。如果这些条件都符合,在通过CO偏移找到想要的数据。

    最后:
    翻译实例:
    首先,我们的翻译实例是基于一级页表之间的转换,关于虚拟地址以及物理地址的长度及位置如下图所示:
    这里写图片描述

    这里写图片描述

    好了,信息完全。
    接下来,我们就来实际翻译的虚拟地址。
    我们翻译的地址为:0x03d4
    这里写图片描述

    我们得到了VPO,只需要翻译出PPN就好。
    接下来我们通过TLBI,TLBT来寻找对应的PPN。首先,可以知道TLBI为0x3,在TLB可以找到3为这个位,对应的标签TLBT也为0x3,很高兴我们找到TLBT为0x3的位,并且里面的PPN有值,值为0D,这个0D就是我们先要的PPN了,

    这时候我们就可以得到物理地址为PPN=0x0d,PPO=0x14,物理地址为:0x354
    如下图:
    这里写图片描述

    我们得到了CO=0x0,CI=0x5,CT=0x0d
    我们先通过CI找索引,然后再通过CT对照,很高兴,我们发现标记位相同,都为0x0D,且有效位为1,于是乎我们再通过CO=0的偏移,取出了数据0x36。嘻嘻嘻。
    这个就是翻译的全过程。
    当然针对于,不同的操作系统中,在通过虚拟地址进行页面通信的时候还有特性使用:例如写时拷贝这个特性,在这里就不赘述了,需要了解的人可以查找资料来了解。
    虚拟存储器的概念与工作原理就到这了。
    下一篇我们将讲述动态存储器的特点(即malloc和free的实际原理)。
    Reference:《深入理解计算机系统》

    展开全文
  • 虚拟存储器

    千次阅读 2021-03-19 15:34:55
    在早期的单用户单任务的操作系统中,每台计算机仅有一个用户,每次运行一个程序,程序还不是很大,单个程序完全可以存放在实际内存中,此时虚拟存储并没有多大用处。 随着社会的进步,科技的发展,人们需要计算机...

    实地址与虚地址

    在早期的单用户单任务的操作系统中,每台计算机仅有一个用户,每次运行一个程序,程序还不是很大,单个程序完全可以存放在实际内存中,此时虚拟存储并没有多大用处。

    随着社会的进步,科技的发展,人们需要计算机处理更庞大更复杂的问题,运行在计算机中的程序越来越大,也越来越多,原来的单用户单任务系统不够用了,出现了多用户多任务系统。此时,有一个问题出现了:在程序设计时,程序需要的存储器容量往往与计算机系统实际配备的主存储器的容量之间存在矛盾。如,某些程序需要很大的内存的才能运行,而计算机的物理内存较小,不能满足;又如,多个程序/多个用户同时共享主存,同时运行,同时运行中的程序到底占用实际内存的哪一部分?这一问题在编写程序时是无法确定的,只有在程序运行时操作系统才动态为其分配内存。

    基于以上背景,人们想在编写程序时独立编址既不考虑物理内存能否放得下程序,也不考虑程序到底应该放在哪。只需要在程序运行时,操作系统能够分配给程序一定的运行空间,地址转换部件(硬/软)将编程时的地址转换成实际物理内存中的地址。

    用户编程时使用的地址称为虚地址/逻辑地址,其对应的存储空间称为虚存空间/逻辑地址空间

    计算机物理内存的访问地址称为实地址/物理地址,对应的存储空间称为物理存储空间/主存空间

    虚存的访问过程

    虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入内存。

    每次访存时,首先判断该虚地址对应的部分是否存在于实存中:如果存在,则进行地址转换,并用实地址访问主存;不存在,则按照一定的规则将辅存中的部分程序调度进内存,再按同样的方式访问主存 。

    由此可见,每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间

    页式虚拟存储器

    在页式虚拟存储系统中:
    虚地址空间被分为等长大小的页,称为逻辑页
    主存空间也被分为同样大小的页,称为物理页

    虚地址分为两个字段:逻辑页号(高字段),页内地址/偏移量(低字段)
    实存地址分为两个字段:物理页号(高字段),页内地址(低字段)

    在多数系统中,每个进程对应一个页表。页表中对应每一个虚存页面有一个表项,每一个表项含有:虚存页面对应的主存页面的物理页号;指示该逻辑页是否已经调入主存的有效位

    虚存地址向物理地址转换时

    用虚存地址的逻辑页号作为页表内的偏移地址索引页表,找到相应的主存页面号,用主存页面号作为实存地址的高字段,再拼接上虚存地址的页内地址作为实存地址的低字段,就得到了完整的物理地址

    下图展示了页式虚拟存储器的地址映射过程:页式虚拟存储系统

    分页方式的优缺点

    优点:
    · 页长固定,便于构造,易于管理,不存在外碎片
    缺点
    · 页长与程序的逻辑大小不相关

    【注意】!!!!!
    1.每个进程需要的页数并不固定,所以页表长度可变

    2.页表存在二级结构,有些系统给进程分配一个页目录表,页目录表中的每一项指向一个页表。如,存在一个页目录表长度为m,页目录表中的每一项指向一个长度为n的页表,则一个进程最多有m*n个页。

    3.页表长度较大的系统,可以采用反向页表实现物理页号到逻辑页号反向映射

    段式虚拟存储器

    另一种划分可寻址的存储空间的方法称为分段

    段是按照程序的自然分界划分的长度可动态改变的区域。

    段式虚拟存储系统中:
    虚地址由段号段内地址(偏移量)组成,虚地址到实存地址的变换通过段表实现。每个程序设置一个段表,段表的每一表项对应一个段。每一个表项含有:
    1.有效位:指示该段是否已经被调入实存
    2.段起址:该段在实存中的首地址
    3.段长:记录该段的实际长度。设置段长的目的在于防止越界访问,保护其他段。

    段表本身也是一个段,一般驻留在主存中,但可以存在辅存中。

    虚存地址向物理地址转换时

    存储管理部件先以段号s为索引访问段表的第s个表项。若该表项的有效位为1,则将虚地址的段内偏移量d与该表项的段长字段比较:若偏移量大于段长,则说明会产生地址越界,导致地址越界中断;否则,将该表项的段起址与段内偏移量相加,求得主存地址并访存。若有效位为0,则产生调页中断,从辅存中调入该页,修改段表。

    下图展示了段式虚拟存储器的地址映射过程:
    段式存储器

    分段方式的优缺点

    优点:
    1.段的逻辑独立性使其易于编译、管理、修改与保护,便于多道程序共享
    2.段长可以动态改动,允许自由调度,以便有效利用主存空间
    缺点:
    1.主存空间分配较麻烦
    2.容易在段间留下外碎片,降低存储空间利用率
    3.段长不一定是2的整数次幂,所以不能简单地像分页那样将两个字段拼接起来,而是要用加法求得实存地址,所以需要更多的硬件支持

    段页式虚拟存储器

    段页式虚拟存储器是段式虚拟存储器与页式虚拟存储器的结合

    实存被等分为页。每个程序先按逻辑结构分段每段再按实存的页大小分页程序按页进行调入与调出操作,但可按段进行编程、保护与共享。

    在段页式虚拟存储器中,每个程序均通过一个段表和多个页表进行二级再定位

    段表中每个表项对应一个段,每个表项有一个指针指向该段的页表,页表再指明该段各页在主存中的位置,以及是否已经调入主存,是否已修改等状态信息

    虚地址构成:段、段内页号、页内偏移量
    多任务系统中,虚地址前还会增加一个表明该程序在系统中的编号——基号,因此,虚地址的构成也可以认为是4个。

    构成
    假设有3个程序,基号分别为A,B,C,其基址寄存器的内容分别为SA,SB和SC。程序A由4个段构成,程序C由3个段构成。

    下图展示了段页虚拟存储器的地址映射过程:
    在这里插入图片描述
    【参考资料】《计算机组成原理》——白中英——第五版

    展开全文
  • 虚拟存储器要点练习

    2018-12-08 23:48:00
    1.实现虚拟存储器目的是: 从逻辑上扩充主存容量。 2.虚拟的基础是局部性原理,其基本含义是指令的局部性(时间局部性与空间局部性)。 3.在虚存管理中,虚拟地址空间是指逻辑地址空间,实地址空间是指物理地址...

    1.实现虚拟存储器的目的是:
    从逻辑上扩充主存容量。
    2.虚拟的基础是局部性原理,其基本含义是指令的局部性(时间局部性与空间局部性)。
    3.在虚存管理中,虚拟地址空间是指逻辑地址空间,实地址空间是指物理地址空间;前者的大小受 的限制,而后者的大小受 的限制。
    机器的指令地址长度;物理内存大小。
    4.在请求页式系统中,OPT是 ;LRU是 ;NRU是 ;LFU是 。
    最佳置换算法;最近最久未使用置换算法;最近未使用置换算法;最不经常使用置换算法。
    5.页式虚拟存储管理的主要特点是:
    不要求将作业同时全部装入到主存的连续区域。
    6.在请求分页存储管理中,若采用FIFO页面淘汰算法,则当分配的页面数增加时,缺页中断的次数 :
    可能增加也可能减少。
    7.在请求分页系统中,地址变换过程可能会因为 、 、 错误等原因而产生中断。
    缺页、地址越界、访问权限错误。
    8.在请求分段存储管理中,系统必须至少具有三种支持机构,分别为 :
    段表、缺段中断机构、地址变换机构。

    展开全文
  • 虚拟存储器虚拟存储器是一个抽象的概念,主要目的是为多个程序之间有效而安全地共享存储器。它为每个进程提供了一个大的、一致的和私有的地址空间。 虚拟地址与物理地址 把主存看成是由连续字节单元组成的大数组,...
  • 操作系统之虚拟存储器概述

    千次阅读 2018-07-29 00:27:23
    虚拟存储器的定义、特征及其实现方式 虚拟存储器的定义 虚拟存储器的特征 虚拟存储器实现方法 请求分页存储管理方式 请求分页中的硬件支持 请求分页中的内存分配 页面调入策略 页面置换算法 访问时间 抖动与...
  • 虚拟存储器管理

    2020-07-11 20:37:40
    虚拟存储器管理 一、实验目的 加深对虚拟存储器中的页面置换算法的理解,特别是要掌握先入先出页面置换算法和最近最久未使用置换算法的用法。 二、实验原理 设计一个请求页式存储管理方案,编写模拟程序实现具体过程...
  • 虚拟存储器题集

    千次阅读 2017-08-21 23:43:51
    操作系统如何实现虚拟内存的? 虚拟存储器通过把主存,辅存统一起来管理,给用户造成一种仿佛系统内具有巨大主存供用户使用的假象。 eg:页式存储管理,一道作业被划分为若干页,其中较活泼的几页放入内存,其余...
  • 【操作系统】虚拟存储器概述

    千次阅读 2016-12-18 19:52:53
    虚拟性是实现虚拟存储器最重要的目标。 虚拟性以多次性和对换性为基础,而多次性和对换性必须以离散分配为基础。 虚拟存储技术的概念 速度和容量:虚拟存储量的扩大是以牺牲 CPU 工作时间以及内外存交换...
  • 通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储管理。 三. 实验题目 第—题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 第二题:用先进先出(FIFO) 运行环境:Microsoft Visual Studio 2005
  • 计算机组成原理(2)-虚拟存储器

    万次阅读 多人点赞 2018-08-21 17:46:41
    虚拟存储器的含义 问题:随着计算机系统软件和应用软件的功能不断增强,某些程序却需要很大的内存才能运行,但是计算机本身的物理内存容量比较小。而且在多用户多任务系统中,多用户或多个任务共享全部主存,要求...
  • 试比较虚拟存储器和Cache
  • <计算机组成原理>cache及虚拟存储器

    千次阅读 2017-12-13 23:12:10
    整理一下存储系统中cache和虚拟存储器的相关知识点 Cache是高速缓存,设置在CPU和主存之间,由高速的SRAM组成的容量不大,但速度很快的存储器。 引入cache的目的:解决CPU和主存之间的速度差异,提高整机的运算速度 ...
  • 一、影响缺页率的主要因素 分配给作业的主存块数: 多则缺页率低,反之则高。 页面大小: 大则缺页率低;...二、虚拟存储管理下访问内存的有效时间 λ为访问快表的时间/更新快表的时间 t为访问内存...
  • 存储管理构建虚拟的内存地址,通过MMU(存储管理单元)将虚拟地址转换为物理地址,从而达到隐藏和保护存储器特定页内容,为程序分配连续的存储空间,扩展地址空间,通过合理映射节约物理内存的作用;且各进程不必...
  • 虚拟存储器与Cache比较 相同点:1、最终目的都是为了提高系统性能,两者都有容量...而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,但对应用程序员透明。 3、对于不命中性能影响,因为CPU的速
  • 高速缓冲存储器⭐ cache出现的原因: 避免速度差造成的拥堵 时间局部性:未来要用到的信息可能是我现在正在用的信息 空间局部性:未来要用的信息,从存储角度说,可能在我正在用的信息的附近 所以我把正在使用的信息,和...
  • 虚拟存储器作为现代操作系统中存储器管理的一项重要技术,实现了内存扩充功能。但该功能并非是从物理上实际地扩大内存的容量,而是从逻辑上实现对内存空间更大的程序运行,或者让更多的用户程序并发运行。这样既满足...
  • 存储器管理(含虚拟存储器)本例为哈工大威海操作系统实验三,具体实验要求Excel类MBC类Main类实验截图 本例为哈工大威海操作系统实验三,具体实验要求 一、实验目的 1.掌握内存管理的基本方法和分区法内存分配的...
  • 操作系统实验三虚拟存储器管理

    千次阅读 2019-06-20 19:37:11
    理解虚拟存储器概念,并掌握分页式存储管理地址转换和缺页中断的处理过程。用高级语言模拟请求分页式虚拟存储器的工作过程和页面置换算法LRU。 准备知识 分页式存储管理原理 在存储器管理中,连续分配方式会形成...
  • 操作系统原理第五章 -- 虚拟存储器

    千次阅读 2019-06-09 17:09:04
    2,请求分页系统是建立在基本分页的基础上的,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能。 3,为了实现请求分页,系统必须提供一定的硬件支持。除了需要一台具有一定容量的内存及外存的计算机...
  • 虚拟存储器·十

    2017-05-16 17:02:51
    第10章 虚拟存储器 关键词:虚拟存储器,动态存储器分配,地址空间与多级页表,空闲链表,伙伴系统 为了更加有效地管理存储器并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟存储器(VM)。虚拟...
  • src/slides 本节课幻灯片:组成原理34 vm.pptx 文章目录 内容提要 存储管理 存储容量需求 提高存储器容量 虚拟存储器 独立的逻辑地址空间 实现内存的保护 虚拟存储器目的 虚存与Cache的比较 虚拟存储器管理 段式...
  • 第五章 虚拟存储器 存储管理的目的是( C ) 。 A、方便用户 B、提高主存空间利用率 C、方便用户和提高主存利用率 D、增加主存实际容量 2、存储器管理中,下列说法正确的是( B ) A、无论采用哪种存储管理...
  • 第9章 虚拟存储器 虚拟存储器是现代操作系统提供的一种对主存的抽象概念。 9.1 物理和虚拟寻址 物理地址: 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每个字节都有一个唯一的物理地址,第...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,210
精华内容 10,084
关键字:

)实现虚拟存储器的目的是(