操作系统学习笔记

本文是笔者课程学习的复习笔记。

Posted by 南三号 on May 3, 2018

操作系统学习笔记

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
  • 作用
    • 利用段机制来隔离用户数据和系统数据
    • 简化(避免)逻辑地址到线性地址转换
    • 保留段的等级保护机制

伙伴算法(大块内存)

slab机制(小块内存)