一、操作系统的分类

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

常见的主要分支如下:

  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和程序的四段,还有调用约定和堆栈图,不在这里说了