【Linux内核-番外】汇编知识回顾

汇编基本知识

汇编语言可以使我们直接与底层硬件交互,直接对寄存器,物理内存进行操作。

寄存器

从实模式到保护模式

实模式

**硬件环境:**20位地址线(1M)CPU + 16位寄存器。如8086CPU

内存空间:

**内存寻址方式:**物理地址 = 段基址<<4 + 段内偏移

保护模式

**硬件环境:**32位地址线(4G)CPU + 32位寄存器。

**内存寻址方式:**偏移地址 = 基地址 + (变址 x 比例因子) + 偏移量

概述:

逻辑地址(2462^{46}=64TB)→线性地址(4G)→物理地址(4G)

分段机制

  1. 全局描述符表(GDT)和局部描述符表(LDT)的进程图:

GDT:主要负责 操作系统的相关段,局部描述符表 的寻址

LDT:主要负责 应用程序不同段的 寻址

  1. 寻址流程

分页机制

略(之前博客有详述)

保护机制

  1. CPU保护环:设置0~3级保护权限。
  1. 管理方式

设置CPL(当前优先级权限)和DPL(目标优先级权限)

CPL:当前指令表示为CS:IP,CS后两位表示CPL

DPL:目标权限的表示记录在GDT、IDT、LDT中

if CPL <= DPL: true;
if CPL < DPL: false;

中断

中断分类

流程

中断请求阶段

内中断:CPU无需接收请求,直接进行处理

外中断:外部中断源利用CPU的中断输入引脚输入中断请求信号。

中断判优阶段

CPU一次只能接受一个中断源的请求,当多个中断源同时向CPU提出中断请求时,CPU必须找出中断优先级最高的中断源,这一过程称为中断判优。

中断响应阶段

(1)保护现场:保护 当前栈环境 和 硬件环境

(2)中断向量→中断描述符表(IDT)→中断程序

中断服务阶段

执行中断程序的代码,返回发生中断的程序处。