0x14 虚拟内存(上)

本文详细介绍了虚拟内存的概念,包括它的背景、优点和实现方式,以及虚拟存储技术如何区分开物理内存和用户逻辑内存。文章还探讨了请求分页的基本思想,如按需调页、有效-无效位、缺页中断等,并分析了各种页面置换算法,如FIFO、LRU及其近似算法。最后,讨论了页面置换的性能优化和实际应用。
摘要由CSDN通过智能技术生成

一、虚拟存储技术

背景

代码必须装入内存才能执行,但是并不是所有代码必须全部装入内存。

  • 错误代码
  • 不常用的函数
  • 大的数据结构

程序部分装入优点

局部性原理

局部性原理:一个程序只要部分装入内存就可以运行

  • 整个程序不是同一时间都要运行

1968年,Denning指出:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分;相应地,它所访问的存储空间也局限于某个区域。

  • 程序执行时,除了少部分的转移和过程调用外,在大多数情况下仍然顺序执行;
  • 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,过程调用的深度一般小于5。程序将会在一段时间内都局限在这些过程的范围内运行;
  • 程序中存在许多循环结构,多次执行;
  • 对数据结构的处理局限于很小的范围。

程序部分装入技术优点:

  • 进程大小不再受到物理内存大小限制
  • 每个进程需要的内存更小
  • 更多进程可以并发运行
  • I/O更少

虚拟存储技术

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

虚拟地址空间:分配给进程的虚拟内存。

虚拟地址:在虚拟内存中指令或数据的位置(可以被访问)。

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

虚拟内存主要作用——区分开物理内存和用户逻辑内存

只有部分运行的程序需要在内存中;
逻辑地址空间能够比物理地址空间大;
允许多个进程共享同一地址空间;
允许更有效的进程创建。

虚拟内存大于物理内存
虚拟存储器的大小由2个因素决定:

  1. 操作系统字长(计算机系统的寻址空间);如果是32位计算机,那么寻址空间为232,也就是4G,如果是64位计算机,那么寻址空间为264
  2. 内存外存容量和

我们不能简单认为虚存大小就是内存和外存容量之和。
在这里插入图片描述

虚拟内存的共享库

虚拟内存也允许文件和内存通过共享页而为多个进程所共享。

  • 通过将共享对象映射到虚拟地址空间,系统库可以被多个进程所共享;
  • 虚拟内存允许进程共享内存
  • 虚拟内存可允许在创建进程期间共享页,从而加快进程创建。
    在这里插入图片描述

写时复制(Copy-on-write)

写时复制允许父进程和子进程在初始化时共享页面。

  • 如果其中一个进程修改了一个共享页面,会产生副本;
  • 更加高效;
  • 应用在Windows XP,Linux等系统

vfork():fork()变形,不使用写时复制。

虚拟内存实现

虚拟内存能够通过以下手段来执行实现

  • 虚拟页式(虚拟存储技术+页式存储管理)居多
  • 虚拟段式(虚拟存储技术+段式存储管理)

虚拟页式有两种方式

  • 请求分页;需要访问某个页面,如果该页面不在内存,操作系统就把这个页面调入内存。
  • 预调页;使用某些算法预测将要用到的页面,预先把这些页面调入内存。

二、请求分页

虚拟页式存储管理基本思想

进程开始运行之前,不是装入全部页面,而是装入一个或零个页面;
运行之后,根据运行需要

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值