OS-内存管理1- 4种基本管理方式(连续分配,页式,段式,段页)。

文章介绍了内存管理的四种主要方式,包括单一连续分配、固定分区、动态分区和页式存储。在页式存储中,详细阐述了页框和页号的概念,页表的作用以及快表(TLB)在地址变换中的加速功能。段式存储强调了按逻辑模块分段和段表的概念。最后,段页式存储结合了分段和分页的优点,以减少碎片并支持信息共享和保护。
摘要由CSDN通过智能技术生成

一,内存管理四种方式。

在这里插入图片描述

二,连续分配管理方式。

连续分配方式:为用户分配连续的内存空间。

1.单一连续分配方式

在这里插入图片描述

2.固定分区分配方式

在这里插入图片描述

3.动态分区分配方式

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

4.三种连续分配方式的对比。

在这里插入图片描述

三,基于页式存储管理。

1.页式

为进一步提高内存利用率,尽量避免碎片的产生,引入分页思想:
  ①将内存分为一个个大小相等的分区,每个分区就是一个 “页框/页帧/内存块/物理块/物理页面” 每个页框有一个编号叫"页框号/页帧号/内存块号/物理块号/物理页面号",页框号从0开始。
  ②将进程的逻辑地址空间也分为于页框大小相等的一个个小部分,每部分称 “页/页面” ,每个页有一个编号叫 “页号/页面号” ,从0开始。
在这里插入图片描述

2.基本概念

1.页框/页帧/内存块/物理块/物理页面 与 页/页面 。

2.页框号/页帧号/内存块号/物理块号/物理页面号 与 页号/页面号。

3.页表(实现页号到物理块号的地址映射)
为方便在内存中找到进程每个页面所对应的物理块,系统为每个进程都建立一张页表:记录了页面在内存中对应的物理块号,页表一般存放在内存中,包括页号与块号
在这里插入图片描述

4.逻辑地址A地址结构与确定页号,页内偏移量(由逻辑地址A)
由页表可知,我们只需要由逻辑地址A确定对应的页号与页内偏移量,我们就可以得到逻辑地址A在对应的物理块号中的位置。

①传统方式由逻辑地址A确定页号与页内偏移量:
在这里插入图片描述
注:页面大小决定了逻辑地址A中页内偏移量W占的位数。
注:页号位数决定了 一个进程最多拥有多少个页面。

②由拼接二进制方式确定页号与页内偏移量:
如果页面大小刚好是2的整次幂,则硬件可以很快将逻辑地址A,拆分成 页号P 与 页内偏移量W 假设某计算 32位 表示逻辑地址A。页面大小4KB,按字节编址。
在这里插入图片描述
5.基地址变换机构(具有快表)。
快表:又称相联存储器(TLB,Taranslation,lookaside buffer)是一种访问速度比内存更块的高速缓存(TLB不是内存)。
在这里插入图片描述
注1:p>=M 中" = " 也会产生越界,因为页号从0开始,页表项长度至少是1.
注2:页表项长度:指每个页表项占多大空间。
注3:页表长度:指有多少个页表项。

注4:系统先访问快表,若快表命中则直接访问目标页。
注5:系统先访问快表,若快表失效,则再访问慢表,并将副本放入快表。
注6:系统可同时访问快表与慢表,若快表命中则终止访问慢表。
注7:系统可同时访问快表与慢表,若快表失效,则继续访问慢表,并将副本放入快表。

6.对比基地址变换机构有无快表。
在这里插入图片描述

3.两级页表

普通页式管理遇到问题:
  1.页表必须连续存放,因此当页表很大的时候,需要占用很多个连续的页框,这种方式就失去了意义。
  2.没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。
为解决上述,引入多级页表:
可将长长的页表进行分组,使每个内存块刚好可以放入一个分组。
在这里插入图片描述
另外,要为这些离散的分组再建立一张页表,称为 页目录表 或 外层页表 或 顶层页表。
在这里插入图片描述
注1:若采用多级页表机制,则各级页表大小不可以超过一个页面的大小,如果只分两级,且一级页号表示的范围一个页面村放不下,则需要继续往上分。

四,基于段式存储管理。

1.段式

段式存储与页式最大区别就是:离散分配时所分配地址空间的基本单位不同。
段式:进程的地址空间按照程序自身的逻辑关系划分为若干段,每个段都有一个段名,每段从0开始。
在这里插入图片描述

注:(在低级语言中,程序员需使用段名来编程,但OS识别的是段号,故编译器会自动将段名转换,所以给了段名相当于给了段号)。

2.基本概念

1.段名,段号,段长,基址,段内地址。

2.地址结构,类比页式
分段系统逻辑地址结构由段号(段名)和段内地址(段内偏移量)所组成的:
在这里插入图片描述

3.段表
程序分多个段,各段离散地装入内存,为了保证程序能正常运行,就必须能从物理内存中找到各个逻辑段存放位置,为了高效,OS为每个进程建立一张段映射表,称段表。

注1:由于各段长度不一样,因此相比"页式"增加了段长项。
注2:每个段对应一个段表项,其中记录该段在内存的起始位置,又称基址和段的长度。
注3:各个段表项长度相同,因此K号段对应的段表项存放地址 = M + k*段表项长度。M为段表起始地址。
在这里插入图片描述
4.地址变换过程
在这里插入图片描述
注:在内存的系统区中,存放着很多用于管理软硬件资源的数据结构,包括进程控制块PCB,当一个进程要上cpu之前,进程切换相关的内核程序负责将某进程调度到cpu上并恢复相应运行环境,加载对应的PCB,这其中就包含一个非常重要的寄存器叫段表寄存器,里面存放着,进程对应的段表始址F以及段表长度M。

五,基于段页式存储管理。

1.段页式

分段存储会产生外部碎片,页式不利于实现信息的共享和保护,基于此,综合两者优点,引出段页式:
  ①将程序按照逻辑模块先分段,再将各段分页=内存块大小,每段中页号从0开始。
  ②再将内存空间分为大小相等的内存块,进程运行前将各页面分别装入中。
在这里插入图片描述

注:段表只有一个,页表可以有很多个。

2.基本概念

1.段号,页号,页表起始地址,段表,页表,段名,段长。

2.逻辑地址结构。
在这里插入图片描述
注1:段号位数决定了每个进程最多可分几个段。
注2:页号位数决定了每个段最大有多少各页。
注3:页内偏移量决定了页面大小,内存块大小。
注4:分段对用户可见,程序员给出的段名,段内地址(因此段页式为二维的地址结构。),而对段分页用户不可见,系统自动根据段内地址划分页号与页内偏移量。
段式页式二维的,页式为一维的。

3.地址变化机构
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值