存储器管理-基本分页存储管理

简介: 存储器管理-基本分页存储管理

基本分页存储管理的基本概念


连续分配的缺点:

1.固定分区分配:缺乏灵活性,产生大量内部碎片,内存利用率很低

2.动态分区分配:产生很多外部碎片,可以用‘紧凑’技术处理,但代价很高

连续分配:为用户进程分配的必须是一个连续的内存空间。

非连续分配:为用户分配的是一些分散的内存空间。

基本分页存储管理思想:

把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。

具体方法:

将内存空间分为一个个大小相等的分区,每个分区就是一个‘页框’,或称‘页帧’,‘内存块’,‘物理块‘。每个页框有页框号,从0开始。

将用户进程的地址空间也分为与页框大小相等的一个个区域,称为“页”或“页面”。每个页面也有一个编号,即“页号”,从0开始。(进程的最后一个页面可能没那么大,页框不能太大,防止产生过大的内部碎片)

操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。页面不必连续存放,也不必按先后顺序来,可以放到不相邻的页框中。

如何实现地址转换:

1.算出逻辑地址对应的页号

2.知道页号在内存中的起始地址

3.算出逻辑地址在页面内的“偏移量”

4.物理地址=页面始址+页面偏移量

页号=逻辑地址/页面长度(取整数部分)

页内偏移量=逻辑地址%页面长度

1号页在内存中存放的起始位置450

逻辑地址结构:

如果让每个页面大小为2的整数幂,计算机可以很方便的得出一个逻辑地址对应的页号和页内偏移量。

地址结构包含两个部分:前一部分为页号,后一部分为页内偏移量。

如果有k位表示“页内偏移量”,则说明该系统一个页面的大小为2^k个存储单元

如果有k位表示“页号“,说明在该系统中,一个进程最多允许2^m个页面

页表:

为了能知道进程的每个页面在内存中存放的位置

1.一个进程对应一张页表

2.进程的每一页对应一个页表项

3.每个页表项由页号和块号组成

4.页表记录进程页面和实际内存块有对应关系

5.每个页表项的长度是相同的,但是长度是"隐含的"


基本地址变换机制:


页表寄存器:

基本地址变换机构可以借助进程的页表将逻辑地址转化为物理地址。

通常会在系统中设置一个页表寄存器,存放页表在内存中的起始地址F和页表长度M

进程未执行时,页表的始址和页表长度放在进程控制块(PCR)中,当进程被调度时,操作系统内核会把他们放到页表寄存器中。

注意:页面大小是2的整数幂

地址变换过程:

设页面大小为L,逻辑地址A到物理地址E的变换过程如下:

1.计算页号p和页内偏移量w

2.比较页号P和页表长度M,如果P>=M,则发生月结中断,否则继续执行

3.页表中页号P对应的页表项地址=页表起始地址F+页号*页表项长度,取出该页表项内容b,即为内存块号

4.计算E=b*L+w,就可以用得到的物理地址E去访存了。

两次访问内存:

第一次,查页表;第二次,访问内存

其他细节

在分页存储管理的系统中,只要确定了每个页面的大小,逻辑结构就确定了。因此,页式管理中地址是一维的

为了方便页表的查询,通常会让一个页表占更多的字节,使得每个页面恰好可以装下整个页表项。


具有快表的地址变换机构


局部性原理:

时间局部性:

如果执行了程序中某条指令,那么不久后这条指令有可能再次被执行;如果某个数据被访问过,不久之后有可能再次被访问

空间局部性:

一旦程序访问了某个存储单元,不久之后,其附近的存储单元页有可能被访问。因为很多数据在内存中是连续村存放的

快表:

又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换过程。内存中的页表常称为慢表。

引入快表后,地址变换过程:

1.cpu给出逻辑地址,由某个硬件算得页号,页内偏移量,将页号与快表中的所有页号进行比较

2.如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出该页的内存块号,再将内存块号与页内偏移量拼接成物理地址,最后访问该物理地址对应的内存单元。因此,若快表命中,则访问某个逻辑地址仅需一次访存即可。

3.如果没有找到匹配的页号,则需要访问内存的页表,找到对应页表项,得到页面存放的内存块号,再将内存块号和与页偏移量拼接成物理地址,最后,访问该物理地址对应的内存单元。因此,若快表未命中,需要访存两次。(注,找到页表项后,应同时将其放入快表,若快表已满,则根据一定的算法进行替换)

因为局部性原理,一般快表的命中率可以达到90%以上


两级页表


将长的页表分组,每个内存块刚好可以放入一个分组,为离散分配的页表再建立一张页表,称为页目录表。

如何实现地址变换:

1.按照地质结构将逻辑地址拆分成三部分

2.从PCB中读出页目录表始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放的位置

3.根据二级页号查表,找到最终想访问的内存块号

4.结合页偏移量得到物理地址

若访问的页面不在内存中,则产生缺页中断(内中断),然后将目标页面从外存调入内存。

细节:

若采用多级页表机制,则各级页表的大小不能超过一个页面。

n级页表的访存次数为n+1。

目录
相关文章
|
2月前
|
存储 缓存 数据安全/隐私保护
段页存储
段页存储
45 0
|
2月前
|
存储 算法 调度
【软件设计师备考 专题 】存储管理(主存保护、动态连接分配、分段、分页、虚存)
【软件设计师备考 专题 】存储管理(主存保护、动态连接分配、分段、分页、虚存)
62 0
|
9月前
|
存储 缓存 算法
存储管理
一、存储管理 存储管理是操作系统中的一个核心功能,它负责管理计算机系统中的主存储器(内存)和辅助存储器(硬盘、光盘等)等存储设备,为进程提供存储空间和管理存储资源。存储管理的主要任务包括以下几个方面: 1. 内存分配:操作系统需要为进程分配内存空间,以便进程可以存储和执行程序。内存分配可以采用静态分配或动态分配的方式,静态分配是在编译时确定分配的内存空间大小,动态分配是在运行时根据进程的需求动态分配内存空间。 2. 内存保护:操作系统需要保护进程的内存空间,防止进程之间相互干扰或访问非法内存区域。内存保护可以采用硬件保护或软件保护的方式,硬件保护是通过硬件机制实现内存隔离和保护,软件保护是通过
401 0
|
9月前
|
存储 算法 调度
分页储存管理.分段储存管理.虚拟储存管理
分页储存管理和分段储存管理是操作系统中常用的两种内存管理方式。 1. 分页储存管理: - 基本原理:将物理内存和逻辑内存划分为固定大小的页面和页面框,使得逻辑地址空间和物理地址空间可以对应起来。进程的逻辑地址空间被划分为多个固定大小的页面,每个页面与一个物理内存页面框对应。通过页表将逻辑地址映射到物理地址,实现地址转换。 - 优点:简单、灵活,能够提供较大的逻辑地址空间,适用于多道程序设计和虚拟内存管理。 - 缺点:存在内部碎片,会造成一定的存储空间浪费。 2. 分段储存管理: - 基本原理:将进程的逻辑地址空间划分为若干个逻辑段,每个逻辑段代表一个逻辑单位,如代码
135 0
|
12月前
|
存储
虚拟存储 分段分页段页解读(上)
虚拟存储 分段分页段页解读
|
2月前
|
存储 算法
分页存储管理与段式存储管理
分页存储管理与段式存储管理
75 3
|
2月前
|
存储
分页存储管理系统的计算
分页存储管理系统的计算
70 2
|
25天前
|
存储 算法 程序员
存储器管理(2)
存储器管理
15 0
|
25天前
|
存储 缓存 算法
存储器管理(1)
存储器管理
20 0
|
2月前
|
存储 缓存 算法
6.存储器管理
6.存储器管理