【计算机四级网络工程师】操作系统原理第五章——内存管理(中)

devtools/2024/11/9 17:07:45/

目录

一、页式存储管理方案

1.1基本思想

1.2地址转换与快表

1.2.1页表

1.2.2二级页表

1.2.3散列页表(哈希列表)

1.2.4页式存储管理的地址转换

1.2.5快表

二、段式与段页式存储管理方案

2.1段式存储管理

2.1.1基本思想

2.1.2实现

2.2段页式存储管理

2.2.1基本思想

2.2.2实现

三、存储管理方案总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

一、页式存储管理方案

1.1基本思想

页式存储管理可以把一个逻辑地址连续的程序分散存放到几个不连续的内存区域中,并且保证程序的正确执行,可充分利用内存空间,减少移动所花费的开销。页式存储管理是对分区方式管理内存的补充,可以解决分区管理的缺点(当内存中无足够大的连续空间时,程序就无法装入)。

由于CPU不能直接访问存在外设或外存上的程序,所以程序要得到处理机前,必须先装入内存,由于出现了页式存储管理方式等的内存管理技术方案,所以只要部分装入内存即可。

页式分配使内存的利用率较高且管理简单。
页式不能采用移动技术解决碎片问题。
为了提高内存利用率,可以根据需要采用多种不同大小的页面。
在采用页式存储管理方案的系统中,为了提高内存利用率并减少内碎片,页面的划分与页表数量相关,可以找到平衡点。
在采用页式存储管理方案的系统中,可采用这些方法管理空闲物理内存:空闲块链表,位示图。

1.2地址转换与快表

1.2.1页表

为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表(基本页表);
一个进程对应一张页表;
进程的每一页对应一个页表项;
每个页表项由“页号”和“块号"组成。

1.2.2二级页表

第一级表示页目录,保存页表页的地址;
第二级表示页表页,保存物理页面号(即内存块号)。

1.2.3散列页表(哈希列表)

散列页表中的每个表项都包含三个字段:虚拟页号、所映射的页框号、指向链表中下一个元素指针

1.2.4页式存储管理的地址转换

页号是地址的高位部分,页内地址是地址的低位部分。
逻辑地址连续,物理页面可以不相邻。
页式存储管理方案中地址转换是由硬件完成的。

物理地址的计算公式为:物理地址=内存块号 x 块长 + 页内地址。

逻辑地址结构包括两个部分:页号+页内地址;
要算出逻辑地址对应的页号(逻辑地址/页面大小)【取整】;
要知道该页号对应页面在内存的起始地址;
要算出逻辑地址在页面内的“偏移量”(逻辑地址 mod 页面大小)【取余】;
物理地址=页内地址+页内偏移量。

1.2.5快表

只存放当前进程最活跃的少数几页;
进程的推进会导致快表的内容动态更新;
优点:采用快表后,地址转换的时间大幅下降。

快表存放在缓冲器中。

关于快表的叙述中,这些是正确的:
(1)快表的另一个名称是TLB;
(2)当切换进程时,要刷新快表;
(3)快表存放在高速缓存中;
(4)对快表的查找是按内容并行进行的。


【例】假定访问内存的时间为 200ns,访问高速缓冲存储器的时间为 40ns,高速缓冲存储器为 16 个单元时查快表的命中率为 90%。
按逻辑地址转换成绝对地址进行存取的平均访问时间为:(200+40)x90%+(200+200)x10%=256(ns)
不使用快表需两次访问内存的时间为 200x2=400ns。
可见使用快表与不使用快表相比,访问时间下降了36%。


二、段式与段页式存储管理方案

段式存储管理方案中采用的这些技术与可变分区管理方案相同:
(1)内存分配表;
(2)内存分配算法;
(3)采用紧缩技术合并空闲区。

2.1段式存储管理

2.1.1基本思想

系统将内存空间动态划分为若干个长度不同的区域,物理段在内存中的起始地址,称作段首址;将物理段中的所有单元从0开始依次编址,称为段内地址。
用户程序则按逻辑上有完整意义的段来划分,称为逻辑段(简称段),所有逻辑段从0开始编号,称为段号,逻辑段中的所有单元从 0开始编址,称为段内地址,用户程序的逻辑地址由段号和段内地址两部分组成。

2.1.2实现

内存分配时,系统以段为单位进行内存分配,为每一个逻辑段分配一个连续的内存区;
当把程序装入内存后,系统为每个用户程序建立一张段表,用于记录用户程序的逻辑段与内存物理段之间的对应关系;
段表包括逻辑段号、物理段起始地址(段首址)和物理段长度;
物理段的段内地址与逻辑段的段内地址相同。

2.2段页式存储管理

2.2.1基本思想

用页式方法来分配和管理内存控件(把内存划分为若干大小相等的页面);
用段式方法对用户程序按照其内在的逻辑关系划分成若干段,再按照划分内存页面的大小,把每段划分成若干大小相等的页面;
内存是以页为基本单位分配给每个用户程序,逻辑上相邻的页面在物理内存中不一定相邻。

2.2.2实现

内存分配时,增加段式管理和页式管理;
系统必须为每个程序建立一张段表,一个段又被划分成若干页,系统又为每个段建立一张页表;
段表中记录该段对应页表的起始地址和长度;
页表则给出该段的各个逻辑页面与内存块号之间的对应关系;
采用位示图法建立内存分配表,用于记录和管理内存空闲块;
在地址转换时,硬件提供段表起始地址寄存器、段表长度寄存器等支持。

三、存储管理方案总结

在各种存储管理方案:
(1)以一个进程为单位分配一组连续的内存单元:固定分区,可变分区
(2)要求进程的逻辑地址与内存存储区域都是连续的存储管理方案是:固定分区,可变分区
(3)可能产生外部碎片的是:段式,可变分区(动态分区)
(4)可能产生内部碎片的是:虚拟页式,段页式,固定分区
(5)可进行进程部分交换的是:页式,段式,段页式
(6)可以将整个进程进行交换的是:固定分区,可变分区
(7)能支持多道程序设计的是:可变分区存储管理,页式存储管理,固定分区存储管理,段页式存储管理
(8)可“扩充”内存容量的方案是:虚拟页式,虚拟段式
(9)可以与虚拟存储技术结合使用:页式,段式,段页式


http://www.ppmy.cn/devtools/113733.html

相关文章

System.out源码解读——err 和 out 一起用导致的顺序异常Bug

前言 笔者在写一个小 Demo 的过程中&#xff0c;发现了一个奇怪的问题。问题如下&#xff1a; // 当 flagtrue 时打印 a1 &#xff1b;当 flagfalse 时打印 a2。 public static void main(String[] args) {boolean flag false;for (int i 0; i < 10; i) {if (flag) {Sys…

python中Web开发框架的使用

Python 的 Web 开发框架种类繁多&#xff0c;常见的有 Django 和 Flask 这两个框架。它们各有优点&#xff0c;适合不同类型的 Web 应用开发需求。下面&#xff0c;我将详细介绍这两大主流框架的使用方法&#xff0c;让你快速上手 Python 的 Web 开发。 1. Django Django 是一…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器

文章目录 垃圾回收机制Stop-the-World垃圾收集器垃圾收集器分类Serial 收集器Serial Old 收集器ParNew 收集器Parallel Scavenge 收集器Parallel Old 收集器CMS 收集器CMS 收集器缺点 G1 收集器G1 收集器特点G1 收集器的分代理念G1 收集器运作过程 垃圾回收机制 垃圾回收&…

Games101图形学笔记——着色

Shading Z-buffering&#xff08;深度缓冲&#xff09; Shading&#xff08;着色&#xff09;画家算法Z-BufferShading(着色&#xff09;Blinn-Phong Reflectance Model&#xff08;布林冯反射模型&#xff09;漫反射能量守恒 着色高光Blinn-Phong Reflection ModelShadingFreq…

工作笔记之CentOS7 重启 RocketMQ

在 CentOS 7 上&#xff0c;RocketMQ 是一个流行的分布式消息中间件&#xff0c;在大规模消息处理和实时数据传输中有着广泛的应用。本文将详细介绍笔者如何在 CentOS 7 上重启 RocketMQ&#xff0c;包括启动 NameServer 和 Broker 这两个核心组件。 作者&#xff1a;朱元禄&am…

『功能项目』怪物的有限状态机【42】

本章项目成果展示 我们打开上一篇41项目优化 - 框架加载资源的项目&#xff0c; 本章要做的事情是按照框架的思想构建项目并完成怪物的自动巡逻状态&#xff0c;当主角靠近怪物时&#xff0c;怪物会朝向主角释放技能 首先新建脚本&#xff1a;BossCtrl.cs (通常把xxxCtrl.cs脚…

【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署

【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【图像分类】【OnnxRuntime】【Python】VggNet模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONN…

iPhone 上丢失了重要的联系人?如何恢复已删除的 iPhone 联系人

丢失 iPhone 上的联系人可能会带来灾难。无论是一份很棒的新工作机会、潜在的恋爱对象&#xff0c;还是您一直想打电话的老朋友&#xff0c;如果您打开“联系人”应用时看到空白&#xff0c;这绝不是好事。不过&#xff0c;一切并非全无&#xff0c;仍然可以通过备份或专业软件…