虚拟存储 分段分页段页解读(上)

简介: 虚拟存储 分段分页段页解读

虚拟存储概念

背景

如果一个作业,需要全部装入内存后方能运行,会有什么情况?

(1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行;

(2) 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待

特点:

(1) 一次性

(2) 驻留性

局部性原理

程序运行时存在的局部性现象,很早就已被人发现,但直到1968年,P.Denning才真正指出:程序在执行时将呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域。

(1) 时间局限性。

(2) 空间局限性。

应用程序在运行之前没有必要将之全部装入内存,而仅须将那些当前要运行的少数部分数据先装入内存便可运行,其余部分暂留在盘上。

虚拟存储器定义

当用户看到自己的程序能在系统中正常运行时,他会认为,该系统所具有的内存容量一定比自己的程序大,或者说,用户所感觉到的内存容量会比实际内存容量大得多。但用户所看到的大容量只是一种错觉,是虚的,故人们把这样的存储器称为虚拟存储器。

虚拟存储器的三个重要特征:

(1) 多次性。

(2) 对换性。

(3) 虚拟性。

虚拟存储器的实现?

具体怎么实现呢?是将整个程序一起载入内存中吗?

不是!采用离散存储方式

离散存储方式

(1) 分页存储管理方式。

(2) 分段存储管理方式。

(3) 段页式存储管理方式。

分页存储管理

分页存储的背景

引入分页: 解决内存分区导致的内存效率问题。

为了让面包没有谁都不想要的碎末:将面包切成片,将内存分成页!针对每个内存请求,系统一页一页的分配。

内存分页中,每页的大小通常是固定的,常见的页大小有 4KB、8KB、16KB、32KB 等。选择页大小时需要考虑以下因素:

1. 内存利用率:较小的页大小可以更好地利用内存空间。但是,页越小,页表的项数就越多,页表占用的内存空间就越大。

2. 外部碎片:过小的页大小容易导致外部碎片,即内存中的一些空闲区域无法被利用。

3. 内部碎片:过大的页大小容易导致内部碎片,即实际使用的空间比页的大小小,导致浪费。

通常来说,4KB 是最常用的页大小,因为它可以更好地平衡内存利用率和页表大小。而对于需要处理大量大型数据的应用程序,较大的页大小可以提高数据访问速度,但是可能会降低内存利用率。

分页存储管理的基本方法

页面和物理块

(1) 页面。

(2) 页面大小。

地址结构

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

对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按下式求得:

页表

在分页系统中,允许将进程的各个页离散地存储在内存的任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到每个页面所对应的物理块,系统又为每个进程建立了一张页面映像表,简称页表。

分页存储的地址变换

基本的地址变换机构

进程在运行期间,需要对程序和数据的地址进行变换,即将用户地址空间中的逻辑地址变换为内存空间中的物理地址,由于它执行的频率非常高,每条指令的地址都需要进行变换,因此需要采用硬件来实现(MMU)。页表功能是由一组专门的寄存器来实现的。一个页表项用一个寄存器

页表指针存在PCB中

具有快表的地址变换机构

由于页表是存放在内存中的,这使CPU在每存取一个数据时,都要两次访问内存。第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量W拼接,以形成物理地址。第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将使计算机的处理速度降低近1/2。可见,以此高昂代价来换取存储器空间利用率的提高,是得不偿失的。


相关文章
|
22天前
|
存储 缓存 数据安全/隐私保护
段页存储
段页存储
36 0
|
22天前
|
存储 算法 调度
【软件设计师备考 专题 】存储管理(主存保护、动态连接分配、分段、分页、虚存)
【软件设计师备考 专题 】存储管理(主存保护、动态连接分配、分段、分页、虚存)
56 0
|
22天前
|
存储 缓存 数据安全/隐私保护
分段存储
分段存储
40 0
|
22天前
|
缓存 算法 Linux
Linux内存管理宏观篇(三)物理内存:物理页面
Linux内存管理宏观篇(三)物理内存:物理页面
72 1
|
7月前
|
存储
分页与分段(1)
分页与分段
21 0
|
7月前
|
存储
分页与分段(2)
分页与分段(1)
27 0
|
7月前
|
存储 缓存 Linux
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
虚拟内存的主要作用是提供更大的地址空间,使得每个进程都可以拥有大量的虚拟内存,而不受物理内存大小的限制。此外,虚拟内存还可以提供内存保护和共享的机制,保护每个进程的内存空间不被其他进程非法访问,并允许多个进程共享同一份物理内存数据,提高了系统的资源利用率。虚拟内存的实现方式有分段和分页两种,其中分页机制更为常用和灵活。分页机制将虚拟内存划分为固定大小的页,将每个进程的虚拟地址空间映射到物理内存的页框中。为了减少页表的大小和访问时间,采用了多级页表的方式,将大的页表划分为多个小的页表,只加载需要的页表项,节约了内存空间。
222 0
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
|
8月前
内存分段和按需分页
内存分段和按需分页
|
11月前
|
存储 算法 程序员
虚拟存储 分段分页段页解读(下)
虚拟存储 分段分页段页解读(下)
|
11月前
|
存储 算法 5G
【软考学习12】页式存储、段式存储、段页式存储和物理逻辑地址转换
【软考学习12】页式存储、段式存储、段页式存储和物理逻辑地址转换
1091 0

热门文章

最新文章