...
我们知道有些寄存器只能在m模式下设置和访问,如果s模式想要使用某个功能,只能先回到m模式然后再进行相应的设置。OpenSBI定义了s模式和m模式之间功能调用的接口,s模式通过执行 ecall 指令回到m模式使用相关功能,在本章节和下一章节我们将通过类似的方式来学习s模式下如何使用ecall和m模式下如何处理来自s模式的ecall异常。 首先我们将ecall指令封装成宏来使用,如下所示。 这个宏的封 ...
2021-12-14 10:12 1 4296 推荐指数:
...
当今的现状,感觉是B/S大为盛行,C/S的学习者很少,就那我们学校来看,三年多来,教的、用的最多的都是B/S,在刚刚确定下来的毕设课题中,大约四分之三都是web结合安卓开发的系统。C/S的学习着很少,我们做过的C/S系统仅仅是在学习课程的时候完成过一个课后大作业。 在C/S模式中,工作 ...
1. 中断初始化 S模式下的中断初始化和M模式基本类似,只不过操作的是S模式下的CSR寄存器,如下所示。 唯一不同的是S模式的中断栈使用的是__stack_start往上第三个4KB的空间,其余的和m模式下都差不多,这里就不在赘述了。 2. 中断处理 2.1 中断入口 ...
实验文档 概述 实验一主要涉及调用系统调用函数,这些系统调用函数基本都是符合POSIX规范的,和操作系统本身关系较小,在调试的时候也可以先把程序在外部的Linux下跑通然后再放进xv6中运行。 内容 sleep 基本没什么特别的内容,按说明的做就行了。 pingpong 涉及进程 ...
实验文档 概述 这次实验内容比较分散,总体来说难度不是太高。 内容 Backtrace 要求在内核中对程序的调用栈进行遍历,输出每一级调用的返回地址。首先我们分析Riscv的栈帧结构,查看call.asm中main函数的汇编代码: 栈是由高地址向低地址增长的,可见在进入函数时,会由 ...
实验文档 概述 这次实验主要涉及锁在内核的应用,没有用到什么特别的理论知识,但是编程的时候陷阱重重,要么资源竞争,要么死锁,和实验三差不多,非常考验耐心和细心。 内容 Memory alloc ...
实验文档 概述 这次实验主要实现网卡驱动的一部分,文档内容非常长,实际实验不算难,跟着hint就行,但还是需要对整体框架有一定的了解。 内容 发送函数: 这里有两个问题,第一是可不可以只保存一个mbuf,每次调用函数的时候就释放掉上一个mbuf,答案是不能,因为多进程的影响,可能有 ...
实验文档 概述 这次实验主要实现Lazy allocation的功能,即进程在动态分配内存的时候先不分配,等到要用到发生缺页中断的时候再实际分配,核心是实现缺页中断的处理。xv6的文档介绍了三种缺 ...