精华内容
下载资源
问答
  • 关于虚拟存储器、虚拟内存和交换空间的理解

    千次阅读 多人点赞 2016-12-01 14:18:15
    虚拟存储器、虚拟内存和交换空间这三个概念从看CSAPP开始很长一段时间都在困扰着我,网上各说纷云,等快上完操作系统和计组课才算明白了! 先说虚拟存储器,CSAPP上介绍的是虚拟存储器是对主存的抽象概念,为每一个...

    虚拟存储器、虚拟内存和交换空间这三个概念从看CSAPP开始很长一段时间都在困扰着我,网上各说纷云,等快上完操作系统和计组课才算明白了!

    先说虚拟存储器,CSAPP上介绍的是虚拟存储器是对主存的抽象概念,为每一个进程提供了一致的地址空间形式,也就是虚拟地址空间(这个地址空间不是用什么数组存起来的,而是CPU要访问内存就产生一个虚拟地址,不断累积组成的虚拟地址空间),它是一种机制,一种将主存抽象成磁盘高速缓存的技术。当初构造虚拟存储器的两个主要动机:允许在多道程序之间有效而安全地共享存储器;消除一个小而受限的主存容量对程序设计造成的影响。40年后,第一条变成了主要设计动机。现代操作系统都支持虚拟存储器,所有的应用程序访问内存都需要地址翻译。

    虚拟内存和交换空间,这两个概念要和操作系统一起说,window下的“虚拟内存”实际上是存在磁盘上的页面文件,和linux的交换空间概念一样,都是物理上实际存在的东西,如果内存够用,没有缺页,你禁掉这两个东西不会影响虚拟存储器;然而撇开操作系统,只谈理论,虚拟内存还是一种技术,它允许执行进程不必完全放在内存中。这两种其实都属于交换技术,交换技术除了因为内存紧张要使用之外,还有在一些操作系统如分时系统中为了改善进程组合(CPU密集型和IO密集型)也要用它进行中期调度。

    总结一下,传统意义上的虚拟内存和交换空间就是指能实际分配的磁盘空间,而虚拟存储器是一种机制,是整个CPU访问内存过程的体现。其实内存管理、虚拟内存技术、虚拟存储器都是密不可分的概念,你可以说虚拟存储器就是虚拟内存技术,也可以说内存管理机制就是虚拟存储器,抠字眼都是无意义的,因为可能书的翻译不同,理解不同。但是只要知道它们只是内存管理分页机制的体现,从CPU生成虚拟地址到MMU翻译生成物理地址,到查找PTE,再到缺页,页置换,这整个过程需要CPU、内存和磁盘的参与,只要理解了这些就理解了内存分页管理机制,不必抠字眼。

    展开全文
  • 关于虚拟存储器和高速缓存的理解

    千次阅读 2017-05-25 09:51:26
    对于csapp中的高速缓存和虚拟存储器章节做个总结,这些可以帮助我更好的理解java中的NIO以及并发。 先记录下一些名称的英文缩写: PP(physical page)物理页 VP (virtual page)虚拟页 VA (Virtual Address)虚拟...

    对于csapp中的高速缓存和虚拟存储器章节做个总结,这些可以帮助我更好的理解java中的NIO以及并发。希望大家能多多评论,共同提高。

    昨天问一个要去美国读计算机博士的朋友研究哪个方面,他说做操作系统,并且他们导师对基础要求很严格,要他先补好基础,然后他也问了我几个问题,觉得问题对理解高速缓存和虚拟存储器这块有用就记录下来:

    问:一条load指令对应的地址是物理还是虚拟的
    答:虚拟的
    问:一条load指令可能会从哪里取值
    答:寄存器,高速缓存,主存,硬盘或者网络,不过后2者需要先进内存
    问:如果cache miss了,那么需要访问memory几次
    答:数据一定在主存吗?
    问:假定一定在
    答:一次?
    问:不对,如果tlb miss 了,就是2次,所以是1到2次。(所以我忽略了如果tlb没有存储对应的虚拟地址的pte,那么就先需要从内存中读取一个pt,
    获取到pa后,再去内存读数据)
    问:好,下个问题会更有意思,如果tlb miss 了,但是数据已经cache了,会不会访问主存
    答:会
    问:不一定,因为x86的cache是按照虚拟地址建立的,所以miss后可以从cache中读取到
    后来还说到了tlb的内容在process切换的情况下会不会清理掉,不清理的话如果proces1没有跑,又切换回去,那么就可以重复利用了,我yy了一种
    场景,如果不刷,会导致类似页不命中要换页的情况,这种就需要消耗单独的时间。当然最终在设计的时候,肯定不会是yy的,一定会有大量的数据
    作为支撑。


    先记录下一些名称的英文缩写:
    PP(physical page)物理页
    VP (virtual page)虚拟页
    VA (Virtual Address)虚拟地址              VPO(虚拟页面偏移)+VPN(虚拟地址页号)+TLBI(TLB索引)+TLBT(TBL标记)
    MMU(Memory management unit)存储器管理单元
    PA (physical address)物理地址             PPO(物理页面偏移)+PPN(物理页面页号)+CO(缓冲块内的字节偏移量)+CI(高速缓存索引)+CT(高速缓存标记)
    PTE(page table entry)页表条目
    segmentation fault 段错误
    PTBR(page table base register)页表基址寄存器
    PTEA(page table entry address)页表条目地址
    TLB (translation lookaside buffer)翻译后备缓冲器(包含在MMU中)

    什么是虚拟存储器呢?首先虚拟存储器概念是针对计算器的主存的一种抽象,如果没有这种抽象,那么物理主存就会暴露出来,这样不方便对主存进行统一的管理,也不方便进行系统的扩展。虚拟存储器提供了如下三个功能:
    1.高效的使用主存。它将主存看做磁盘的高速缓存,需要使用的数据缓存到主存,不需要的进行换出。
    2.对进程的主存一致性视图。每个进程看到的内存视图都是一致的,这样简化了存储器的管理
    3.保护了进程的地址空间数据的安全性,防止被其他的进行所破坏。

    虚拟存储器结合了计算器硬件,操作系统软件之间的交互,那么现在就说下具体是怎么运行的吧。
    cpu在执行指令的时候,拿到的是一个虚拟地址,所以就需要将该虚拟地址翻译为物理地址,翻译的过程是:cpu将虚拟地址传给MMU,MMU
    通过PTBR拿到PTE,如果该虚拟页号已经缓存,那么将PTE中记录的物理地址和虚拟地址中的地址偏移合成为物理地址然后去高速缓存或者
    主存中获取数据,最后将数据交给cpu。在这一个过程中,如果该虚拟地址没有被缓存,那么触发一个内核的缺页异常,由操作系统根据算法确定对应
    的牺牲页,然后将其换出,换入需要读入的页。这个过程完成后,缺页处理处理程序返回原来的进程,继续执行导致缺页的指令,然后cpu会再次发送
    虚拟地址出去,这个时候该页面已经缓存在主存了,所以就可以顺利拿到数据了。
    上面的步骤中,每个都要从高速缓存/主存中获取PTE,如果在高速缓存中速度还很快,但是如果在主存,那么速度就要下降很多。所以在MMU中就包含
    了一个PTE的缓存TLB,这样进行地址翻译的时候就直接看TLB就可以了。
    PTE是存放虚拟存储器地址对应的物理存储器地址的,对于一个32位机器来说,对应的内存大小是4GB,如果一个页的大小是4KB,那就需要1000000
    条数据来存放整个虚拟存储器对应的虚拟地址空间,一条页表数据4B,那就需要4MB来存储整个页表,注意这还只是一个进程的页表,针对这种情况,
    可以使用多级页表来进行存储。


    对于现有的存储部件,越是快的就越贵,当然也就越小,比如寄存器大小就是byte为单位的,而磁盘是100GB作为单位,而访问时间相比也是横跨了许多数量级。如果不加入缓存机制,那么程序运行起来速度可想而知会有多慢。现在的电脑中,一般的存储结构是这样的:
    寄存器
    L1高速缓存
    L2高速缓存
    L3高速缓存
    主存
    磁盘
    网络I/0
    上面一级的可以看做是下一级的缓存,经常会使用到的数据能够放在更高层次的存储结构中,这样读取速度变快程序也就能够变快了。虽然缓存的机制能够使得程序运行的更快,但是自己想下,如果仅仅是这样的话,一个只有几MB的高速缓存和几个GB的内存比起来也太小了,即使常用的数据能放在高速缓存中,那也放不了多少啊,所以一定是有别的什么拯救了程序的运行,这就是程序的局限性带来的好处。局限性分为2种类型:空间局限性和时间局限性。时间局限性是指一个数据在一段时间内会多次被访问,这样因为第一次访问已经缓存,所以后续的访问就会很快。空间局限性是指在进行高速缓存的时候,数据是按照块来进行缓存的,第一次访问的只是该块中的部分数据,这样会导致整个数据块都被缓存,那么程序很可能在不远的将来引用这个块中的其他的数据。


    高速缓存的组成结构一般是分为S个组,每个组E行,一行包含B个字节数据。所以总体容量C=S*E*B。下面是几种比较特殊的组成结构
    1.直接映射高速缓存
    这种高速缓存对应的E=1




    2.组相连高速缓存




    3.全相联高速缓存

    展开全文
  • 虚拟存储器

    2018-08-08 17:24:55
    今天上午看了《深入理解计算机系统》中关于虚拟存储器的章节,记录如下: 首先说为什么要有虚拟存储器 我个人觉得虚拟存储器的概念是和进程概念一起出现的。在计算机技术发展的早期,只有单道批处理系统,特点是一...

    今天上午看了《深入理解计算机系统》中关于虚拟存储器的章节,记录如下:

    首先说为什么要有虚拟存储器

    我个人觉得虚拟存储器的概念是和进程概念一起出现的。在计算机技术发展的早期,只有单道批处理系统,特点是一次只能运行一个进程,只有运行完毕后才能将下一个进程加载到内存里面,所以进程的数据都是直接放在物理内存上的。

    到后来发展出了多道程序系统,它要求在计算机中存在着多个进程,处理器需要在多个进程间进行切换。这时候就出现问题了,链接器在链接一个可执行文件的时候,总是默认程序的起始地址为0x0,但物理内存上只有一个0x0的地址呀?也许你会说:”没关系,我们可以在程序装入内存的时候再次动态改变它的地址.”好吧我忍了。但如果我的物理内存大小只有1G,而现在某一个程序需要超过1G的空间怎么办呢?你还能用刚才那句话解释吗?

    这时候虚拟存储器的作用就发挥出来了,我们为每一个进程分配一个0~232-1个字节(32为系统,下同)的虚拟地址空间,并将这些空间在逻辑上分为各个段,每个段的作用、位置和访问权限都不同,具体可见我的关于进程这篇文章。使用虚拟存储器有如下好处:

    • 方便程序的链接和装入工作
    • 装入内存后可极大的节省内存
    • 方便操作系统对进程的管理
    • 安全,一个进程无法访问其他进程的空间
    • 可以保证每个进程可用空间为CPU的最大寻址空间
    • 可以高效的在进程间共享数据,如共享内存
    • 其他的想起来在补充哈,反正好处很多的。。。

    虚拟存储器的工作原理

    当操作系统将一个程序载入内存时,会为其创建一个PCB出来,PCB在Linux系统中就是一个task_struct的内核结构体,其中的元素包含或者指向内核运行该进程所需要的所有信息(例如:PID,指向用户栈的指针,可执行目标文件的名称以及程序计数器)。
    task_struct中有一个条目mm指向mm_struct,它描述了虚拟存储器的当前状态。我们感兴趣的两个字段是pgd和mmap,其中pgd指向一级页表的基址,而mmap指向一个vm_area_structs的链表,其中每个vm_area_structs都描述了虚拟地址空间的一个区域,也就是我上文所说的“段”。示意图如下:

    这里写图片描述

    由上图可知,vm_area_struct结构体中各字段含义如下:

    • vm_start:指向这个区域的起始处
    • vm_end:指向这个区域的结束处
    • vm_prot:描述这个区域内所有页的读写权限
    • vm_flags:描述这个区域内的页面是与其他进程共享的还是私有的
    • vm_next:指向链表中下一个区域结构

    值得说明的是,上图中的用户栈由两个寄存器ebp和esp维护,堆由程序员自己维护,所以没有vm_area_struct结构体指向它(个人认为,有待证实)。

    以上数据结构创建好后,进程就可以加载运行了。当然,此时物理内存上还没有任何该进程的数据信息。当CPU要访问某一个地址时,发现该页面并没有存在于物理内存上,就产生一个缺页中断(关于页表和缺页中断在下文表述),此时在中断处理程序内,操作系统会开辟一块内存出来并将外存上的数据存放进来,然后退出中断处理程序,CPU重新运行刚刚产生中断的那句指令,此时就不会再次导致缺页了。

    以上就是虚拟存储器的工作原理。由此可见,根据程序运行的局部性原理,使用虚拟存储器只将进程中用到的数据加载进物理内存,可以大大提高内存的使用率。

    页表和地址翻译

    既然有了虚拟地址,我们就需要有一种方法将虚拟地址和物理地址映射起来,这是通过页表来实现的。页表也是存储在物理内存中的数据,只不过它由内核维护。页表中记录了一个虚拟地址是否已经被映射到物理内存上的某个位置,如已经映射,还记录了具体的物理内存地址。由于访问页表相当于多了一次内存访问,因此有的计算机系统将页表缓存到MMU(Memory Manage Unit,内存管理单元)中的页表缓存中,称作TLB(Translation Lookaside Buffer,翻译后备缓冲器)。当然,这不是我们要讨论的内容。

    当CPU需要访问一个虚拟地址时,首先用这个虚拟地址根据某一个hash算法去查找对应的页表,这个操作的时间复杂度为O(1).若发现该虚拟地址已经被映射到物理内存上,则根据页表中给出的物理地址再去物理内存上查找即可。接下来我们讨论的是虚拟地址没有被映射到物理内存的情况,即缺页。

    发生缺页时,操作系统触发一个缺页异常,执行以下处理动作:

    1. 若页表中还有空余空间,则分配一个出来,同时分配一块物理内存出来,将所需的数据从磁盘拷贝到这里并更新页表。
    2. 若页表已满,则根据某种页面调度算法选择一个牺牲页,在采用“写一次法”的系统中,若该牺牲页已经被修改,则将它同步回磁盘。然后再从磁盘将数据拷贝到一块新分配的物理内存中并更新页表。
    3. 退出异常处理程序时,CPU重新执行刚才导致缺页中断的那条指令。

    有了以上关于页表的基础,我们在来看看以前学习的一些知识。

    再看fork函数

    fork函数的作用是创建一个子进程出来。其需要执行的动作有:

    • 创建新进程的PCB,并将父进程的PCB中大部分字段拷贝给子进程。
    • 创建子进程的页表,并为其分配实际物理内存,包括用户区的所有段。

    因此可以看出,创建一个子进程的开销是很大的。现代操作系统采用了一种写时拷贝的技术(COW,Copy On Write),即只是拷贝子进程的页表,并没有为其分配实际物理内存,也就是父子进程共同使用相同的物理内存。但会把这块内存的vm_area_struct结构体中的vm_prot字段标记为只读的。当父子进程都读取这些内存中数据时没有问题,如果某一个进程往里面写数据,才开始为其分配实际物理内存,并将数据拷贝过去,将他们标记为可写的,然后再写入数据。

    再看exec函数

    exec是一个函数族,完成的功能是程序替换。需要以下几个步骤:

    • 删除已存在的用户区域。即将当前进程的代码段,数据段等删除掉。
    • 映射私有区域。即将新的要替换的程序的代码和数据段映射的当前进程虚拟地址空间的代码和数据段,.bss段是请求二进制零的,映射到匿名文件,堆栈的初始长度为0。
    • 映射共享区域。如果新的程序与共享对象链接,如C标准库的libc.so,即动态链接,那么这些库文件映射到共享区域内。
    • exec函数做的最后一件事情就是设置程序计数器的值,使之指向当前进程的入口点。

    如上就是exec函数所做的工作,随后Linux将根据需要换入代码和数据页面。

    再看共享内存机制

    Linux进程间通信机制中有一种方式是共享内存,其机理是使两个进程的页表指向同一块物理内存,这样两个进程就可以通过页表访问同一块内存了。

    再看malloc函数

    malloc和free是C标准库的库函数,用来在堆上分配和释放空间。malloc管理着一个空闲链表,这个空闲链表记录着堆空间上所有未被使用的空间,每次调用malloc函数时,就从该链表上找出一块足够大的空间返回给调用者并将其从空闲链表上删除。如果找不到足够大的空间,malloc就调用sbrk函数来增大brk变量,以增大堆空间。brk是内核为每个进程所维护的一个变量,记录着堆的边界。
    free函数则与malloc相反,它直接将所分配的内存添加到空闲链表当中即可。但要注意的是,free函数必须要检查所释放的空间是否是由malloc/calloc/realloc函数分配的,如果不是,则触发一个异常。

    展开全文
  • 2、从下列关于虚拟存储器的论述中,选出一条正确的论述。要求作业在运行前,必须全部装入内存,且在运行过程中也必须一直驻留内存(✔)要求作业在运行前,不必全部装入内存,且在运行过程中不必一直驻留内存要求...

    719d641df07a2ca889c16e33099130a2.png

    1、现代操作系统中,提高内存利用率主要是通过(A)功能实现的。

    A:(1)对换(2)内存保护(3)地址映射(4)虚拟存储器

    分析:

    对换是提高处理机利用率和系统吞吐量。


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

    1. 要求作业在运行前,必须全部装入内存,且在运行过程中也必须一直驻留内存(✔)
    2. 要求作业在运行前,不必全部装入内存,且在运行过程中不必一直驻留内存
    3. 要求作业在运行前,不必全部装入内存,但在运行过程中必须一直驻留内存
    4. 要求作业在运行前,必须全部装入内存,但在运行过程中不必一直驻留内存

    3、虚拟存储器最基本的特征是(A);该特征主要是基于(B);实现虚拟存储器最关键的技术是(C)。

    A:(1)一次性(2)多次性(3)交换性(4)离散性(5)驻留性。

    B:(1)计算机的高速性(2)大容量的内存(3)大容量的硬盘(4)循环性原理(5)局部性原理

    C:(1)内存分配(2)置换算法(3)请求调页(段)(4)对换空间管理。、

    分析:

    虚拟存储器的基本特征是(多次性)和(对换性),因而决定了实现虚拟存储器的关键技术是(请求调页/段)和(页/段置换)。


    4、虚拟存储器管理系统的基础是程序的局部性理论。此理论的基本含义是(A)。局部性有两种表现形式,时间局部性和(B),它们的意义分别是(C)和(D)。根据局部性理论,Denning提出了(E)。

    A,B:(1)代码的顺序执行(2)程序执行时对主存的访问是不均匀的(3)数据的局部性:(4)变量的连续访问(5)指令的局部性(6)空间的局部性。

    C,D:(1)最近被访问的单元,很可能在不久的将来还要被访问(2)最近被访问的单元,很可能它附近的单元也即将被访问(3)结构化程序设计,很少出现转移语句(4)程序中循环语句的执行时间一般很长(5)程序中使用的数据局部于各子程序。

    E:(1)chache结构的思想(2)先进先出(FIFO页面置换算法)(3)工作集理论(4)最近最久未用(LRU页面置换算法)。

    答:

    A:(2)程序执行时对主存的访问是不均匀的

    B:(6)空间的局部性

    C:(1)最近被访问的单元,很可能在不久的将来还要被访问

    D:(2)最近被访问的单元,很可能它附近的单元也即将被访问

    E:(3)工作集理论


    5、实现虚拟存储器的目的是(A);下列方式中,(B)不适用于实现虚拟存储器。

    A:(1)实现内存保护(2)实现程序浮动(3)扩充辅存容量(4)扩充主存容量

    B:(1)可变分区管理(2)页式存储管理(3)段式存储管理(4)段页式存储管理。

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

    1. 在请求段页式系统中,以页为单位管理用户的虚空间,以段为单位管理内存空间(×)
    2. 在请求段页式系统中,以段为单位管理用户的虚空间,以页为单位管理内存空间(✔)
    3. 为提高请求分页系统中内存的利用率,允许用户使用不同大小的页面(×,页面大小相同)
    4. 在虚拟存储器中,为了能让更多的作业同时运行,通常只应装入10%~30%的作业后便启动运行
    5. 实现虚拟存储器的最常用的算法,是最佳适应算法OPT(×,OPT是理想的算法,现实并不存在)
    6. 由于有了虚拟存储器,于是允许用户使用比内存更大的地址空间(✔)

    7、一个计算机系统的虚拟存储器的最大容量是由(A)确定的,其实际容量是由(B)确定的。

    A:(1)计算机字长(2)内存容量(3)内存和硬盘容量之和(4)计算机的地址结构

    B:(1)计算机字长(2)内存容量(3)内存和硬盘容量之和(4)计算机的地址结构。

    8、在请求分页系统的页表中增加了若干项,其中状态位供(A)参考;修改位供(B)时参考;访问位供(C)参考;外存始址供(D)参考。

    A:(1)分配页面(2)置换算法(3)程序访问(4)换出页面(5)调入页面。

    B:(1)分配页面(2)置换算法(3)程序访问(4)换出页面(5)调入页面。

    C:(1)分配页面(2)置换算法(3)程序访问(4)换出页面(5)调入页面。

    D:(1)分配页面(2)置换算法(3)程序访问(4)换出页面(5)调入页面

    74eb2fb12f080608820e39f21644fb74.png

    9、在请求调页系统中,若逻辑地址中的页号超过页表控制寄存器中的页表长度,则会引起(A);否则,若所需的页不在内存中,则会引起(B);在(B)处理完成后,进程将执行(C)指令。

    A:(1)输入输出中断(2)时钟中断(3)越界中断(4)缺页中断。

    B:(1)输入输出中断(2)时钟中断(3)越界中断(4)缺页中断

    C:(1)被中断指令前的那一条(2)被中断的那一条(3)被中断指令后的那一条(4)启动时的第一条。


    10、在请求调页系统中,内存分配有(A)和(B)两种策略,(A)的缺点是可能导致频繁地出现缺页中断而造成CPU利用率下降。

    A:(1)首次适应(2)最佳适应(3)固定分配(4)可变分配

    B:(1)首次适应(2)最佳适应(3)固定分配(4)可变分配


    11、在请求调页系统中有着多种置换算法:

    1. 选择最先进入内存的页面予以淘汰的算法称为(A)
    2. 选择在以后不再使用的页面予以淘汰的算法称为(B)
    3. 选择自上次访问以来所经历时间最长的页面予以淘汰的算法称为(C)
    4. 选择自某时刻开始以来,访问次数最少的页面予以淘汰的算法称为(D)

    A:(1)FIFO算法(2)OPT算法(3)LRU算法(4)NRU算法(5)LFU算法。

    B:(1)FIFO算法(2)OPT算法(3)LRU算法(4)NRU算法(5)LFU算法。

    C:(1)FIFO算法(2)OPT算法(3)LRU算法(4)NRU算法(5)LFU算法。

    D:(1)FIFO算法(2)OPT算法(3)LRU算法(4)NRU算法(5)LFU算法


    12、在页面置换算法中,存在 Belady现象的算法是(A);其中,Belady现象是指(B)。

    A:(1)OPT(2)FIFO(3)LRU(4)NRU

    B:(1)淘汰页很可能是一个马上要用的页(2)当分配到的内存块数增加时,缺页中断的次数有可能反而增加(3)缺页次数与系统的页面大小正相关(4)引起系统抖动的现象。


    13、在请求调页系统中,凡未装入过内存的页都应从(A)调入;已运行过的页主要是从(B)调入,有时也从(C)调入。

    A:(1)系统区(2)文件区(3)对换区(4)页面缓冲池。

    B:(1)系统区(2)文件区(3)对换区(4)页面缓冲池。

    C:(1)系统区(2)文件区(3)对换区(4)页面缓冲池


    14、某虚拟存储器的用户编程空间共32个页面,每页1KB,主存为16KB。假定某时刻用户页表中已调入主存的页面的虚页号和物理页号对照表如表所示。

    f6479dce7fb24531dcbd44f1447d6584.png

    则与下面十六进制虚地址相对应的物理地址为(如果主存中找不到,即为页失效):

    8508c0d5b3b267b8bd9764870f086a09.png

    虚拟存储器的功能由(C)完成。在虚拟存储器中,采用(D)提高(E)的速度。

    A:(1)页失效(2)1E5C(3)2A5C(4)165C(5)125C

    B:(1)页失效(2)1E5C(3)2A5C(4)165C(5)125C。

    C:(1)硬件(2)软件(3)软硬件结合

    D:(1)高速辅助存储器(2)高速光盘存储器(3)快速通道(4)高速缓冲存储器

    E:(1)连接编辑(2)虚空间分配(3)动态地址翻译(4)动态链接。

    分析:

    本题是一道关于页式存储系统的问题,由于题目已经告诉我们,每个页的大小为1 KB,然而1KB=2^10B,所以页内地址有10位

    把虚地址0A5C(H)化为二进制为1010 0101 1100(B),其中低10位10 0101 1100 (B)为页内地址,余下的高2位10(B)为页号。二进制的10等于十进制的2,查虚页号和物理页号对照表,可知物理页号为4,即二进制的100,所以物理地址为100 10 0101 1100,化为十六进制为125C(H)。

    用同样的方法,我们求得1A5C(H)的页号为6,但此时的虚页号和物理页号对照表中没有虚页号6,所以会产生页失效错误


    2cc62b317f8ab76b5a675fccc3ee2a44.png

    44db2365e763b53b64ecbe571662adc2.png

    b58e168d406eda26c230e6ed3191ebd7.png

    8f5fc8115af967b107bf55f2349a1bc3.png

    1e11c448c228dfa913221723a41435ed.png

    4a85306f3dce4a45fb9d07303d0f7e43.png

    5c9eab1d19364755776b619d2a2eee9a.png

    3a971144f16af21c204e9f28f3fddf6a.png

    19.、Linux采用(A)存储管理方式。

    A:(1)动态分区(2)纯分页(3)请求分页(4)请求分段。


    20、Linux内核的页面分配程序采用(A)算法进行页框的分配和回收。

    A:(1)首次适应(2)最佳适应(3)伙伴系统(4)循环首次适应。


    返回目录:

    Chilan Yuk:操作系统期末刷题目录zhuanlan.zhihu.com
    1525650edb8ac4dda10387f2430e9389.png
    展开全文
  • 这次要讲的不是辅存,但是虚拟存储器却必须在辅存的基础是上实现,而关于辅存相关的内容将在后续的课程中展开。 主要内容: 虚拟存储器的基本概念 虚拟存储器的虚地址变换 替换算法 一、什么是虚拟存储器 虚拟...
  • 虚拟存储器映射图解 图解详细解释 ???? 页式虚拟存储系统 ☁️ 页式虚拟存储系统中 虚拟地址空间会被划分为 等长大小的页,这个页被称为 逻辑页, 我的理解就是 假设它存在, 假设我们有这么一块虚拟的空间, 这些空间...
  • 本篇是关于计算机虚拟存储器的一点琐碎记录。概述为了更加有效地管理存储器并且少出错,现代系统提供了一种对主存的抽象概念,叫做虚拟存储器(VM)。目的有效地管理存储器。为不同进程合理的分配存储器资源,为每个...
  • 虚拟存储器的核心思想很独到,在看了前一篇文章中提到的书中才领略到了它的魅力,硬件的东西比较多,但是也绝对可以提高你的软件功力,而且毫无疑问。这篇文章算是读书笔记。 PS:发现文中有很多的英文简写,为了...
  • 关于虚拟内存这部分的内容,我没有选择课本来进行整理,课本在这一块探究的并不是很深,所以打算从《深入理解计算机系统》的第九章来进行整理,内容仅是一些基础理论,没有涉及到案例的探究。 参考整理自...
  • 其实学习学习硬件知识还是很有意思的,我的这篇论文报告主要关于我个人比较感兴趣的虚拟存储技术,许多段落摘自英文中文的维基百科和自己浅显的理解,只有极少的内容来自知网上的论文,算是一种投机取巧吧。...
  • 这是一个关于存储器虚拟实验台,主要由input unit,main men,switch unit,address unit,bus unit ,w/r unit,state unit 部分组成,其中输入灯,数据灯,地址灯变化尤为重要。通过此三部分灯的变化来...
  • 关于CPU虚拟储存器

    2019-12-08 10:49:23
    虚拟存储器是一种设计技术,用于提供比在计算机系统中实际可以使用的物理主存储器大得多的存储空间。 使用者会产生一种错觉,好象在程序中可以使用非常大的物理存储空间。使用虚拟存储器的好处是:一个程序可以很...
  • 存储器分页管理机制

    2013-06-26 14:32:22
    三页级保护和虚拟存储器支持 页级保护对虚拟存储器的支持 四页异常五演示分页机制的实例实例十 演示步骤和源程序清单关于实例十的说明 1部分演示代码的移动2页映射表的初始化3启动分页管理机制4关闭分页...
  • 之前我们介绍过关于程序加载的详细内容,我们知道在其加载执行之前要对程序进行存储器映射,Unix进程可以使用mmap函数来创建新的虚拟存储器区域,并将对象映射到这些区域。 mmap函数要求内核创建一个新的虚拟存储器...
  • CSI-S4:动态存储器分配-malloc与GC

    千次阅读 2014-04-14 13:43:34
     之前我们介绍过关于程序加载的详细内容,我们知道在其加载执行之前要对程序进行存储器映射,Unix进程可以使用mmap函数来创建新的虚拟存储器区域,并将对象映射到这些区域。 Mmap函数要求内核创建一个新的虚拟...
  • 先摘抄维基百科的一段关于虚拟内存的解释 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分...
  • 内核虚拟存储器(用户代码不可见) (向低地址扩展) 共享库的存储器映射区域(例如标准函数:printf()) 运行时堆(malloc创建) -> (向高地址扩展) 读写数据 只读的代码和数据 未用 自左而右地址递增: 未用 | ...
  • 虚拟内存,映射,分页机制

    千次阅读 2012-07-31 19:56:19
    这是我找到的关于虚拟内存和分页机制的我个人比较容易理解的一篇文章。 虚拟存储器的思想是程序、数据和堆栈的大小都有可能超过物理内存大小,由操作系统把当前使用的放在内存,而不需要的放在磁盘。   而绝大...
  • 这是我找到的关于虚拟内存和分页机制的我个人比较容易理解的一篇文章。 虚拟存储器的思想是程序、数据和堆栈的大小都有可能超过物理内存大小,由操作系统把当前使用的放在内存,而不需要的放在磁盘。   而绝大...
  • 关于内存那点事存储器:存储数据器件外存外存又叫外部存储器,长期存放数据,掉电不丢失数据常见的外存设备:硬盘、flash、rom、u 盘、光盘、磁带内存内存又叫内部存储器,暂时存放数据,掉电数据丢失 常见的内存...
  • 虚拟内存

    2015-10-19 22:47:00
    1. 关于虚拟内存 虚拟内存又称虚拟存储器(Virtual Memory)。它是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存...
  • 关于学习MMU的一点感想

    千次阅读 2015-11-04 22:42:28
    在一个虚拟存储器系统中,虚拟内存通常作为固定的空间或动态的空间被划分成多个部分,在固定的空间里面,映射在页表中的转换数据在普通操作中步伐发生变化,在动态空间内,虚拟内存到物理存储器之间的映射关
  • 这是我找到的关于虚拟内存和分页机制的我个人比较容易理解的一篇文章。  虚拟存储器的思想是程序、数据和堆栈的大小都有可能超过物理内存大小,由操作系统把当前使用的放在内存,而不需要的放在磁盘。而绝大部分...
  • 什么是虚拟存储器

空空如也

空空如也

1 2 3 4 5 6
收藏数 111
精华内容 44
关键字:

关于虚拟存储器