0%

Paging

Paging unit 用来将 linear address 转换为 physical address,为了高效,linear address 按照一定的长度被分为若干组,称为 pages,并且,内存也被分为各个定长的 page frame (physical pages),page 和 page frame 的长度是一样的,前者表示一块数据,它可以储存在 page frame 或者硬盘中。

在 paging unit 开始工作之前,kernel 先初始化 page tables,这是一个用来映射 linear address 到 physical address 的表。

Linear address 由三部分组成:

  • Directory,10 bits
  • Table,10 bits
  • Offset,12 bits
Read more »

这一个系列将会详细的介绍 Linux kernel 内存管理机制。

使用特定内存地址就可以访问某一块内存单元,为了实现有效的寻址,操作系统将一系列繁琐的操作隐藏了起来,内存地址按照不同的抽象层次分为如下三种:

  1. Logical address: 标识运算符或者程序指令的地址,由段号 (segment selector) 和偏移量 (offset) 组成。
  2. Linear address: 32位的无符号整型数,可以用来表示最大4GB地址空间。
  3. Physical address:内存物理单元的地址。

CPU 控制单元通过 Segmentation Unit 将 Logical address 转换为 Linear address,而后,再通过 paging unit 将 linear address 转换为 physical address,至此,特定地址的访问行为完成。

Segmentation Unit

Read more »