美文网首页
什么是虚拟内存,分页、分段又是什么?

什么是虚拟内存,分页、分段又是什么?

作者: 就这些吗 | 来源:发表于2019-12-19 00:50 被阅读0次

操作系统——内存管理之内存分配(分页,分段,段页)
多级页表与快表

共享内存可以用虚拟内存来实现。

共享内存的方式原理就是将一份物理内存映射到不同进程各自的虚拟地址空间上,这样每个进程都可以读取同一份数据,从而实现进程通信。因为是通过内存操作实现通信,因此是一种最高效的数据交换方法。

虚拟内存是一种技术,它的作用就是让上层程序看起来是内存是分段的,但是实际上是分页的
目前程序越来越大,越来越多,内存不可能用把所有程序段都加到内存中,用到了虚拟内存。
他可以保证在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据。用到了局部性原理

先把程序分段,比如分成 main函数、子函数、全局变量,然后把这些放在不连续的内存块中,再把这个内存块分页存储

基本思想:用户程序使用了一段内存,那么首先会在虚拟内存上面找到一段空的内存,然后将用户程序使用的内存映射到这段内存上,然后虚拟内存再将这段内存映射到物理内存上。
第一次映射:需要段表
第二次映射:需要页表

出现的问题:页表越来越大,内存浪费。
解决方案:多级页表
建立一个页表索引,页表索引肯定在内存中,再根据页表索引加载需要的页表到内存中,不要的可以先放在硬盘里

出现问题:级数过多,造成访问次数增加,(cpu执行速度很快,执行指令的时间与访问内存的时间相比不足一谈)
解决方案:在cpu和内存中再加一个寄存器,用来放最近访问过的页码(又是局部性定理)

分页仅仅是由于系统管理的需要而不是用户的需要。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。

页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;
而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

相关文章

  • 什么是虚拟内存,分页、分段又是什么?

    操作系统——内存管理之内存分配(分页,分段,段页)多级页表与快表 共享内存可以用虚拟内存来实现。 共享内存的方式原...

  • 内存分页不就够了?为什么还要分段?还有段页式?

    关于内存访问你可能听过分段,分页,还有段页式。 但是为什么要分段?又为什么要分页? 有了分页为什么还要分段? 这就...

  • 内存分页不就够了?为什么还要分段?还有段页式?

    你好,我是 yes。 关于内存访问你可能听过分段,分页,还有段页式。 但是为什么要分段?又为什么要分页? 有了分页...

  • 启动优化之二进制重排

    涉及的基础知识点 虚拟内存和分页 我们知道,现代操作系统一般都采用虚拟内存管理机制,用分段(segment)和分页...

  • 操作系统复习(自用)5

    第九章 虚拟内存:纯请求分页式系统+预调入相对->请求分页式系统;基本实现:离散型存储;什么是虚拟内存 写时复制(...

  • 操作系统实验五

    步骤一 - 什么是分页过程当 Windows 求助于硬盘以获得虚拟内存时,这个过程被称为分页 (paging) 。...

  • 虚拟内存

    虚拟内存,分页文件,交换空间等等,它们本质上都是一个东西。 1、硬盘内存基本概念 1.1 什么是虚拟内存 虚拟内存...

  • 请求分页管理方式

    前言 本文接着上文虚拟内存技术的实现,虚拟内存技术的三种实现:请求分页管理方式、请求分段方式、请求段页管理方式。这...

  • iOS Memory Deep Dive

    前言 经典操作系统的虚拟内存为什么要有虚拟内存?寻址方式地址空间分页缺页处理虚拟内存带来的好处地址翻译如何索引提高...

  • mysql和Oracle的分页

    为什么需要分页:在很多数据时,不可能完全显示数据,所以需要分段显示 mysql:是使用关键字limit来进行分页的...

网友评论

      本文标题:什么是虚拟内存,分页、分段又是什么?

      本文链接:https://www.haomeiwen.com/subject/lwqrnctx.html