内存管理(三)——非连续分配管理方式(分页)

简介: 内存管理(三)——非连续分配管理方式(分页)

一、概要

基本概念: 操作系统对内存的划分和动态管理。
带来的好处: 方便用户实用存储器、提高内存利用率、通过虚拟技术从逻辑上扩充内存。
OS提供的功能: ①内存空间的分配和回收 ②地址转化 ③内存扩充 ④存储保护

二、连续和非连续的比较

(1)回顾:

上期的博客中,我们梳理了,操作系统内存分配的连续分配管理方式,分别有:单一分配、固定分配、动态分配。本期我们梳理关于非连续分配管理方式
在这里插入图片描述

(2)简述:

连续分配管理方式是将程序整个装入一块连续的内存空间,如果用户需要1GB的内存空间,连续分配方式就是在内存空间中为用户分配一块连续的1GB内存。但是如果没有连续的1GB的空间,则该作业仍然是无法运行的。所以我们引入非连续分配管理方式,使得该作业可以分散地在内存地各个区域,当然,也需要额外地空间区存储它们(分散区域)的索引。这也导致连续分配管理方式的存储密度相比连续更低。

(3)分类:

根据运行作业是否要把作业的所有页面装入内存才能运行,又细分为:基本分页和请求分页。

三、分页?

(1)引入:

固定分区会产生内存碎片,动态分区会产生外部碎片,这两种技术对内存的利用率都比较低。我们希望内存的使用能够尽量避免碎片的产生,就引入了分页的思想:把内存划分为大小相等且固定的“块”,“块”相对较小,作为主存的基本单位。把进程也分为以“块”为单位进行划分,进程在执行时,以块为单位逐个申请内存空间。 (注意这里的块在后续叫法有变)

(2)区分:块、页、页框、页帧、内存块、物理页面、物理块?

区分:
进程的”称为:页(page或者页面);内存中的“块”称为页框(Page Frame或者页帧);外存中称为块(Block) ——《王道考研》
进程的地址空间被划分为若干个相等大小的区域,称为:页或页面;内存的存储空间也分为与页面大小相等的区域,称为:块或物理块;在为作业分配存储空间时,以块为单位来分配,可以将作业中的任意一页放到内存的任意一块中。内存中与页面大小相等的块也可以称为:页框 ——《天勤考研》
在这里插入图片描述

(3)页表:

为了将逻辑地址上连续的页号映射到物理地址上,需要将页面和每个物理块一一对应,这就有操作系统建立页表 来体现这种映射关系。
在这里插入图片描述

1) 每个页表项多大?占几个字节?

块号: 必须满足能够存放块号的所有范围。
页号: 页表项连续存放, 因此页号可以是隐含的,不占存储空间(类比数组) 【重点后续会用到】
在这里插入图片描述
页表项中块号起记录作用,但是它本身也需要存放在内存中,并且连续存放。
在这里插入图片描述
如果每个页表项占 4字节,则每个页框刚好可存放 1024个页表项1024 号页表项虽然是存放在下一个页框中的,但是它的地址依然可以用 X + 41024 得出:
*结论
:理论上,页表项长度为 3B 即可表示内存块号的范围,但是,为了方便页表的查询,常常会让一个页表项占更多的字节,使得每个页面恰好可以装得下整数个页表项。
在这里插入图片描述

2)如何通过页表实现逻辑地址到物理地址的转换?

首先我们需要找到逻辑地址对应的页号和偏移量。
在这里插入图片描述

3)如何确定一个逻辑地址对应的页号、页内偏移量?

在这里插入图片描述
重要结论:
①在计算机内部,地址是用二进制表示的,如果页面大小 刚好是 2 的整数幂,则计算机硬件可以很快速的把逻辑地址拆分成(页号,页内偏移量)。
②如果每个页面大小为 2(K次)B,用二进制数表示逻辑地址,则末尾 K 位即为页内偏移量,其余部分就是页号。
在这里插入图片描述
重要结论:
①如果页面大小刚好是2的整数幂,则只需把页表中记录的物理块号拼接上页内偏移量就能得到对应的物理地址。
②根据页号可以查询页表,而页表中记录的只是内存块号,而不是内存块的起始地址!J 号内存块的起始地址 = J * 内存块大小

在这里插入图片描述

4)为何页面大小要取2的整数幂?

在这里插入图片描述

(3)逻辑地址结构:

页面的大小由机器的地址结构决定。在确定地址结构时,若选择的页面较小,可使页面内碎片较小,提高内存利用率;但是也会导致进程要求的页面过多,从而页表过长,占用内存过多,还会减低页面换进换出的效率。
在这里插入图片描述

四、基本分页存储

(1)基本地址变化机构

1)基本地址转化

在这里插入图片描述
在这里插入图片描述

2)练习题

在这里插入图片描述
注意: 在分页存储管理(页式管理)的系统中,只要确定了每个页面的大小,逻辑地址结构就确定了。 因此,页式管理中地址是一维的。即,只要给出一个逻辑地址,系统就可以自动地算出页号、页内偏移量 两个部分,并不需要显式地告诉系统这个逻辑地址中,页内偏移量占多少位

五、具有快表的地址变换机构

(1)什么是快表?

简单地说:是基本地址变换机构的改进版本。
在这里插入图片描述

(2)升级了那些?

流程对比:
在这里插入图片描述
表格对比:
在这里插入图片描述

(3)局部性原理:

在这里插入图片描述

(4)引入快表后地址的变化:

在这里插入图片描述
在这里插入图片描述

(5)能否把整个页表都放在TLB中?

那肯定不行,但是在快表满了的时候,我们可以通过置换算法将一些页表项进行替换。
在这里插入图片描述

六、两级页表

(1)单级页表存在的问题:

从页表大小的计算公式可知,页表大小和页表长度成正比,而页表长度又随着页号位数的增长而呈指数式增长。所以,如果系统的逻辑地址的位数比较多,页表会很大,而整张页表要求需要连续地存放在内存中,这是一件很困难地事情。所以引出两级页表。
在这里插入图片描述

(2)如何解决单级页表的问题?

①问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。

解决办法: 把页表再分页并离散存储,然后再建立一张页表记录页表各个部分的存放位置,称为页目录表,或称外层页表,或称顶层页表。这样解决了需要给它分配一块很大的连续空间问题
在这里插入图片描述
在这里插入图片描述

②问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。在这里插入图片描述

(3)如何实现地址变换?

先用一级页号在一级页表上查找,找出单元内容是二级页表地首地址,页表地首地址加二级地址就是页表项地地址,取出里头数值,就是物理块号。然后物理块号与页内地址拼接就得到了物理地址。
在这里插入图片描述

(4)页的共享与保护

在这里插入图片描述
到改页面对应的块号,同时还要检查本次操作与存取控制字段允许的操作是否相符,若不相符由硬件捕获并发出保护中断。

七、分页存储管理方式的优缺点

在这里插入图片描述

相关文章
|
4天前
|
算法 程序员
深入理解操作系统内存管理:分页系统的优势与挑战
【4月更文挑战第7天】 在现代操作系统中,内存管理是一项至关重要的任务,它确保了计算机能够高效、安全地运行各种程序。分页系统作为内存管理的一种技术,通过将物理内存分割成固定大小的单元——页面,为每个运行的程序提供了一种独立且连续的内存地址空间。该技术不仅简化了内存分配,还允许更高效的内存使用和保护。本文探讨了分页系统的核心原理,优势以及面临的挑战,旨在为读者揭示其在操作系统设计中的重要性。
|
4天前
|
存储 程序员 编译器
在C语言中.如何正确地分配和释放内存docx
在C语言中.如何正确地分配和释放内存docx
17 1
|
4天前
|
存储 C++
C/C++数据类型从0到内存具体分配详解
C/C++数据类型从0到内存具体分配详解
|
4天前
关于为什么要在链表中用malloc来分配内存
关于为什么要在链表中用malloc来分配内存
|
4天前
为对象分配内存TLAB
为对象分配内存TLAB
|
4天前
|
安全 Linux Windows
深入理解操作系统内存管理:分页与分段的融合
【4月更文挑战第30天】 在现代操作系统中,内存管理是确保多任务环境稳定运行的关键。本文将深入探讨分页和分段两种内存管理技术,并分析它们如何相互融合以提供更为高效、安全的内存使用策略。通过对比这两种技术的优缺点,我们将探索现代操作系统中它们的综合应用,以及这种融合对操作系统设计和性能的影响。
|
4天前
|
存储
CPU的内存分页
CPU的内存分页是一种内存管理机制,旨在优化内存的使用效率和程序的运行效率。在现代计算机系统中,整个虚拟和物理内存空间被切割成固定大小的块,称为页(Page)和帧(Frame)。页用于虚拟地址空间,而帧用于物理内存空间。这些页和帧的大小通常是固定的,比如常见的4KB。 CPU通过内存管理单元(MMU)来实现虚拟地址到物理地址的转换。这个转换过程是通过页表来完成的,页表存储在内存中,并保存了页号与页帧号的映射关系。当CPU需要访问某个虚拟地址时,它会查阅页表,找到对应的物理地址,然后完成内存访问。 内存分页的主要好处有以下几点: 1. **减小换入换出的粒度**:内存分页允许操作系统以更小
18 0
|
4天前
|
存储 编译器 程序员
【C语言】内存的动态分配与释放
【C语言】内存的动态分配与释放
29 0
|
4天前
|
缓存 算法 安全
深入理解操作系统内存管理:分页系统的优势与挑战
【2月更文挑战第30天】 在现代操作系统中,内存管理是核心功能之一,它负责将有限的物理内存资源分配给多个并发运行的进程。分页系统作为内存管理的一种流行技术,其通过虚拟到物理地址的映射提供了程序的逻辑地址空间,并允许更高效的内存分配和保护。本文旨在探讨分页系统的关键优势,包括其如何提升内存利用率、实现内存保护以及支持多任务处理。同时,我们也将分析分页机制带来的挑战,诸如页面置换算法的效率问题、页表管理和TLB(Translation Lookaside Buffer)的维护等。
|
4天前
|
存储 算法
深入理解操作系统内存管理:分页系统的优势与挑战
【2月更文挑战第29天】 在现代操作系统中,内存管理是核心功能之一,它负责有效地分配、跟踪和回收内存资源。分页系统作为一种内存管理技术,已经成为大多数操作系统的标准配置。本文将探讨分页系统的原理、优势以及面临的挑战。通过对分页机制的深入分析,我们旨在提供一个全面的视角,以帮助读者更好地理解这一关键技术如何影响操作系统的性能和稳定性。