DJ4-6 虚拟存储器的基本概念

news2024/12/28 20:51:42

目录

4.6.1  虚拟存储器的引入

1、常规存储器管理方式的特征

2、内存的扩充方法

4.6.2  局部性原理

4.6.3  虚拟存储器的定义

1、虚拟存储器的基本工作情况

2、虚拟存储器的定义

3、虚拟存储器的实现方法

4.6.4  虚拟存储器的特征


基本分页和基本分段不能解决的问题:

  • 一个程序要求的存储容量可能超过整个内存空间
  • 有大量的作业需要装入内存运行而内存空间不足

解决方案:

  • 从物理上增加内存容量:但这会增加系统成本,并且增加是有限的
  • 从逻辑上增加内存容量:这正是虚拟存储技术所要解决的主要问题

4.6.1  虚拟存储器的引入

1、常规存储器管理方式的特征

(1) 一次性:要求将一个作业全部装入内存才能运行。

  • 无法运行大作业
  • 限制了作业并发执行的程度

(2) 驻留性:作业装入后一直驻留内存直到作业完成。

  • 导致内存中存在已无用的或暂时不用的程序或数据,浪费内存空间

一次性和驻留性严重降低了内存利用率和系统吞吐量。

2、内存的扩充方法

(1) 物理扩充:增加硬件投入,受机器自身和成本的限制。

(2) 逻辑扩充:

  1. 覆盖 (overlay):应用程序手动把需要的指令和数据保存在内存中
  2. 对换 (swapping):操作系统自动把暂时不能执行的程序保存到外存中
  3. 虚拟存储:在有限容量的内存中,自动装入更多的或更大的程序

覆盖解决了一次性问题,对换解决了驻留性问题。

4.6.2  局部性原理

程序执行的局部性原理:在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。

只要保证进程执行所需的部分程序和数据驻留在内存,一段时间内进程都能顺利执行。

局限性又表现在下述两个方面:

(1) 时间局限性

如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行;如果某数据被访问过, 则不久以后该数据可能再次被访问。产生时间局限性的典型原因是在程序中存在着大量的循环操作。

(2) 空间局限性

一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问。即程序在一段时间内所访问的地址可能集中在一定的范围之内,其典型情况便是程序的顺序执行。

不同程序编写方法的局部性特征

例:页面大小为 4K,分配给每个进程的物理页面数为 1 。在一个进程中,定义了如下的二维数组int A[1024][1024],该数组按行存放在内存中,每一行存放在一个页面中。

// 程序编写方法1
for (j = 0; j < 1024; j++)
    for (i = 0; i < 1024; i++)
        A[i][j] = 0;

// 程序编写方法2
for (i = 0; i < 1024; i++)
    for (j = 0; j < 1024; j++)
        A[i][j] = 0;

程序编写方法 1 以列为单位扫描数组,将会频繁发出缺页中断,共 1024×1024 次;程序编写方法 2 以行为单位扫描数组,将会发出缺页中断,共 1024 次。

 

 

4.6.3  虚拟存储器的定义

  1. 当进程运行时,先将当前要运行的部分程序装入内存,其它部分暂留外存;
  2. 当要执行的指令不在内存时,处理器发出中断,通知操作系统将所缺部分从外存调入内存,保证程序继续执行;
  3. 当内存不足时,允许程序部分换入、换出。

1、虚拟存储器的基本工作情况

(1) 基于程序执行的局部性原理。一个作业运行前,仅将那些当前要运行的页面(段)装入内存启动运行,其它部分暂留外存。

(2) 若运行所需的页面(段)不在内存,则利用 请求调页(段)功能将其调入内存。

(3) 若此时内存满,则利用置换功能,将内存中暂时不用的部分页面(段)调至外存,再将所需页面(段)调入。

(4) 这样,可实现大程序在小内存中运行,也可实现内存中同时装入更多的进程并发执行。

典型过程:

2、虚拟存储器的定义

虚拟存储器:具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。

  • 其逻辑容量由内存容量和外存容量之和所决定
  • 其运行速度接近于内存速度,而成本却又接近于外存

虚拟存储器容量的讨论

虚拟存储器虽然给用户提供了特大地址空间,但其容量不是无限大,主要受两个方面的限制:

  • 外存对换区的容量
  • 指令中表示地址的字长

如:若 CPU 的有效地址长度为 32 位,则可以表示的地址最大空间为 2^32,逻辑空间大小为 4G,即虚存容量为 4GB 。与物理空间的大小无直接关系。

3、虚拟存储器的实现方法

(1) 请求分页系统

它是在纯分页系统的基础上增加了 请求调页、页面置换 两大功能所形成的页式虚拟存储系统。

为了实现请求调页、页面置换两大功能,系统必须提供如下的硬件支持:

  1. 请求分页的页表机制
  2. 缺页中断机构
  3. 地址变换机构

除了硬件之外,请求调页、页面置换两大功能还需得到 OS 的支持。

(2) 请求分段系统

它是在纯分段系统的基础上增加了 请求调段、分段置换 两大功能所形成的段式虚拟存储系统。

为了实现请求调段、分段置换两大功能,系统必须提供如下的硬件支持:

  1. 请求分段的段表机制
  2. 缺段中断机构
  3. 地址变换机构

除了硬件之外,请求调段、分段置换两大功能还需得到 OS 的支持。

(3) 段页式虚拟系统

它是在段页式系统的基础上增加了 请求调页、页面置换 两大功能所形成的段页式虚拟存储系统。

如:Intel 80386 处理机便支持段页式虚拟存储系统。

4.6.4  虚拟存储器的特征

虚拟存储器具有以下主要特征:

  1. 多次性:是指一个作业被分成多次调入内存运行。
  2. 对换性:是指在作业运行过程中进行换进、换出,从而有效提高内存利用率。
  3. 虚拟性:是指能够从逻辑上扩充内存容量,使用户所见内存容量远大于实际内存容量。

虚拟性是以多次性和对换性为基础的,而多次性和对换性又必须建立在离散分配的基础上。

虚拟存储的典型问题:抖动(thrashing)

当进程要求装入新的页面或段时,如果当前内存没有足够的空闲空间,则需要交换一些页面或段到外存去。如果被交换出去的页面或段很快将被进程使用,则又需要将其换入内存。

抖动:系统花费大量的时间把程序和数据频繁地换入和换出内存而不是执行用户指令。

出现抖动现象时,系统显得非常繁忙,但是吞吐量很低,甚至产出为零。

根本原因:选择的页面或段不恰当。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

snpEFF和bedtools基因注释有何异同?

大家好&#xff0c;我是邓飞&#xff0c;现在写博客越来越繁琐了&#xff0c;每个平台对图片都有自己的规则&#xff0c;不能通用&#xff0c;各种找不到图片&#xff0c;本着充值是我变强的原则&#xff0c;买了Markdown Nice的VIP&#xff08;https://product.mdnice.com/&am…

自然语言处理从入门到应用——自然语言处理(Natural Language Processing,NLP)基础知识

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 自然语言通常指的是人类语言&#xff0c;是人类思维的载体和交流的基本工具&#xff0c;也是人类区别于动物的根本标志&#xff0c;更是人类智能发展的外在体现形式之一。自然语言处理&#xff08;Natural Language Pr…

C Primer Plus第十四章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 由于使用的是命令行参数常用于linux系…

LeetCode:1143.最长公共子序列 1035.不相交的线 53. 最大子序和

1143.最长公共子序列 题目 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除…

字节和滴滴划水5年,总结出来的真实经验....

先简单交代一下背景吧&#xff0c;某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;之后跳槽到了滴滴&#xff0c;一直从事软件测试的工作。之前没有实习经历&#xff0c;算是5年的工作经验吧。 这5年之间完成了一次晋升&#xff0c;换了一家公司&#xff0c;有…

基础巩固(四)View体系与事件分发

文章目录 Android窗口机制ViewRootWindow、WindowManager、ViewRoot、Activity、DecorView之间的关系ViewView的生命周期Attachment / DetachmentTraversalsState Save / Restoreinvalidate()和requestLayout() View的生命周期与Activity的生命周期的关联Activity创建时如何关联…

[深度学习]yolov7 pytorch模型转onnx,转ncnn模型和mnn模型使用细节

文章目录 前言1.前置1.1 安装必要的库1.2 .pt 权重转ncnn 和mnn所需要的权重 2、编码C项目1.ncnn2.mnn 总结 前言 yolov7 pytorch模型转onnx&#xff0c;转ncnn模型和mnn模型使用细节&#xff0c;记录一下 git仓库&#xff1a; yolov7 https://github.com/WongKinYiu/yolov7 n…

JQL的语法格式

JQL&#xff08;Jira Query Language&#xff09;的语法格式如下&#xff1a; <field> <operator> <value> 其中&#xff0c; 表示 Jira 中的字段&#xff08;例如 project、assignee、status 等&#xff09;&#xff0c; 表示操作符&#xff08;例如 、!、&…

uni-app路由进阶—不同路由跳转配置的使用

uni-app路由进阶—不同路由跳转配置的使用 uni-app路由进阶—不同路由跳转配置的使用 文章目录 uni-app路由进阶—不同路由跳转配置的使用前言一、配置2个一级导航页面&#xff08;tabBar&#xff09;二、路由配置分类总结 前言 UNI-APP学习系列之uni-app路由进阶—不同路由跳…

SQL注入基本原理

1、什么是Sql注入攻击 SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序&#xff0c;而这些输入大都是SQL语法里的一些组合&#xff0c;通过执行SQL语句进而执行攻击者所要的操作&#xff0c;它目前是黑客对数据库进行攻击的最常用手段之一。 本课程将带你从介绍 Web 应用…

ELK日志采集系统搭建

需求背景 现在的系统大多比较复杂&#xff0c;一个服务的背后可能就是一个集群的机器在运行&#xff0c;各种访问日志、应用日志、错误日志量随着访问量和时间会越来越多&#xff0c;运维人员就无法很好的去管理日志&#xff0c;开发人员排查问题&#xff0c;需要到服务器上查…

赛灵思 ZYNQ UltraScale+ MPSoC Petalinux驱动开发:EMIO-GPIO输入驱动

目录 Zynq UltraScale MPSoC Linux下EMIO-GPIO驱动1、MPSOC GPIO简介2、vivado中EMIO配置3、EMIO设备树修改 Zynq UltraScale MPSoC Linux下EMIO-GPIO驱动 声明&#xff1a;本文是学习赛灵思 Zynq UltraScale MPSoC 5EV过程中写的笔记&#xff0c;便于以后复习&#xff0c;参考…

基于Faster R-CNN实现目标检测

目录 1. 作者介绍2. Faster RCNN基本框架3.模型训练及测试3.1 数据集3.2 环境配置3.3 训练参数3.4 训练参数3.5 代码展示3.6 问题及分析 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 杨金鹏&#xff0c;男&#xff0c;西安工程大学电子信息学院&#x…

Mybatis-puls——入门案例和概述和CURD功能实现

前言 虽然但是&#xff0c;现在MyBatis_puls并不支持springboot3.x版本。 MyBatis_puls就像SpringBoot是为了快速开发Spring程序一样&#xff0c;这个是为了快速开发MyBatis程序。基于SpringBoot使用MP的开发流程 按照下面这个模板造就对了。 SpingBoot——SB整合MB的web项…

Profinet通信协议基础知识

目录 1、Profinet是PI退出的开放式以太网标准: 2、Profinet的参考模式 3、Profinet的应用领域

若依框架快速搭建(一)

若依框架开发 若依框架介绍前期准备相关工具IDEAwebstromNavcatMavenRedis 前后端项目搭建 后端搭建前端搭建源码下载 若依框架介绍 若以管理系统的网址&#xff1a;http://ruoyi.vip/ 代码为开源代码 主要分为四部分&#xff0c;第一个是整体项目&#xff0c;第二个是前后端…

UFS 3 - UFS RPMB

UFS 1-UFS RPMB 1 RPMB介绍2 RPMB Well Known Logical Unit Description3 Requirements3.1 RPMB Resources3.2 Algorithm and Key for MAC Calculation3.3 RPMB Message Components3.4 Request Message Types3.5 Response Message Types3.6 RPMB Operation Result 4 Implementa…

Springboot +spring security,前后端分离时的security处理方案(二)

一.简介 在前后端分离这样的开发模式下&#xff0c;前后端的交互都是通过 JSON 来进行数据传递的&#xff0c;无论登录成功还是失败&#xff0c;都不会有服务端跳转或者客户端跳转之类的操作。 也就是说无论登录成功还是失败&#xff0c;服务端都会返回一段登录成功或失败的 …

Go 1.19 排序算法

插入排序&#xff08;InsertionSort&#xff09; 插入排序是一种简单直观的排序算法&#xff0c;它的基本思想是将待排序的元素插入到已经排好序的序列中&#xff0c;从而得到一个新的有序序列。插入排序的具体过程如下&#xff1a; 从第一个元素开始&#xff0c;认为它已经是…

RK3568 i2s TDM数据抓取

1. I2S接口 I2S协议只定义三根信号线:时钟信号SCK、串行数据信号SD、左右声道选择信号WS。 SCK 时钟信号,Serial Clock,也可能称BCLK/Bit Clock或SCL/Serial Clock。 WS 左右声道选择信号,Word Select,也称帧时钟,也可能称LRCLK/Left Right Clock。 SD 串行数据信号,Ser…