虚拟存储管理技术概念_虚拟内存管理

虚拟存储管理技术概念_虚拟内存管理页内虚拟存储器页的大小是固定的段式虚拟存储器段的大小不固定段页式虚拟存储器把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表。虚拟地址:段号+段内页号+页内地址…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、传统存储管理方式的特征、缺点


在这里插入图片描述

二、虚拟存储器的定义


主存和辅存共同构成了虚拟存储器。对于应用程序员来说,虚拟存储器是透明的。虚拟存储器即对磁盘存储器进行抽象,将磁盘存储器组织成一个连续的存储器,将主存看成是磁盘存储器的一个高速缓存。因此,虚拟存储器具有主存的速度和辅存的容量,提高了存储系统的性价比。
在这里插入图片描述
在这里插入图片描述

三、访问过程的步骤

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

(2)若已在主存中(装入位为1),则通过地址变换,得到一个主存地址,CPU通过该主存地址访问主存指示的实际单元(CPU访问:即以主存地址访问“Cache-主存”体系,如果该主存地址在Cache中,则访问Cache;如果不在Cache中,则访问主存,并把该字所在的块一次性地从主存调入Cache。)

(3)若不在主存中(装入位为0),则把包含这个字的一页或一段调入主存后再由CPU访问。若主存已满,则才采用替换算法置换主存中的一页或一段。

四、虚拟内存的特征


在这里插入图片描述

五、虚拟存储技术的实现


在这里插入图片描述

(1)请求分页存储管理


虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。

  • 虚拟地址:分为两个字段,分别是虚页号和页内地址

  • 页表:是一张存放在主存中的虚页号和实页号的对照表,用来实现虚地址和实地址之间的转换。

  • 页表基址寄存器:存放当前运行程序的页表的起始地址,它和虚页号拼接成页表项地址,可以找到对应的页表项。

  • 页表项:分为三个字段,分别是虚页号、实页号和装入位。(装入位为1,表示该页面已在主存中将对应的实页号和虚地址中的页内地址拼接,得到完整的实地址;装入位为0,表示该页面不在主存中,此时要启动 I/O 系统,将该页从辅存调入主存后再供 CPU使用)

虚地址到实地址的变换过程:

  1. 虚页号和页表起始地址拼接 = 页表项地址
  2. 页表项地址 → 页表 → 实页号
  3. 实页号和页内地址拼接 = 主存实地址

优点:页面的长度固定,页表简单,调入方便。

缺点:由于程序不可能是页面的整数倍,最后一页的零头将无法利用而造成浪费。

在这里插入图片描述

(2)请求分段存储管理


段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。

  • 虚拟地址:分为两个字段,分别是虚页号和页内地址

  • 段表:是一张存放在主存中的段号和段起点的对照表,用来实现虚地址和实地址之间的转换。

  • 段表基址寄存器:存放当前运行程序的段表的起始地址,它和段号拼接成段表地址,可以找到对应的段表项。

  • 段表项:分为四个字段,分别是段号、段起点、段长和装入位。(装入位为1,表示该段已在主存中将对应的段起点和虚地址中的段内地址相加,得到完整的实地址;装入位为0,表示该段不在主存中,此时要启动 I/O 系统,将该段从辅存调入主存后再供 CPU使用)

虚地址到实地址的变换过程:

  1. 段号和段表起始地址拼接 = 段表项地址
  2. 段表地址 → 段表 → 段起点
  3. 段起点+段内地址 = 主存实地址

优点:段的分界和程序的自然分界相对应,具有逻辑独立性

缺点:段长度可变,容易在段间留下碎片,不好利用,造成浪费
在这里插入图片描述

(3)请求段页式存储管理


把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。
每个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。

  • 虚拟地址:分为三个字段,段号+段内页号+页内地址

虚地址到实地址的变换过程:

  1. 段号和段表起始地址拼接 = 段表地址
  2. 段表地址 → 段表 → 页表起始地址
  3. 页表起始地址和段内页号拼接 = 页表项地址
  4. 页表项地址 → 页表 → 实页号
  5. 实页号和页内地址拼接 = 主存实地址

优点:兼具页式和段式存储器的优点,可以按段实现共享和保护

缺点:在地址变换过程中需要两次查表,系统开销大

六、快表(TLB)


查找时,快表和慢表同时进行,块表由于根据内容指定地址,一般使用相联存储器。若快表中有此逻辑页号,则能很快地找到对应的物理页号,送入实主存地址寄存器,并使慢表的查找作废,从而就能做到虽采用虚拟存储器但访问主存速度几乎没有下降。
在这里插入图片描述

七、虚拟存储器和Cache的比较


(1)相同之处

  1. 最终目标都是为了提高系统性能,两者都有容量、速度、价格的梯度
  2. 都把数据划分为小信息块,并作为基本的传递单位,虚存系统的信息块更大
  3. 都有地址的映射、替换算法、更新策略等问题
  4. 依据程序访问的局部性原理应用“快速缓存的思想”,将相对活跃的数据放在相对高速的部件中

(2)不同之处

  1. Cache主要解决系统速度、而虚拟存储器却是为了解决主存容量
  2. Cache全由硬件实现,是硬件存储器,对所有程序员透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,但对应用程序员透明。
  3. 对于不命中性能影响,虚拟存储器胸痛不命中时对系统性能影响更大
  4. CPU与Cache和主存都建立了直接访问的通路,而辅存与CPU没有直接通路。也就是说,在Cache不命中时主存能和CPU直接通信,同时将数据调入Cache,而虚拟存储器系统不命中时,只能先由硬盘调入主存,而不能直接和CPU通信。

八、虚拟存储器与覆盖技术的比较


(1)不同之处

  1. 覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。
  2. 覆盖技术中的覆盖段由程序员设计,且要求覆盖段中的各个覆盖具有相对独立性,不存在直接联系或相互交叉访问;而虚拟存储技术对用户的程序段没有这种要求。

九、虚拟存储器与交换技术的比较


(1)不同之处

  1. 都要在内存与外存之间交换信息。

(2)相同之处

  1. 交换技术调入/调出整个进程,因此一个进程的大小要受内存容量大小的限制:而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段,而不是整个进程,从而使得进程的地址映射具有更大的灵活性
  2. 虚拟存储器允许进程的大小比可用的内存空间大。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189383.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C# ManualResetEvent

    C# ManualResetEvent原文链接http://dotnetpattern.com/threading-manualreseteventManualResetEvent和AutoResetEvent一样,是另外一种.NET线程同步技术。ManualResetEvent被用于在两个或多个线程间进行线程信号发送。多个线程可以通过调用ManualResetEvent对象的WaitOne方法进入等待或阻塞状态。当…

    2022年7月13日
    19
  • ArrayList扩容后原有数组是如何处理的?「建议收藏」

    ArrayList扩容后原有数组是如何处理的?「建议收藏」查看源码可知道ArrayList扩容是调的Sytem.arrayCopy方法最终查看arraycopy方法发现调用的是c的本地方法:上网查看了下c语言的数组扩容:c语言使用free(oldarray)来释放原数组的内存。…

    2022年5月29日
    48
  • [教程] 《Mysql 实战 45 讲》[通俗易懂]

    [教程] 《Mysql 实战 45 讲》

    2022年2月17日
    134
  • DDOS攻击工具有哪些?怎么防御DDOS攻击?

    DDOS攻击工具有哪些?怎么防御DDOS攻击?互联网的发展给大家带来的很多的便利,也有很多的业务机会,带来很多利益,但凡事都有两面性,有利益也会有危害,例如黑客会通过互联网进行攻击,导致企业损失。DDOS就是黑客常用的攻击手段,也是企业惧怕的一件事,如果真的不小心遭受到DDOS攻击,那么后果真的是会难以想象。黑客一般是会通过软件进行攻击,那么你知道常用的DDOS攻击工具有哪些?1、卢瓦(LOIC)卢瓦在黑客领域就很有知名度,也是他们常用的DOS攻击工具之一,这个工具经常被黑客利用,对很多的大公司进行网络攻击。卢瓦能使用单个用户执行DOS攻击

    2022年7月27日
    18
  • vs2017当前页面的脚本发生错误_win10当前页面脚本发生错误

    vs2017当前页面的脚本发生错误_win10当前页面脚本发生错误今天使用金山卫士对IE8进行组件升级,此后再此使用VS2008查看项目界面中的控件变量类型,或者添加变量,都弹出“当前页面脚本错误”。在网上进行查找。解决办法如下:1、进入到注册表编辑器。2、按照以下路径“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet  Settings\Zones”查看是否存在

    2022年8月30日
    1
  • SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]

    SELinux系列(五)——SELinux工作模式设置(getenforce、setenforce和sestatus命令)[通俗易懂]除了通过配置文件可以对SELinux进行工作模式的修改之外,还可以使用命令查看和修改SELinux工作模式。首先,查看系统当前SELinux的工作模式,可以使用getenforce命令;而如果想要查看配置文件中的当前模式和模式设置,可以使用sestatus命令,下面的代码显示了这两个命令:[root@localhost~]#getenforce#查询SELinux的运行模式Enforcing#当前的SELinux是强制模式[root@localhost~]#s.

    2022年6月27日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号