rcore-step-by-step
  • 0. 从零开始写 OS
  • 1. 独立式可执行程序
  • 2. 最小化内核
  • 3. 格式化输出
  • 4. 实现中断
    • 4.1.1 Trap
    • 4.1.2 中断跳转
    • 4.2. 时钟中断
  • 5. 页表简介
  • 6. 内存分配
  • 7. 创建页表
  • 8. 内核线程
  • 9. 线程调度
  • 10. 用户进程
  • 11. 命令行
    • 11.1. 命令行——输出
    • 11.2. 命令行——输入(信号量)
    • 11.3. 命令行——执行程序
Powered by GitBook
On this page

Was this helpful?

4. 实现中断

本章代码对应 commit :6074ad7fb59d8d1e0bbd6125d8861bf483d22e73

概要

当 cpu 访问无效的寄存器地址、进行除零操作或进行 系统调用 时,会产生中断。由 系统调用 产生的中断称为 trap 。为了能够对中断进行一些简单的处理,本章我们需要:

  1. 创建 栈帧(TrapFrame) 结构体。

  2. 设置中断入口点。

    riscv 简化了中断处理,不使用 idt

  3. 能够保存和恢复寄存器。

Previous3. 格式化输出Next4.1.1 Trap

Last updated 5 years ago

Was this helpful?