LearningOS / rcore_step_by_step_old2

https://learningos.github.io/rcore_step_by_step_webdoc/
GNU General Public License v3.0
39 stars 10 forks source link

risc-v相关练习题 #2

Open chyyuu opened 5 years ago

chyyuu commented 5 years ago
  1. RISC-V的特权模式有哪些,具有哪些特点?

  2. RISC-V的Supervisor CSRs有哪些,每个CSR的主要作用是啥?

  3. 在Supervisor模式下,哪些寄存器的哪些位需要预先设置为何值,软件才可以处理机器的时钟中断?

  4. 当CPU发生异常时,硬件自动执行的操作序列(包括状态转换)具体有哪些?

  5. satp寄存器的MODE域,ASID域和PPN域有何用途?

  6. 请描述S 模式和 U 模式中的虚拟地址转换成物理地址的硬件过程。

  7. sfence.vma 指令的作用是什么?OS一般在哪种情况下会调用这个指令?

  8. SBI是啥?有何功能?具体内容包含啥?

  9. CLINT (Core Local Interruptor)的定义和具体的含义是啥?

  10. CLIC(Core-Local Interrupt Controller)的定义和具体的含义是啥?

  11. hart(HARdware Thread)的定义和具体的含义是啥?

  12. PLIC(Platform-Level Interrupt Controller)的定义和具体的含义是啥?

  13. 通过分析qemu的risc-v virt模拟实现,了解risc- virt的体系结构和硬件启动流程[有一定难度]

  14. 通过分析Berkeley Boot Loader(BBL)的实现,了解bootloader软件在risc-v硬件启动后要做的事情[有一定难度]

  15. 裁剪BBL,在完成启动ucore OR rcore的基本功能的同时,取消不必要的多余功能[有一定难度]

  16. 分析 C_lang-based-uCore-Kernel os labs 中的lab0/1/2,了解kernel 启动/中断处理和页表建立[有一定难度]

  17. 编译运行 C_lang-based-uCore-Kernel os labs [有一定难度]

  18. 升级C_lang-based-uCore-Kernel os labs 支持RISC-V Privilege: Mode 1.11,达到能在QEMU4.1.0上运行[有难度]

  19. 请解释如下代码在不同编译选项下成功和失败的原因。 test.c源码

    long global_symbol;
    int _start() {
    return global_symbol;
    }

    编译命令A:

    riscv64-unknown-elf-gcc test.c -nostartfiles -nostdlib -o test --save-temps -Wl,-Ttext-segment,0x80000000

    编译命令B:

    riscv64-unknown-elf-gcc test.c -nostartfiles -nostdlib -o test --save-temps