《Linux内核完全剖析》读书笔记(待续...)

内核基础

Linux背景基本概念

  1. GUN计划
    旨在开发一个类似UNIX并且是自由软件的完整操作系统:GNU系统。
    GNU项目开发的自由软件:
    • EMACS编辑系统
    • Bash程序
    • GCC系列编译程序
    • GDB调试工具
    • ……
  2. POSIX标准
    该标准描述了操作系统的调用服务接口,用于保证应用程序的源代码在多种操作系统上移植和运行。

微型计算机组成结构

  1. 微机组成原理
    《Linux内核完全剖析》读书笔记(待续...)_第1张图片
  2. I/O端口寻址方式
    • 统一编址
    • 独立编址
  3. I/O端口控制方式
    • 轮询
    • 中断
    • DMA
  4. BIOS和CMOS
    • BIOS存在BIOS ROM芯片中,用于初始化硬件,设置CMOS参数,从块设备加载boot loader(MBR和boot sector中)到内存0x7c00地址,并跳转执行。
    • CMOS存储器用来存放实时时钟信息和系统硬件配置信息,这些信息有BIOS设置。
  5. 控制器和适配器
    控制器:能够通过操作寄存器来控制设备的控制模块
    适配器:设备接口的转换模块
    • 中断控制器
    • DMA控制器
    • 定时/计数器
    • 键盘控制器
    • 串行控制器
    • 硬盘控制器

内核编程语言和环境

  1. as86汇编器
  2. ld86链接器
  3. 汇编语法
  4. C和汇编相互调用
  5. 目标文件格式

80x86保护模式及编程

  1. 80x86系统寄存器
    • 标志寄存器EFLAGS
      • TF:位8,跟踪标志,可为调试操作启动单步执行方式
      • IOPL:位12、13,I/O特权级字段,指明当前运行任务的I/O特权级
      • NT:位14,嵌套任务标志,控制被中断任务和调用任务之间的链接关系
      • RF:位16,恢复标志,控制处理器对断点指令的相应
      • VM:位17,虚拟8086方式标志,开启虚拟8086方式
    • 内存管理寄存器
      • GDTR:全局描述符表寄存器,存放GDT的32位线性基地址和16位的表长度值
      • IDTR:中断描述符表寄存器,存放IDT的32位线性基地址和16位表长度值
      • LDTR:局部描述符表寄存器,存放LDT的32位线性基地址、16位段限长和描述符属性值
      • TR:任务寄存器,存放当前任务TSS段的16位段选择符、32位基地址、16位段长度和描述符属性值
    • 控制寄存器
      • CR0:协处理器控制位,保护控制位
      • CR1:保留
      • CR2:存放页错误线性地址
      • CR3:存放页目录表基地址
  2. 分段机制
    利用多段模型提供由硬件增强的代码、数据结构、程序和任务的保护措施。每个程序都使用自己的段描述符表以及自己的段。每个段由段描述符(段基地址、段长度、段属性)定义。
    《Linux内核完全剖析》读书笔记(待续...)_第2张图片
    • 段描述符表:段描述符的一个数组
    • 段描述符:段基地址+段长度+段属性
    • 段选择符:段的16位标识符
    • 段选择符、段描述符、段描述符表关系图
  3. 分页机制
    将内存分为大小相等的4K页面,方便内存管理
    • 二级页表结构图及页描述符格式
      《Linux内核完全剖析》读书笔记(待续...)_第3张图片
  4. 中断和异常处理
    《Linux内核完全剖析》读书笔记(待续...)_第4张图片
  5. 任务管理
    一个任务由两部分构成:任务执行空间和TSS。任务执行空间包括代码段、堆栈段、和一个或多个数据段,TSS指定了构成任务执行空间的各个段,并为任务状态信息提供存储空间。当一个任务被加载进处理器中执行时,该任务的段选择符、基地址、段限长以及TSS段描述符属性就会被加载进任务寄存器TR寄存器中。
    《Linux内核完全剖析》读书笔记(待续...)_第5张图片

linux内核体系结构

你可能感兴趣的:(读书笔记)