《计算机操作系统》(第4版)第4章 存储器管理 复习笔记

news/2024/9/20 7:12:27/ 标签: 计算机操作系统, 笔记

4 

一、存储器的层次结构

1. 多层结构的存储器系统

如图4-1所示,在存储层次中越往上,存储介质的访问速度越快,价格也越高,相对存储容量也越小。

图4-1 计算机系统存储层次示意

2.三级存储系统

(1)Cache- 主存存储体系

目的:弥补主存速度的不足。 (2)主存-辅存存储体系

目的:弥补主存容量的不足。

二、程序的装入和链接

在多道程序环境下,要使程序运行,必须先将它装入内存,然后再将其变为一个可以执行的程序,通常都要 经过以下几个步骤:编译、链接和装入。图4-2显示出了三步过程。

图4- 2 对用户程序的处理步骤

1. 程序的装入

程序的装入指的是由装入程序将装入模块装入内存,有以下三种方式:

(1)绝对装入方式。

(2)可重定位装入方式。

(3)动态运行时的装入方式。

【说明】动态运行装入需要一个重定位寄存器的支持。

2. 程序的链接

(1)静态链接方式。

(2)装入时动态链接。

(3)运行时动态链接。

三、连续分配存储管理方式

1. 单一连续分配

2. 固定分区分配

(1)划分分区的方法

 分区大小相等。

②分区大小不等。

(2)内部碎片

程序小于固定分区大小时,也会占用一个完整的分区空间,此时分区内部就存在空间浪费,称为内部碎片。

3. 动态分区分配

(1)动态分区分配又称为可变分区分配,它是根据进程的实际需要,动态地为之分配内存空间。

(2)回收内存时可能的情况;

①回收区与插入点的前一个空闲分区F 相邻接,见图4-3(a)。此时应将回收区与插入点的前一分区合并, 不必为回收分区分配新表项,而只需修改其前一分区F₁ 的大小。

②回收分区与插入点的后一空闲分区F 相邻接,见图4-3(b)。此时也可将两分区合并,形成新的空闲分区, 但用回收区的首址作为新空闲区的首址,大小为两者之和。

③回收区同时与插入点的前、后两个分区邻接,见图4-3(c)。此时将三个分区合并,使用F 的表项和F 的首址,取消F₂ 的表项,大小为三者之和。

图4-3 内存回收时的情况

④回收区既不与F₁ 邻接,又不与F₂ 邻接。这时应为回收区单独建立一个新表项,填写回收区的首址和大小, 并根据其首址插入到空闲链中的适当位置。

4. 基于顺序搜索的动态分区分配算法

(1)顺序搜索的定义

顺序搜索是指依次搜索空闲分区链上的空闲分区,去寻找一个大小能满足要求的分区。

(2)基于顺序搜索的动态分区算法的分类

①首次适应(first fit,FF)算法。

②循环首次适应(next fit,NF)算法。

③最佳适应 (best fit,BF)算法。

④最坏适应 (worst fit,WF) 算法。

【说明】其中,首次适应算法是最简单、最好最快的算法。

5. 基于索引搜索的动态分区分配算法

(1)快速适应算法。

(2)伙伴系统。

(3)哈希算法。

6. 逻辑地址空间与物理地址空间

(1)编译后,每个目标模块都从0号单元开始编址,这称为该目标模块的相对地址(逻辑地址)。

(2)链接程序依次按照各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间。

(3)物理地址空间是指内存中物理单元的集合。

(4)通过地址转换将逻辑地址转换为物理地址的过程称为地址重定位。

四、对换(交换)和覆盖

1. 覆盖的基本思想

将用户空间分成一个固定区和若干覆盖区。将经常活跃的部分放在固定区,其余部分按调用关系分段。首先 将即将访问的段调入覆盖区,其他段存于外存。在需要时,系统将其调入覆盖区,覆盖原有段。

2 . 对换

(1)换入

把准备好竞争CPU 运行的程序从辅存移到内存的过程称为换入。

(2)换出

把处于阻塞状态的程序从内存移到辅存的过程称为换出。

3.对换与覆盖的区别

(1)覆盖用于同一个作业或进程中。

(2)交换用于不同的作业或进程中。

五、分页存储管理方式

1.分页存储管理的基本方法

(1)页面和物理块 ①页面

分页存储管理是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。

②物理块

把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框。 (2)地址结构

分页地址中的地址结构如下:

前一部分为页号P,   后一部分为位(偏)移量W,   即页内地址。图中的地址长度为32位,其中0~11位为 页内地址,即每页的大小为4KB;1231  位为页号,地址空间最多允许有1M  

(3)页表

系统为每个进程建立了一张页表。如图4-4所示。页表的作用是实现从页号到物理块号的地址映射。

图4-4 页表的作用

2. 地址变换机构

(1)地址变换机构的基本任务

借助页表,将逻辑地址中的页号转换为内存中的物理块号。

(2)基本的地址变换机构

页表的功能可以由一组专门的寄存器来实现。图4-5显示出了分页系统的地址变换机构。

图4-5 分页系统的地址变换机构

(3)具有快表的地址变换机构

①快表 (TLB)  是一个具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”。

②增加快表原因:页表是存放在内存中的,则CPU 每存取一个数据时,都要两次访问内存。为了提高地址 变换速度,增设快表。

【说明】两次访存指:第一次访问内存得到物理地址;第二次根据物理地址访问对应的内存单元。

TLB 中用于存放当前访问的若干页表项。 

图4-6显示了具有快表的地址变换机构。

图4-6 具有快表的地址变换机构 【说明】读者应能清晰描述出地址变换的过程,这是重要考点。

3. 访问内存的有效时间

(1)定义

从进程发出指定逻辑地址的访问请求,经过地址变换,到在内存中找到对应的实际物理地址单元并取出数据, 所花费的总时间,称为内存的有效访问时间 (EAT)。

(2)基本分页管理的有效时间

假设访问一次内存的时间为t,在基本分页存储管理方式中,存取一条指令或一个数据至少需要两次访存。 则EAT=t+t=2t。

(3)引入快表管理的有效时间

①命中率是指使用快表并在其中成功查找到所需页面的表项的比率。

②在引入快表的分页存储管理方式中,有效访问时间的计算公式即为: EAT=axλ+(t+λ)(1-a)+t=2t+λ-txa

上式中,λ表示查找快表所需要的时间,a  表示命中率,t   表示访问一次内存所需要的时间。

【说明】快表的有效性基于局部性原理。

4. 两级和多级页表

(1)两级页表

两级页表的逻辑地址结构如图4-7所示。

图4- 7 两级页表结构

(2)多级页表

①建立多级页表的目的是建立索引,不用浪费主存空间去存储无用的页表项。

②顶级页表最多只能有1个页面。 

【说明】页式地址空间是一维的。

六、分段存储管理方式

1. 分段存储管理方式的引入

分段管理方式满足了方便编程、信息共享、信息保护、动态增长、动态链接的需要。

2.分段系统的基本原理

(1)分段

在分段存储管理方式中,作业的地址空间被划分为若干个段。逻辑地址由段号和段内地址所组成。

图4-8 分段系统中的逻辑地址结构

(2)段表

①每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又称为“基址”)和段的长度,如图 4-9所示。

②段表可以存放在一组寄存器中,这样有利于提高地址转换速度,但更常见的是将段表放在内存中。

③段表用于实现从逻辑段到物理内存区的映射。

图4-9 利用段表实现地址映射

(3)地址变换机构

①在进行地址变换时,系统将逻辑地址中的段号S 与段表长度TL 进行比较 a.  S>TL, 表示段号太大,是访问越界,于是产生越界中断信号。

b. 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起 始地址。

②检查段内地址d 是否超过该段的段长SL

a.   若超过,即d>SL,   同样发出越界中断信号。

b. 若未越界,则将该段的基址d 与段内地址相加,即可得到要访问的内存物理地址。图4-10显示了分段系 统的地址变换过程。

图4-10 分段系统的地址变换过程

【说明】段式地址空间是二维的。

3. 段页式存储管理方式

(1)分页、分段式存储管理方式的优点

①分页式存储管理方式以页面作为内存分配的基本单位,能有效地提高内存利用率。

②分段式存储管理以段作为内存分配的基本单位,能够更好地满足用户多方面的需要。

(2)段页式存储管理方式的基本原理

①段页式系统的基本原理是分段和分页原理的结合

即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。图4-11 (a)     了一个作业地址空间的结构。该作业有三个段:主程序段、子程序段和数据段;页面大小为4KB。在段页式系 统中,其地址结构由段号、段内页号及页内地址三部分所组成,如图4-11 (b)   所示。

图4-11 作业地址空间和地址结构

②段页式系统利用段表和页表实现地址映射

图4-12示出了利用段表和页表进行从用户地址空间到物理(内存)空间的映射。

图4-12 利用段表和页表实现地址映射

【注意】段页式存储管理下,在一个进程中,段表只有一个,页表可能有多个。

(4)地址变换过程

①地址变换机构

a.  进行地址变换时,首先利用段号S,   将它与段长 TL 进行比较。

b. S<TL, 表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得 到该段的页表始址。

c. 并利用逻辑地址中的段内页号P 来获得对应页的页表项位置,从中读出该页所在的物理块号b,  再利用 块号b 和页内地址来构成物理地址。图4-13示出了段页式系统中的地址变换机构。

图4-13 段页式系统中的地址变换机构

②内存访问过程

在段页式系统中,为了获得一条指令或数据,需三次访问内存:

a. 访问内存中的段表,从中取得页表始址;

b.  访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理 地址;

c.  从第二次访问所得的地址中取出指令或数据。

③在段页式系统中也可增设高速缓冲寄存器 (Cache),   以提高平均访问速度。

【说明】段页式地址空间是二维的。


http://www.ppmy.cn/news/1514346.html

相关文章

linux下搭建MySQL8.0.25一主一从

一、主从复制概述 1.1、概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行…

AI大模型开发——7.百度千帆大模型调用

本节旨在为读者提供一个实用指南&#xff0c;探讨如何有效地利用百度千帆大模型平台的强大功能。从基础的账号注册和密钥申请入手&#xff0c;逐步引领用户通过案例&#xff0c; 理解并掌握如何调用文本和图像处理的大模型 API&#xff0c; 包括但不限于 NLP、对话生成、文本续…

windows bash获取一个目录下所有的文件

在Windows系统中&#xff0c;我们可以使用命令行工具来获取文件夹下的所有文件名。具体操作如下&#xff1a; 1. 打开命令提示符&#xff08;WinR&#xff0c;输入cmd&#xff0c;回车&#xff09;&#xff1b; 2. 进入需要提取文件名的文件夹&#xff08;使用cd命令&#xf…

sqlilabs less16-20关手工注入

第16关 一.判断闭合方式 闭合方式点“&#xff09; admin")and11# 二.判断数据库长度 admin") and if(length(database())>7, 0, sleep(5))# 页面无延迟 admin") and if(length(database())>8, 0, sleep(5))# 页面有延迟说明数据库长度为8 三.判断数…

spark全面个人总结(20个面试点)非网文

1. 请简述Spark的工作原理和架构&#xff1f; 基于RDD&#xff0c;一种数据结构&#xff0c;含数据项、处理函数、血缘。spark解析任务&#xff0c;生成rdd&#xff0c;并将系列rdd转换成一系列物理计划&#xff0c;然后发送到集群上的各个节点执行。spark负责管理这些任务&a…

UV LED供电为什么要选择使用恒流驱动电源

LED为何一定要恒流供电? 在讨论此议题之前&#xff0c;什么是电源的恒流恒压&#xff1f; 什么是电源的恒流恒压   恒流&#xff0c;就是输出电流是恒定的&#xff0c;但电源电流却不是固定的&#xff0c;标称的电压只是安全上限&#xff1b;恒压&#xff0c;就是输出电压是…

Mysql varchar的最大值到底有多少

MySQL中varchar类型的最大值受到多个因素的影响&#xff0c;包括MySQL的版本、字符集以及行的其他字段配置。以下是对varchar最大值的一个详细解析&#xff1a; 1. MySQL版本差异 MySQL 4.1及以前版本&#xff1a;varchar的最大长度限制为255字节。MySQL 5.0及以后版本&#…

Ps:首选项 - 图像处理

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“图像处理” Image Processing选项卡让用户可以根据当前工作任务的需要&#xff0c;在处理速度和结果的精细度之间找到平衡。这些设置可以帮助优化 Photoshop 的处理性能&…

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2)

STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2) 简介 实验 2&#xff1a;在单片机搭建好 tcp 服务器后&#xff0c;编写传送文件的上位机。 整体实现 - 利用qt的tcpsocket简单封装 - 每次发送512字节&#xff0c;这样小的tcp包就不会自动分包。保证每一个51…

无人驾驶,并非无人之地

图片&#xff5c;Photo by 萝卜快跑 ©自象限原创 作者丨罗辑 老司机又双叒叕被“抢”了&#xff1f; 随着武汉无人驾驶的Robotaxi在各社交媒体平台出圈&#xff0c;自动驾驶安全员的职业从幕后走向台前&#xff0c;近期&#xff0c;招聘平台信息也显示&#xff0c;萝卜…

React Native中好用的UI组件库

文章目录 前言1.React Native ElementsStar数超24K地址 2.React Native UI KittenStar数超20K地址 3.NativeBaseStar数超20K地址 前言 下面是React Native中一些常用的UI库 1.React Native Elements Star数超24K 官方介绍 React Native Elements 的目标是提供一套用于在 Rea…

wpf DataTemplate 和 ControlTemplate 区别,应用举例

在WPF中&#xff0c;模版&#xff08;ControlTemplate &#xff09; ControlTemplate用于定义控件的内部结构和外观&#xff0c;它决定了控件的“长成什么样子”&#xff0c;并允许开发者在控件原有的内部逻辑基础上扩展自己的逻辑。DataTemplate则专注于数据内容的展示方式&am…

Parallels Desktop 19 for Mac 安装虚拟机需要激活吗

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

【Docker】gitea的ssh容器直通

本文首发于 ❄️慕雪的寒舍 1.跟着文档走 gitea的安装比较简单&#xff0c;直接使用官方文档中的docker-compose文件即可。如果想实现ssh容器直通&#xff0c;需要对这个docker-compose文件做一定修改。 如果你还没有安装docker&#xff0c;参考本站教程 linux安装docker&…

手机麻将APP开发违法吗,有哪些注意的地方呢?

在我的职业生涯中&#xff0c;我处理过许多因开发或运营手机游戏而遭遇法律处罚的案例。游戏作为一种传统的娱乐形式&#xff0c;在中国拥有广泛的受众。然而&#xff0c;随着智能手机的普及&#xff0c;手机游戏的开发和运营逐渐成为热门领域&#xff0c;但其中也存在不少法律…

c++链表(list)

前言 链表作为一个常见的数据结构&#xff0c;在高频插入删除的场景下有独特的优势&#xff0c;在内存的使用上也极少有浪费可以按需申请。今天我们就来简单的学习一下这种数据结构&#xff0c;链表也有很多不同的实现&#xff0c;我们这里和标准库保持一致&#xff0c;实现带…

docker手动部署django项目Dockerfile编排-后端发布

1、首先创建一个桥接网络 docker network create auto 2、部署redis,提供celery的消息队列服务 docker run --name redis --restartalways -d --network auto -v redis:/data redis:alpine3、部署数据库 注意数据库账号密码 docker run --name mariadb --restartalways -d…

远程消息传递的艺术:NSDistantObject在Objective-C中的妙用

标题&#xff1a;远程消息传递的艺术&#xff1a;NSDistantObject在Objective-C中的妙用 引言 在Objective-C的丰富生态中&#xff0c;NSDistantObject扮演着至关重要的角色&#xff0c;特别是在处理分布式系统中的远程消息传递。它允许对象之间跨越不同地址空间进行通信&…

基于矢量控制器的PMSM永磁同步电机速度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于矢量控制器的PMSM永磁同步电机速度控制系统simulink建模与仿真&#xff0c;仿真输出电机转速跟踪曲线&#xff0c;PID控制器输出曲线以及Te输出曲线。 2.系统仿真结果 &…

通过访存地址获取主存数据的过程

目录 1.根据访存地址在Cache中查找数据 2.如果在Cache中命中 3.如果没有命中 4.数据送CPU 5.做几道题&#xff1a; 主要厘清思路&#xff0c;中间细节需自行补充! 1.根据访存地址在Cache中查找数据 ① 访存地址的结构会根据Cache和主存之间的映射方式不同而改变。映射方式…