分段+段页式管理

一.分段(Segmentation,静态段式管理)

分段内存管理

基本原理:

①进程的逻辑地址空间按照程序自身的逻辑关系分段(segment),每一段是连续的,但各段长度不要求相等,段号从0开始。
②内存分配原则:以段为单位,各段不要求相邻

*----分页类似于可变分区,但不同之处在于:一个进程可占据多个分区且不要求连续性。
*----分段无内部碎片,但有外部碎片。

管理所需数据结构:

OS为每个进程建立一个段表(Segment Table)
每个段在段表中有一项,记录该段在内存中的基址和长度

地址转换:

与页式管理类似
①段寄存器
②进程的逻辑地址结构
*----高位部分为段号,低位部分为段内地址。
③基本的地址转换
物理地址 = 基址 + 段内地址(如果不越界的话,段表中的长度是用来检测是否越界的)
④引入快表的地址转换
快表表项:段号+段基址+长度+访问位+状态位

与分页的比较:

①分页对程序员不可见,分段通常可见
②页的大小由系统决定,段的大小由用户程序决定
③分段更利于多个进程共享程序和数据
④分段便于实现动态链接
⑤分页可有效提高内存利用率,分段可更好地满足用户需求。

————————————————————————————————————————————————

二.段页式管理(分段+分页)

动机:结合分段和分页的优点

基本原理:

①进程分段:同段式管理
*----每段分页,内存分块,内存以块为单位分配:同页式管理
②进程的逻辑地址结构
由段号 + 页号 + 页内地址 构成

管理所需数据结构:

每个进程1个段表:记录该段对应页表的起始地址和长度
每个段1个页表:记录该段所有页号与物理块号的对应关系

地址转换:

①段表寄存器
②基本的地址转换
CPU要存取一个数据,需要访问3次内存。
访问段表(获取该段的页表地址) + 访问页表(取得物理块号,形成物理地址) + 访问该物理地址(存取指令或数据)
③引入快表的地址转换
快表表项:段号 + 页号 + 物理块号 + 访问位 + 状态位
同时利用段号和页号查找相应的物理块号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值