首页 > 编程知识 正文

计算机组成原理唐朔飞,计算机组成原理教材

时间:2023-05-06 14:56:46 阅读:116663 作者:1502

虚拟存储器的含义

问题:尽管计算机系统软件和APP应用程序软件的功能得到了增强,但一些程序需要较大的内存才能运行,而计算机本身的物理内存容量相对较小此外,多用户多任务系统还要求多个用户或多个任务共享所有主内存并同时运行多个程序。 编写程序时不知道这些同时运行的程序占用了实际内存的哪个部分,必须在程序运行之前动态分配。

解决问题:程序运行时,分配到各程序的一定执行区域,由地址转换单元(硬件或软件)将编程时的地址转换为实际存储器的物理地址。 如果分配的内存不足,则只转入当前正在运行或即将运行的程序块(或数据块),其馀部分临时驻留在辅助存储器中。 在执行某项大工作时,如果其中一些地址空间在主存储器中,另一些在副存储器中,而访问的信息不在主存储器中,则操作系统而不是程序员安排I/O指令,以从子存储器中检索信息有效地说,似乎为用户提供了内存容量远大于实际主内存的内存,用户无需考虑编写的程序是否可以放入主内存或放在哪里等。 将该内存称为虚拟存储器

虚拟存储是非常大容量存储的逻辑模型,而不是实际的物理存储。 它利用磁盘等辅助存储装置来扩大主存储容量,用于更大的程序和更多的程序。 虚拟内存是指主存外存层,它透明地为用户提供比实际主存空间大得多的程序地址空间。

实地址和虚地址

用户创建程序时使用的地址(虚拟地址由编译器生成)为虚地址或逻辑地址,对应的存储区域为虚存空间或逻辑地址空间; 计算机的物理内存访问地址称为实地址或物理地址,相应的存储空间称为物理存储空间或主存空间。 将程序从虚拟地址转换为实际地址的过程转换为程序的再定位。

特点:

(1)每个程序的虚拟地址空间可以远远大于或小于实际地址空间。

)有了虚拟机制,APP应用程序可以透明地使用整个虚拟内存空间。

)3)每个程序可以有虚拟内存,其次存储容量和访问速度接近主存储。

cache与虚存的异同

相同点:

)这两个原因都是为了在存储系统性能接近高速存储器时提高存储系统的性能价格比。

)2)均基于程序的局部原理。 一个程序运行时,只使用程序和数据的很小一部分。 只要将这一部分放入比较高速的存储器中即可,其他大部分放入速度低、廉价、容量大的存储器中,就可以实现低价格且比较高速的运算。

不同点:

)1)虚拟内存未命中的性能损失远大于缓存系统未命中的损失。 因为主存和缓存的速度相差5~10倍,外存和主存的速度相差几千倍。

) cache主要解决主存和CPU速度差的问题,而虚存主要解决存储容量问题。

)3) CPU、cache和主内存之间有直接访问路径,cache不命中时可以直接访问主内存。 另一方面,在虚拟存储器依赖的辅助存储器和CPU之间不存在直接的数据路径,主存储器不命中的情况下只能通过调整页面来解决,CPU最终必须访问主存储器。

) cache的管理完全由硬件完成,对系统程序员和APP应用程序程序员透明。 另一方面,虚拟存储管理由软件(操作系统)和硬件共同进行,虚拟存储管理对于实现存储管理的程序员来说是不透明的(段管理和段页面管理对于APP应用程序程序员来说是“半透明”)。

页式虚拟存储器

-页式虚拟存储器的地址映射过程

其他:

)1)为了节约页面表自身占用的主存储空间,一些系统将页面表存储在虚拟存储中,因此页面表自身也进行分页。 一个进程运行时,页面表的一部分存储在主存储器中,另一部分存储在子存储器中。

)2)在其他系统中,二级页表结构每个进程都有一个页面目录表,每个表条目都指向一个页面表。 因此,如果页面目录表的长度(条目数)为m,每个页面表的最大长度(条目数)为n,则进程可以有最多mXn个页面。

)3)对于长页表的系统,还可以使用反向页表将物理页码反向映射到逻辑页码。 页表中每个物理页码都有一个表条目,表条目的内容包含与该物理页相对应的逻辑页码。 访问时,按逻辑页码在反向页面表中逐个搜索。 如果找到匹配的页,则将逻辑页码替换为表条目中的物理页。 如果没有匹配的表条目,则页面不在主内存中。 这种方案的优点是大大缩小了页面表所占的空间,但其代价是需要检索反向页面表,这需要花费时间。 有些系统是用散列(执着的翅膀)表改进的。

转换后援缓冲器(TLB)

问题:由于页表通常存在于主内存中,因此即使逻辑页已经存在于主内存中,也必须在一次访问中至少访问两次物理内存。

这将使虚拟存储器的存取时间加倍。

解决问题:为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃的部分存放在高速存储器中。这个专用于页表缓存的高速存储器部件通常称为转换后援缓冲器(TLB),又称为快表。而保存在主存中的完整页表则称为慢表快表的作用是加快地址变换。

内页表和外页表

内页表:虚地址到主存物理地址的变换表

外页表:虚地址与辅存地址之间的变换表,常常放在辅存中。需要时可调入主存。当主存不命中时,由存储管理部件向CPU发出”缺页中断“,进行调页操作。

虚拟存储器、TLB和Cache的协同操作

在最好额情况下,虚拟地址由TLB进行转换,然后被送到Cache,找到正确的数据并取回处理器。在最坏的情况下,一次访问会在存储器层次结构的三个组成部分都产生缺失:TLB、页表和Cache。

页式虚拟存储器的优缺点:

优点:页面的起点和终点地址是固定的,方便编造页表,新页调入主存也很容易掌握,比段式空间浪费小,易于管理,不存在外碎片。

缺点:页长与程序的逻辑大小不相关,处理、保护和共享都没有段式方便。

段式虚拟存储器

段:按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和炙热的画板等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。

段表的每一个表项对应一个段。每个表项至少包含下面三个字段:
(1)有效位:该段是否已经调入实存

(2)段起位:在该段已经调入实存的情况下,该段在实存中的首地址

(3)段长:记录该段的实际长度。(目的是为了保证访问某段的地址空间时,段内地址不会超出该段长度导致地址越界而破坏其他段)

段表本身也是段,一般驻留在主存中。

特点:分段通常对程序员是可见的,因而分段为组织程序和数据提供了方便。段的长度是不固定的。

段式虚拟存储器优缺点:
优点:

(1)段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。

(2)段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。

缺点:

(1)主存空间分配比较麻烦。

(2)容易在段间留下许多外碎片,造成存储空间利用率降低。

(3)由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚地址和实地址的最低若干二进制位作为段内偏移量,并与段号进行直接拼接,必须用加法操作通过段地址与段内偏移量的求和运算求得物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。

段页式虚拟存储器

含义:段式虚拟存储器和页式虚拟存储器的结合。

第一步:实存被等分成页。

第二步,先段后页:每个程序则先按逻辑结构分段,每段再按照实存的页大小分页,程序按页进行调入和调出操作,但可按段进行编程、保护和共享。

每道程序均通过一个段表和多个页表进行两级再定位。段表中的每一个表项对应一个段,每个表项有一个指针指向该段的页表。页表则指明该段各页再主存中的位置,以及是否已装入、是否已修改等状态信息。

 

段页式的优缺点

优点:结合了段式和页式的优点。

缺点:在由虚地址向主存地址的映射过程中需要多次查表,需要花费时间,因而实现复杂度较高。

虚存的替换算法与cache的替换算法区别:

(1)cache的替换全部靠硬件实现,而虚拟存储器的替换算法是有操作系统的支持。

(2)虚存缺页对系统性能的影响比cache未命中要大得多。(因为调页需要访问辅存,并且要进行任务切换)

(3)虚存页面替换的选择余地很大,属于一个进程的页面都可替换。

对于将被替换出去的页面,假如该页面调入主存后没有被修改,就不必进行处理。否则,则就把该页重新写入外存,以保证外存中数据的正确性。为此,在页表的每一行应设置修改位。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。