一、操作系统的分类

操作系统是计算机硬件与用户程序之间的中间层,用于 管理资源、调度任务、提供接口。

常见的主要分支如下:

  1. 通用操作系统
    代表:Linux、Windows、macOS
    面向个人电脑与服务器,功能全面、兼容性强。

  2. 实时操作系统(RTOS)
    代表:FreeRTOS、VxWorks
    强调实时响应,用于工业控制、航天、通信设备等。

  3. 嵌入式操作系统
    代表:RT-Thread、Embedded Linux
    面向资源受限的嵌入式设备,如智能家居、车载系统。

  4. 分布式操作系统
    负责协调多个节点资源,实现统一调度与通信。
    (如:Google Borg、Apache Mesos)

  5. 专用操作系统
    针对特定任务优化,如网络设备、游戏主机、科研系统。

本文主要以Linux0.11和freeRTOS为例


二、计算机组成

让我们先来回顾一下计算机组成原理

常见计算机组成如下:

  • CPU:执行程序指令,处理计算与控制任务
  • 内存:临时存储程序和数据,支持快速访问
  • 存储设备:长期保存数据和程序
  • 输入设备:将外部信息传入计算机系统
  • 输出设备:将计算机处理结果呈现给外部
  • 主板:连接各硬件组件,提供通信通道
  • 总线:在各组件间传输数据、地址和控制信号
  • 辅助设备

三、微机原理

让我们来回顾一下微机原理中关于CPU结构的知识,在微机原理这门课中,我们学过8086cpu的内部结构,我们知道,在cpu内部有寄存器这种东西,在cpu运行过程中起着至关重要的作用,但是8086并不是我们的重点,我们还是把目光放在32位cpu上,看看它的内部都有什么

x86 CPU 寄存器总览

在 Intel x86 架构中,CPU 内部寄存器主要可分为以下几类:

  • 通用寄存器(General Purpose Registers)
  • 段寄存器(Segment Registers)
  • 指令指针(Instruction Pointer)
  • 标志寄存器(EFLAGS)
  • 控制寄存器(Control Registers)

🧩 通用寄存器(General Purpose Registers)

32位寄存器 16位寄存器 高8位 低8位 主要用途
EAX AX AH AL 累加器(Arithmetic)——主要用于算术运算和函数返回值
EBX BX BH BL 基址寄存器(Base)——可存放内存地址或通用数据
ECX CX CH CL 计数寄存器(Count)——用于循环计数、移位指令计数
EDX DX DH DL 数据寄存器(Data)——乘除法时存放高位数据或中间结果
ESI SI — — 源地址寄存器(Source Index)——常用于字符串或数组操作
EDI DI — — 目标地址寄存器(Destination Index)——配合 ESI 使用
EBP BP — — 基址指针(Base Pointer)——函数调用时定位局部变量
ESP SP — — 栈指针(Stack Pointer)——始终指向当前栈顶

🧭 段寄存器(Segment Registers)

寄存器 英文名 作用
CS Code Segment 指向当前代码段,存储程序指令
DS Data Segment 指向数据段,访问全局变量
SS Stack Segment 指向栈段,配合 ESP/EBP 使用
ES Extra Segment 额外数据段,用于字符串或内存块操作
FS — 通常用于线程本地存储(Thread Local Storage)
GS — 常用于系统结构访问(如 Linux TCB)

🕹 指令指针(Instruction Pointer)

名称 含义
EIP 存放下一条即将执行的指令地址(自动递增)

当程序执行跳转(CALL, JMP, RET)时,EIP 的值会被修改。


⚙️ 标志寄存器(EFLAGS)

标志寄存器用于记录运算状态或控制处理器行为。

标志位 名称 含义
CF Carry Flag 进位标志,用于无符号运算
ZF Zero Flag 结果为 0 时置位
SF Sign Flag 结果为负时置位
OF Overflow Flag 溢出标志,用于有符号数
PF Parity Flag 奇偶校验标志
AF Auxiliary Carry 辅助进位(用于BCD运算)
IF Interrupt Enable 是否允许中断
DF Direction Flag 字符串操作方向控制

🧩 控制寄存器(Control Registers)

主要在操作系统级别使用,用于内存管理与保护模式控制。

寄存器 作用
CR0 启动/关闭保护模式、分页等功能
CR2 存储发生页错误(Page Fault)的地址
CR3 存放页目录基地址(分页机制使用)
CR4 控制高级功能(如虚拟8086、SSE等)

📘 总结

  • 我们现在先不用理解全部的寄存器都是做什么的,只需要了解一部分就可以了
  • 通用寄存器通常是做运算使用
  • 段寄存器在实模式下存储的是基地址,在保护模式下储存的是段选择子,需要搭配内存中的一个表(IDT表)来食用
  • 物理地址 = 基地址cs * 16 + 偏移地址eip
  • 指令指针寄存器和段寄存器中的cs寄存器配合食用,他们共同指向了cpu将要执行的下一条指令
  • 这里着重强调一下通用寄存器中的ESP和EBP,二者都是为了汇编指令push和pop服务,这一点在后面函数调用约定的地方会详细说

四、汇编语言

我觉得应该单开一章,细说一下汇编,c和程序的四段,还有调用约定和堆栈图,不在这里说了