lec4 lab1 SPOC思考题
提前准备
- 了解GCC/Rust的RV内联汇编以及RV汇编
- 了解qemu的启动参数的含义
- 学会使用 qemu
- 在linux系统中,看看 /proc/cpuinfo的内容
思考题
4.1 中断处理过程
- RV中断处理中硬件压栈内容?用户态中断和内核态中断的硬件压栈有什么不同?
- 为什么在用户态的中断响应要使用内核堆栈?
4.2 中断初始化
- CPU加电初始化后中断是使能的吗?为什么?
开放思考题
- 如果没有中断,操作系统设计会有哪些问题或困难?在这种情况下,能否完成对外设驱动和对进程的切换等操作系统核心功能?
课堂实践
练习一
在Linux系统的应用程序中写一个函数print_stackframe(),用于获取当前位置的函数调用栈信息。实现如下一种或多种功能:函数入口地址、函数名信息、参数调用参数信息、返回值信息。
练习二
能否在ucore/rcore内核中写一个函数print_stackframe(),用于获取当前位置的函数调用栈信息。