操作系统学习笔记
7.4 i386和Linux存储管理
- i386的存储管理
- i386的分段和分页
- Linux存储管理
i386的存储管理
- 实模式(Real Mode)
- 保护模式(Protect Mode)
只能从实模式到保护模式,而不能从保护模式到实模式。除非重启。
i386段页式地址转换
- 第一级:段机制(逻辑地址到线性地址)
- 第二级:分页机制(线性地址到物理地址)
- MMU:执行地址映射过程
段描述符(总共64位,属性占12位)
段描述符表
GDTR/LDTR/IDTR/TSSR四个寄存器
-
存放GDT/LDT/IDT/TSS基址和大小的寄存器
段选择子
硬件分页
- 二级页表结构(Windows)
- Linux的三级页表结构
可执行程序存储结构
- .text:存放 CPU 执行的机器指令,代码区通常是只读的,防止程序 意外地修改了它的指令
- .data:该区包含被初始化的全局变量、静态变量.它们是在编译阶段 被编译器存放在可执行目标文件的.data段中的
- .BSS:未被初始化的全局变量和静态局部变量,编译的时候并未被 分配空间,仅仅在.bss段中标记它们,当程序运行的时候才 为它们在内存中分配空间,并把它们初始化为零或空指针
- .rodata:该区包含常量数据(如字符串常量)在编译阶段被编译器存 放在可执行目标文件的.rodata段中的
Linux的段机制
- Linux四个范围一样的段:0 ~ 4 G
- 内核数据段
- 内核代码段
- 用户数据段
- 用户代码段
- 各段属性不同
- 内核段特权级为0
- 用户段特权级为3
- 作用
- 利用段机制来隔离用户数据和系统数据
- 简化(避免)逻辑地址到线性地址转换
- 保留段的等级保护机制