【操作系统/OS笔记05】非连续内存分配:分段、分页、页表

本文详细介绍了操作系统中非连续内存分配的必要性,探讨了分段和分页两种方法,以及页表的工作原理,包括TLB、二级页表和反向页表的概念和作用。内容涵盖了分段寻址、分页的基本规定和页表建立,以及各种优化技术,如基于页寄存器、关联内存和哈希查找的反向页表方案。
摘要由CSDN通过智能技术生成

本次笔记内容:
4.1 非连续内存分配:分段
4.2 非连续内存分配:分页
4.3 非连续内存分配:页表

为什么需要非连续内存分配

连续分配有碎片等缺点。

非连续分配的优劣

优点:

  • 一个程序的物理地址空间是非连续的;
  • 更好的内存利用和管理;
  • 允许共享代码与数据(共享库etc.);
  • 支持动态加载和动态链接。

缺点:

  • 如何建立虚拟地址和物理地址之间的转换
    • 软件方案(开销巨大)
    • 硬件方案(主要考虑的方案)

硬件方案: 分段、分页。

分段(segment)

根据程序的段的性质,分离出来管理。

在这里插入图片描述

堆、运行栈、程序数据、程序text段分开管理,确保了效率、安全问题。

在这里插入图片描述

分段技术是一种映射。使用 硬件支持 来寻址,是一种较好方案。

分段寻址方案

在这里插入图片描述

s: segment number,段号;
addr: address,地址。

x86为段寄存器+地址寄存器实现方案。

在这里插入图片描述

上图中,左上角应用程序P通过CPU执行每条指令;CPU去寻址,这里采用单地址实现方案。段号保存在 段表 (存储:逻辑地址与物理地址映射关系;每个段起始地址、长度限制)里,段号决定段表中的索引。段表是操作系统在寻址之前就建立好的。

段表如何建立在实验部分展开讲解。

分页(paging)

分页为较为常用方式。分页机制中,“段”的尺寸不可变,即为页。

基本规定
  • 划分物理内存至固定大小的帧:大小是2的幂,e.g.,512,4096,8192。
  • 划分逻辑地址空间至相同大小的页:大小是2的幂,e.g.,512,4096,8192。
  • 建立方案:转换逻辑地址为物理地址(pages to frames)
    • 页表
    • MMU/TLB
帧(Frame)

在这里插入图片描述

物理内存被分割为 大小相等的帧 。帧存在帧号(frame number)与偏移(offset),相当于段中的段号与偏移。 帧号占了F这么多位,本身大小占了S这么多位。

在这里插入图片描述

上图示例中,(f,o)=(3,6),分别代表段号与本身所表示值。

思考(不一定对): 如果f=1(第一个页),o=3,则物理地址为 2 9 + 3 2^9 + 3 29+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值