内核执行时有一个时间窗口(usertrapret),将stvec设置为uservec,在该窗口中禁用设备中断至关重要。幸运的是,RISC-V总是在开始设置陷阱时禁用中断,xv6在设置stvec之前不会再次启用中断。 页面错误异常 Xv6对异常的响应相当无趣: 如果用户空间中发生异常,内核将终止故障进程。如果内核中发生异常,则内核会崩溃。真正的...
但是RISC-V并不会,RISC-V秉持了这样一个观点: ecall只完成尽量少必须要完成的工作,其他的工作都交给软件完成。这里的原因是,RISC-V设计者想要为软件和操作系统的程序员提供最大的灵活性,这样他们就能按照他们想要的方式开发操作系统。所以你可以这样想,尽管XV6并没有使用这里提供的灵活性,但是一些其他的操作系统用...
xv6-book-riscv-rev1-Chinese MIT6.S081 (操作系统介绍)与6.828课程是操作系统知名课程,本项目是课程教材的中文翻译。 译者也在学习当中,水平有限,出现错误在所难免,如有任何意见或建议,请在Issues留言。 Chinese translation for MIT6.S081(Introduction to Operating Systems) textbook ‘xv6: A simple, Unix-...
sepc:当发生陷阱时,RISC-V会在这里保存程序计数器pc(因为pc会被stvec覆盖)。sret(从陷阱返回)指令会将sepc复制到pc。内核可以写入sepc来控制sret的去向。 scause: RISC-V在这里放置一个描述陷阱原因的数字。 sscratch:内核在这里放置了一个值,这个值在陷阱处理程序一开始就会派上用场。 sstatus:其中的SIE位...
上图中间是RISC-V处理器,处理器中有4个核,每个核都有自己的MMU和TLB。处理器旁边就是DRAM芯片。 地址0x1000是boot ROM的物理地址,当你对主板上电,主板做的第一件事情就是运行存储在boot ROM中的代码,当boot完成之后,会跳转到地址0x80000000,操作系统需要确保那个地址有一些数据能够接着启动操作系统。
MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 --Trap -- 上 riscv函数进程内核系统 有三种事件会导致CPU搁置普通指令的执行,并强制将控制权转移到处理该事件的特殊代码上: 大忽悠爱学习 2023/10/11 6090 MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 --Trap -- 中 riscv程序函数内核系统 上一篇文...
RISC-V指令集中有一类特殊寄存器CSRs(Control and Status Registers),这类寄存器存储了CPU的相关信息,只有特定的控制状态寄存器指令 (csrrc、csrrs、csrrw、csrrci、csrrsi、csrrwi等)才能够读写CSRs。 大忽悠爱学习 2023/10/11 5340 MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 --Trap -- 上 ...