存储模型之虚拟存储技术

虚拟存储技术(VIRTUAL MEMORY)

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

虚拟地址空间—–分配给进程的虚拟内存

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


存储器的层次结构


虚存 与 存储体系

  • 把内存和磁盘有机地结合起来使用,从而得到一个容量很大的“内存”,即虚存。
  • 虚存是对内存的抽象,构建在存储体系之上,由操作系统协调个存储器的使用
  • 虚存提供了一个比物理内存空间大得多的地址空间


地址保护

  • 确保每个进程有独立的地址空间
  • 确保进程访问合法的地址空间,防止地址越界

    注意: 上图中的基地址寄存器和界限寄存器操作系统通过特殊的特权指令加载

  • 确保进程的操作合法

虚拟页式(PAGING)

**虚拟存储技术 + 页式存储管理方案

-> 虚拟页式存储管理系统

主要包括:1. 请求调页(demand paging) 2. 预先调页(prepaging)

基本思想

  • 进程开始运行之前,不是装入全部页面,二是装入一个或零个页面
  • 之后,根据进程运行需要,动态装入其他页面
  • 当内存空间已满,而有需要装入新的页面时,则根据某种算法置换内存中的某个页面,以便装入新的页面

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


页表与页表项的设计

页表表项设计

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

通常,页表项是硬件设计


关于页表

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

    • 如果页面大小为4k;页表项大小为4字节,则一个进程地址空间有2^20页,其页表需要占1024页(页表页)
  • 64位虚拟地址空间

    -页面大小为4k; 页表项大小为8字节,则一个进程的页表规模:就达到了 32,000TB

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

    注意 二级页表可以表示4G的虚拟地址空间


引入反转(倒排)页表

  • 地址转换

    从虚拟地址空间出发: 虚拟地址->查页表->得到页框号->形成物理地址

    每个进程一张页表

  • 解决思路
    • 从物理地址出发,系统建立一张页表
    • 页表项记录进程i的某虚拟地址(虚页号)与页框号的映射关系
时间: 2024-10-13 20:57:11

存储模型之虚拟存储技术的相关文章

存储模型(下)

程序的局部性: 程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域 时间局部性一条指令的一次执行和下次执行,一个数据的一次访问和下次访问都集中在一个较短时期内空间局部性当前指令和邻近的几条指令,当前访问的数据和邻近的几个数据都集中在一个较小区域内分支局部性一条跳转指令的两次执行,很可能跳到相同的内存位置 例子: 页面大小为4K,分配给每个进程的物理页面数为1.在一个进程中,定义了如下的二维数组int A[1024][1024],该数组按行存放在内存,每一行放在

Bitcask存储模型

----<大规模分布式存储系统:原理解析与架构实战>读书笔记 近期一直在分析OceanBase的源代码,恰巧碰到了OceanBase的核心开发人员的新作<大规模分布式存储系统:原理解析与架构实战>.看完样章后决定入手,果然物有所值. 对于准备学习分布式的同学,这是一本不错的书籍,相对系统,全面的介绍了分布式的相关技术和项目,基本都是干货. 另一半是在介绍OceanBase的内容,对我来说,正是踏破铁鞋无觅处.接下来会有几篇专门研究存储引擎的读书笔记哟.废话不多说,转入正题. 1.存

多核程序设计——存储模型

最近在看<现代体系结构上的UNIX系统--内核程序员的SMP和Caching技术>,这里抄点东西作为笔记吧! 顺序存储模型强制存储器操作(load和store)都按照程序次序来执行,即这些指令是按照在随程序执行的指令流中出现的顺序次序来执行的.它也指定了,由不同处理器完成的load和store操作也要以某种顺序.但又是非确定性的方式排序.这种存储模型应该是大家最容易理解的,甚至都认为实际MP也是这样工作的.但是,这种存储结构是非常落后的,现代处理器应该已经淘汰了这种结构. 书中讲到了一个例子,

计算机数据存储模型

数据存储模型 当今社会,计算机无处不在,我们知道在计算机CPU用来计算数据,内存和Flash用来存储数据.计算机中的数据是现实社会中的内容在计算机中以另外一种方式来存储.我们的图片.文字.视频等资料都可以保存到计算机中.那么计算机又是如何保存这些数据的呢?在计算机中的这些数据到底是以什么方式存在?本节课将会为大家解答这些疑问,让大家从底层理解什么是计算机中的数据. 计算机电路模型 当我们拆开计算机,可以看到里面是一块电路板,上面有各种各位的元器件,有很多绕老绕去的线路,看起来很复杂.所有的计算都

Bitcask 存储模型的实现 - merge与hint文件

在<Bitcask存储模型的实现 - 基本框架>中,我们了解了Bitcask存储模型中数据的存储方式.内存索引的组织形式,以及如何使用缓存加速数据读取.另外,Bitcask存储模型中提出闲时进行merge减少数据冗余.运用hint文件加速创建内存索引,下面我们来看merge的具体实现.如何用hint文件加速索引创建. merge Bitcask是日志型存储模型,对于新增和更改的操作,都Append到磁盘,磁盘使用率将随着操作的增多而增长. 以上图例表示,key及对应val最开始存放在25.w,

剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作

剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存储模型及CRUD(创建.读取.更新和删除)操作的工作原理. Elasticsearch是当今最流行的分布式搜索引擎,GitHub. SalesforceIQ.Netflix等公司将其用于全文检索和分析应用.在Insight,我们用到了Elasticsearch的诸多不同功能,比如: 全文检索 比如找

C语言存储模型

描述方法(三个方面) 作用域 代码块.函数原型 文件作用域 链接类型 外部链接 内部链接 空链接 存储时期 静态存储时期 动态存储时期 变量类型 变量存储类型 作用域 链接类型 存储时期 C语言存储模型(类) 文件 外部 静态 具有外部链接的静态 内部(static) 具有内部链接的静态 代码块 无链接 静态(static) 空链接静态变量 动态 自动变量 寄存器(性质与自动变量类似,存储在寄存器中) 寄存器 注: 具有外部链接的在其他文件使用前必须以exturn声明 具有静态存储期的变量必须使

LSM树存储模型

----<大规模分布式存储系统:原理解析与架构实战>读书笔记 之前研究了Bitcask存储模型,今天来看看LSM存储模型,两者虽然同属于基于键值的日志型存储模型.但是Bitcask使用哈希表建立索引,而LSM使用跳跃表建立索引.这一差别导致了两个存储系统的构造出现明显的分化.为此,我还先去捣腾了一番跳跃表的实现.今天算是进入了正题. LSM的结构 LSM的基本思想是将修改的数据保存在内存,达到一定数量后在将修改的数据批量写入磁盘,在写入的过程中与之前已经存在的数据做合并.同B树存储模型一样,L

关于USB数据存储这一块的技术问题

关于 USB 数据存储这一块的技术问题,在这里咨询下?我想达到以下的目的: 1 .跟单片机接口,实现 U 盘数据存储 2 .数据存储的格式可指定,如 XLS 格式.求推荐,该用什么?