Skip to content

Latest commit

 

History

History

19.中断

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

本章目的: 设置中断描述符表来处理CPU中断

Roll your own toy UNIX-clone OS

数据类型

首先,我们将定义一些特殊的数据类型cpu/types.h,它将原始字节的数据结构与字符和整数解耦。

一些已经存在的文件已更改为使用新的u8 u16u32数据类型。

从现在开始,我们的C头文件也将包含保护。

中断

中断是内核需要做的主要事情之一。

中断的另一个例子是:除以零,越界,无效的操作码、页面错误等。

中断在向量上处理,其条目类似于GDT。 然而,这不是在汇编中对IDT进行编程,我们将在C中进行。

cpu/idt.h定义如何存储idt条目idt_gate(要256个,否则CPU可能会恐慌)和实际BIOS将加载的idt结构。

idt_register这只是一个内存地址和一个大小,类似于GDT寄存器。

cpu/idt.c只需使用处理程序填充每个结构。

ISRs

每次CPU检测到中断服务例程时都会运行中断,这通常是致命的。

我们将编写足够的代码来处理,打印错误消息, 并停止CPU。