操作系统的奋斗(三)内存管理

news2024/11/25 2:39:52

第三章 内存管理

  • 3.1内存管理概念
    • 3.1.1 内存管理的基本原理和要求
      • (1)内存管理的主要功能
    • 3.1.2 覆盖和交换
      • (1)覆盖
      • (2)交换
    • 3.1.3 连续分配管理方式
      • (1)单一连续分配
      • (2)固定分区分配
      • (3)动态分区分配
  • 3.2虚拟内存管理
    • 3.2.1 虚拟内存的基本概念
    • 3.2.2 请求分页管理方式
    • 3.2.3 页框分配
    • 3.2.4 页面置换算法
    • 3.2.5 抖动和工作集
    • 3.2.6 内存映射文件
    • 3.2.7 虚拟储存器性能影响因素
  • 3.3本章小结
    • 3.3.1 为什么要引入虚拟内存?
    • 3.3.2 虚拟内存空间的大小是由什么因素决定的?
    • 3.3.3为什么要引入虚拟内存?

本章围绕分页机制展开:通过分页管理方式在物理内存大小的基础上提高内存的利用率,在进一步引入请求分页管理方式,实现虚拟内存,是内存脱离物理大小的限制,提高处理器的利用率。

3.1内存管理概念

3.1.1 内存管理的基本原理和要求

内存管理的概念:操作系统对内存的划分和动态分配。

有效的内存管理在多道程序设计中非常重要,方便用户使用存储器、提高内存利用率,还可以通过虚拟技术从逻辑上扩充存储器。

(1)内存管理的主要功能

  1. 、内存空间的分配与回收:由操作系统完成主存储器空间的分配和管理。
  2. 、地址转换:把逻辑地址转换成相应的物理地址。
  3. 、内存空间的扩充:利用虚拟内存技术或者自动覆盖技术,逻辑上扩充内存。
  4. 、内存共享:允许多个进程访问内存的同一部分。
  5. 、存储保护:保证各道作业在各自的存储空间内运行,互不干扰。

3.1.2 覆盖和交换

覆盖和交换的目的是:在多道程序环境下用来扩充内存。

(1)覆盖

基本思想:由于程序运行时并非任何时候都要访问程序及数据的各个部分,所以把用户空间分为一个固定区和若干覆盖区 ,将经常活跃的部分放在固定区,其余的部分按调用关系分段,首先将那些即将要访问的段放入覆盖区,其他段放入外存中,在需要调用前,系统再将其调入覆盖区替换其中原有的段。

(2)交换

交换(对换)的基本思想:把处于等待状态的(或在CPU调度原则下被剥夺运行权利)的程序从内存移到辅存,将内存空间腾出来的这一过程称为换出;把准备好竞争CPU运行的程序从辅存移到内存的过程称为换入

交换技术主要在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。

3.1.3 连续分配管理方式

连续分配方式是指为一个用户程序分配一个连续的内存空间,主要包括:单一连续分配、固定分区分配和动态分区分配。

(1)单一连续分配

内存分为系统区和用户区,系统区仅供操作系统使用,通常在低地址部分。

优点:简单、无外部碎片,无须内存保护
缺点:只能用于单用户、单人任务的操作系统中,有内部碎片,存储器的利 用率极低。

(2)固定分区分配

将用户内存空间划分为若干固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可在从外存的后备作业队列中选择适当大小 的资源装入该分区。

这种方式存在两个问题:

1、程序可能太大而放不进任何一个分区(可以使用覆盖技术解决)。

2、当程序小于固定分区大小时,也要占用一个完整的内存分区,这样内部就存在空间浪费(即 ------内部碎片)。

(3)动态分区分配

进程装入内存时,根据进程的实际需要,动态地为之分配内存;并使分区的大小正好适合进程的需要。系统中分区的大小和数目是可变的。

刚开始很好,随着时间的推移,内存中会产生越来越多的内存块(外部碎片),内存的利用率也随之下降。可通过紧凑技术来解决。

3.2虚拟内存管理

3.2.1 虚拟内存的基本概念

基于局部性原理,在程序装入时,仅须将程序当前要运行的少数页面或段先装入内存,其余部分暂留于外存,需要时调入内存,暂时不使用的内容换出到外存上。在逻辑上扩大了内存的容量,实际上并没有,即为“虚拟储存器”。

3.2.2 请求分页管理方式

请求分页系统建立于基本分页系统基础之上,且为了支持虚拟储存器增加了:请求调页 和 页面置换 功能。

请求分页系统中的页表项 如下:

页号——物理块号——状态位P——访问字段A——修改位M——外存地址

增加的四个字段说明如下
1、状态位P : 指示该页是否已调入内存
2、访问字段A : 记录本页在一段时间内被访问的次数,或是记录最近已有多长时间未被访问。
3、修改位M :标识该页在调入内存后是否被修改过,以确定页面置换时是否写回外存。
4、外存地址 : 指出该页在外存上的地址,通常是物理块号,供调入内存该页时参考。

请求分页系统中,访问的页面不在内存中时,便产生一个缺页中断。

3.2.3 页框分配

1、驻留集 : 给一个进程分配的物理页框的集合。
——————页框越少,驻留主存的进程就越多,可提高CPU的利用率。
——————一个进程主存中页面过少,缺页率相对较高。
——————若分配页框过多,则对缺页率无什么影响。

2、内存分配策略 :固定分配局部置换 、可分配全局置换 、可分配局部置换

3、物理块调入算法 :平均分配算法、按比例分配算法、优先权分配算法

4、调入页面时机 : 预调页策略、请求调页策略

5、从何处调入页面:——》三种方式:系统拥有足够的对换区空间、系统缺少足够的对换区空间、UNIX方式

6、如何调入页面 : 当进程所访问的页面不在内存中时 (存在位为0),便向CPU 发出缺页中断,中断响应后便转入缺页中断处理程序,该程序通过查找页表得到该页的物理块,此时如果内存未满,则启动磁盘 I/O将所缺页调入内存,并修改页表。如果内存已满,则先按某种置换算法从内存中选出页准备换出;如果该页未被修改过(修改位为0),则无须将该页写回磁盘;但是,**如果该页已被修改(修改位为 1),则必须将该页写回磁盘,然后将所缺页调入内存,并修改页表中的相应表项,置其存在位为 1。**调入完成后,进程就可利用修改后的页表形成所要访问数据的内存地址。

3.2.4 页面置换算法

选择调出页面的算法,好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会在访问或以后较长时间内不会在访问的页面线调出。

最佳置换算法(OPT)选择被淘汰的页面是以后永不使用的页面 或最长时间不被访问的,保证获得最低的缺页率。
先进先出页面置换算法(FIFO)队列实现,淘汰在内存中驻留时间最久的页面,只有这种算法会出现Belady异常。
最近最久未使用置换算法(LRU)堆栈类算法,选择最近最长时间未访问过的页面予以淘汰。
时钟置换算法(CLOCK)考虑页面是否被访问过和页面是否被修改过

3.2.5 抖动和工作集

1、抖动

简单来说就是:进程多,物理块少,进程频繁缺页。

刚刚换出的页面马上又要换入主存,刚刚换入的页面马上又要换出主存,这种频繁的页面调度行为称为抖动颠簸

2、工作集

工作集是指在某短时间间隔内,进程要访问的页面集合。

工作集大小一般会比工作集窗口小很多,一般来说分配给进程的物理块数(即驻留集大小)要大于工作集大小。

3.2.6 内存映射文件

将磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关系,便可以直接访问被映射的文件,而不必执行一些繁琐的操作,适合管理大尺寸文件。

内存映射文件所进行的如何实际交互都是在内存中进行的,共享内存是通过内存映射来实现的;进程可以通过共享内存来通信,而共享内存是通过映射相同文件到通信进程的虚拟地址实现的。

如下图所示:
在这里插入图片描述

3.2.7 虚拟储存器性能影响因素

缺页率,缺页率高即为抖动,是影响虚拟储存器性能的主要因素,也受到页面大小、分配给屋里进程的块数、页面置换算法及程序编制方法的影响。

根据局部性原理,页面较大则缺页率较低,页面较小则缺页率较高。
编写程序的局部化程度越高,执行时的缺页率就越低。

3.3本章小结

3.3.1 为什么要引入虚拟内存?

多道程序并发执行不仅使讲程之间共享了外理器,而且同时共享了主存。然而,随着对处理器需求的增长,进程的执行速度会以某种合理平滑的方式慢下来。但是,若同时运行的进程太多,则需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。所以,在物理上扩展内存相对有限的条件下,应尝试以一些其他可行的方式在逻辑上扩充内存。

3.3.2 虚拟内存空间的大小是由什么因素决定的?

虚存的容量要满足以下两个条件:

1、 虚存的实际容量≤内存容量和外存容量之和,这是硬件的硬性条件规定的,若虚存的实际容量超过了这个容量,则没有相应的空间来供虚存使用。

2、 虚存的最大容量≤计算机的地址位数能容纳的最大容量。假设地址是32位的,按字节编址,一个地址代表 1B存储空间,则虚存的最大容量≤4GB (2B)。这是因为若虚存的最大容量超过4GB,则 32位的地址将无法访问全部虚存,也就是说4GB 以后的空间被浪费了,相当于没有一样,没有任何意义。

实际虚存的容量是取条件①和②的交集,即两个条件都要满足,仅满足一个条件是不行的。

3.3.3为什么要引入虚拟内存?

虚拟内存使用外存上的空间来扩充内存空间,通过一定的换入/换出,使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间增加,若使用了不合适的替换算法,则会大大降低系统性能。

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

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

相关文章

【Spring源码】23. 执行初始化逻辑:initializeBean()

进入initializeBean()先检查是否有安全管理器,如果有就以特权方式执行回调bean中Aware接口方法invokeAwareMethods()invokeAwareMethods()这个方法处理了3个Aware(更多关于Aware的内容可移步至那些Aware们)BeanNameAwareBeanClassLoaderAware…

json文件在faster_rcnn中从测试到训练 可行性

1.确认任务 经过mydataset文件处理后 - > 在train_res50_fpn文件内应用 # load train data set # VOCdevkit -> VOC2012 -> ImageSets -> Main -> train.txt train_dataset VOCDataSet(VOC_root, "2012", data_transform["train"], &…

Python 异步: 使用和查询任务(8)

任务是异步程序的货币。在本节中,我们将仔细研究如何在我们的程序中与它们交互。 1. 任务生命周期 异步任务具有生命周期。首先,任务是从协程创建的。然后安排在事件循环中独立执行。在某个时候,它会运行。 在运行时它可能会被挂起&#xff0…

舆情监测方案主体需求,TOOM舆情监测预警应对处置方案

舆情监测预警是一种通过预先设定的告警机制,在发生重要事件或异常情况时及时通知相关人员的舆情监测方式。它旨在帮助企业和组织及时了解舆情变化,并采取必要的应对措施,舆情监测方案主体需求,TOOM舆情监测预警应对处置方案。 一…

在Unity中管理材质

Shader和Material的关系 Shader能够设置游戏物体的颜色或者能够通过材质来配置颜色。实际上,一个shader能够让许多物体看起来像是完全不同的物质。 Shader和材质作为一个整体工作:Shader定义了表面看起来可以像哪些东西,材质让表面真正看起来…

【手写 Vuex 源码】第一篇 - Vuex 的基本使用

一,前言 本篇开始,进入 vuex 源码学习,本篇主要介绍一下内容: 创建 vuex 源码项目;介绍 vuex 的基本使用; 二,创建 vuex 源码项目 1,使用 vue-cli 创建 vue2.x 脚手架 vue creat…

shell脚本(语法)

一、什么是shell脚本 1.1、shell 的两层含义:既是一种应用程序,又是一种程序设计语言 1.1.1、shell是一种应用程序 交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能称之为 shell 命令解析器。 shell 是…

阳离子交换树脂排钾,选择性吸附钾离子

Tulsimer T-42特级凝胶型强酸性阳离子交换树脂,适用于超纯水系统的混床用阳离子交换树脂 Tulsimer T-42是特级强酸型离子交换树脂,氢 H/钠 Na阳离子交换树脂, 是一款有较的交换容量 ,并同时拥有物理及化学稳定品质。可应用于汽电共生发电厂冷…

excel操作技巧:聊聊关于打印的一些事儿

在之前的学习中,小编给小伙伴们带来了许多关于Excel操作的小技巧,不过最近很多小伙伴在打印上又犯了难题,倒在了最后一步上,实在是亏得很。今天小编就来给大家讲讲打印的那些难事儿!难题一: 多列数据打印不…

【Unity】Tomcat 部署项目(3种方式)

一、将Unity WebGL包丢进webapps这是最简单粗暴的方式:将Unity WebGL包丢进tomcat/webapps目录即可。无需修改任何配置文件即可完成部署。使用tomcat10与Unity Pong Game包来做测试。①启动tomcat②将Unity Pong Game包丢进webapps目录浏览器直接访问:lo…

HTTP和HTTPS协议

HTTP协议 HTTP协议是一种应用层的协议,全称为超文本传输协议。 URL URL值统一资源定位标志,也就是俗称的网址。 协议方案名 http://表示的就是协议方案名,常用的协议有HTTP协议、HTTPS协议、FTP协议等。HTTPS协议是以HTTP协议为基础&#…

java面经汇总

Java基础 什么是字节码? jvm可以理解的代码(.class文件) Java代码从源代码到运行过程: java代码 -> javac编译器->.class字节码文件 -> 解释器&JIT(运行时编译器)->机器码 JIT编译器会将热…

球面坐标系下的三重积分

涉及知识点 三重积分球面坐标系点火公式一些常见积分处理手法 球面坐标系定义 球面坐标系由方位角φ\varphiφ、仰角θ\thetaθ和距离rrr构成 直角坐标系(x,y,z)(x,y,z)(x,y,z)到球面坐标系的(r,φ,θ)(r,\varphi,\theta)(r,φ,θ)的转化规则如下: {xrsin⁡φco…

使用Python脚本修改Maya ASCII文件路径方法

以下脚本修改当前项目路径和子文件夹中扩展名为“.ma”的所有文件,这样您就可以轻松地一次编辑所有文件。此脚本搜索特定字符串replace_This变量并将其替换为with_This,您可以使用它更改引用路径、纹理路径等… 话不多说直接上脚本: import…

JavaWeb-JavaScropt入门(二)

目录函数语法传参函数表达式作用域对象使用 字面量 创建对象 [常用]使用 new Object 创建对象使用 构造函数 创建对象函数 语法 function 函数名(形参列表) {函数体return 返回值; }那么有了创建函数,肯定有调用函数: // 函数调用 函数名(实参列表) …

聊一聊,我对DDD的关键理解

作者:闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中,感觉学而不得的时候,可能会问:我们还要学么?这的确引人深思。本文基于工作经验,尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么?分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告,需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接,UL94防火测试则是其中一项。UL94试验共有五种:1.B级的水平燃烧试验2.…

Nginx负载均衡

1、概念 访问量太大,一个 Tomcat 扛不住,所以就搭建 Tomcat 集群。让集群中的多个 Tomcat 服务器实例分担负载。 纵向扩容和横向扩容: 纵向扩容:给单台服务器提升硬件的配置。例如:提升 CPU、增加内存、扩大带宽、扩…

关于华为网络设备操作系统的介绍

1、什么是VRP VRP是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。 功能:实现统一的用户界面和管理界面、实现控制平面功能,并定义转发平面接口规范、实现…

量子比特大突破!原子薄材料成为“救世主”

(图片来源:网络)量子计算是一项极其复杂的技术,现阶段的一些挑战正严重阻碍着它的发展,尤其是量子比特的小型化和质量问题。IBM计划在2023年实现具有1121个超导量子比特的处理器。以目前的技术手段,要达到这…