采用虚拟存储技术_虚拟存储管理

采用虚拟存储技术_虚拟存储管理虚拟存储技术(VIRTUALMEMORY)所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。虚拟地址空间—–分配给进程的虚拟内存虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。

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

Jetbrains全系列IDE稳定放心使用

虚拟存储技术(VIRTUAL MEMORY)

   所谓的虚拟存储技术是指:当进程运行时,先将其一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不存在内存中时,由操作系统自动完成将它们从磁盘调入内存的工作。

虚拟地址空间—–分配给进程的虚拟内存
虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。


存储器的层次结构

这里写图片描述


虚存 与 存储体系

  • 把内存和磁盘有机地结合起来使用,从而得到一个容量很大的“内存”,即虚存。

  • 虚存是对内存的抽象,构建在存储体系之上,由操作系统协调个存储器的使用

  • 虚存提供了一个比物理内存空间大得多的地址空间

    -send & receive 原语


地址保护

  • 确保每个进程有独立的地址空间
  • 确保进程访问合法的地址空间,防止地址越界
    这里写图片描述
    注意: 上图中的基地址寄存器和界限寄存器操作系统通过特殊的特权指令加载
  • 确保进程的操作合法

虚拟页式(PAGING)

**虚拟存储技术 + 页式存储管理方案
-> 虚拟页式存储管理系统
主要包括:1. 请求调页(demand paging) 2. 预先调页(prepaging)

基本思想

  • 进程开始运行之前,不是装入全部页面,二是装入一个或零个页面

  • 之后,根据进程运行需要,动态装入其他页面

  • 当内存空间已满,而有需要装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面

    其实就是以CPU时间和磁盘空间换取昂贵的内存空间,这是操作系统中的资源转换技术


页表与页表项的设计

这里写图片描述

页表表项设计

  • 页表由页表项组成
  • 页框号、有效位、访问位、修改位、保护位
    • 页框号(内存块号、物理页面号、页帧号)
    • 有效位(驻留位、中断位):表示该页是内存还是磁盘
    • 访问位:引用位
    • 修改位:此页在内存中是否修改过
    • 保护位:读/可读写

通常,页表项是硬件设计


关于页表

  • 32位虚拟地址空间的页表规模

    • 如果页面大小为4k;页表项大小为4字节,则一个进程地址空间有2^20页,其页表需要占1024页(页表页)
  • 64位虚拟地址空间
    页面大小为4k; 页表项大小为8字节,则一个进程的页表规模:就达到了 32,000TB

  • 页表页在内存中若不连续存放,则需要引入页表页的地址索引表-> 页目录(Page Directory)

    这里写图片描述
    注意 二级页表可以表示4G的虚拟地址空间

这里写图片描述


引入反转(倒排)页表

  • 地址转换
    从虚拟地址空间出发: 虚拟地址->查页表->得到页框号->形成物理地址
    每个进程一张页表
  • 解决思路
    • 从物理地址出发,系统建立一张页表
    • 页表项记录进程i的某虚拟地址(虚页号)与页框号的映射关系
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • pytest运行_安卓手机缓存怎么清理

    pytest运行_安卓手机缓存怎么清理前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月30日
    7
  • Windows环境下搭建SVN服务器

    Windows环境下搭建SVN服务器如要转载,请注明来源,小石头的博客: http://blog.csdn.net/lu1024188315使用 VisualSVNServer来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多,下面就看看详细的说明。VisualSVNServer的下载地址如下,是免费的,随意不必有顾虑http://www.visua

    2022年7月19日
    19
  • Apache POI使用详解[通俗易懂]

    Apache POI使用详解[通俗易懂]一:简介开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache的poi,另一个是JavaExcelApachePOI简介是用Java编写的免费开源的跨平台的JavaAPI,ApachePOI提供API给Java程式对MicrosoftOffice(Excel、WORD、PowerPoint、Visio等

    2022年6月28日
    36
  • JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)「建议收藏」

    JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)「建议收藏」JavaWeb——ServletTomcat工作机制动画演示(点击动图可全屏观看)什么是ServletServlet(ServerApplet),全称JavaServlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web…

    2022年4月27日
    42
  • 堆和栈_数据结构堆和栈的区别

    堆和栈_数据结构堆和栈的区别堆和栈

    2022年4月20日
    64
  • python装饰器详解_python常用装饰器

    python装饰器详解_python常用装饰器装饰器装饰器放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上。和这个函数绑定在一起。在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数做为参数传入它头顶上这顶帽子,

    2022年7月29日
    7

发表回复

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

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