P在sleep时保持着锁,所以V将永远阻塞在等待锁的过程中。 我们将通过改变sleep的接口来修正前面的方案:调用者必须将条件锁(condition lock)传递给sleep,这样在调用进程被标记为SLEEPING并在chan上等待后,它就可以释放锁。锁将强制并发的V等待直到P将自己置于SLEEPING状态,这样wakeup就会发现SLEEPING**的消费者并将其唤醒...
RISC-V的页表硬件通过将每个虚拟地址映射到一个物理地址将这两种地址联系起来。 xv6运行在Sv39 RISC-V上,这意味着只会使用64位虚拟地址的低39位,高25位没有被使用。在这种Sv39配置中,一个RISC-V页表在逻辑上是一个由2²⁷(134,217,728)个页表项(Page Table Entry, PTE)组成的数组。每个PTE包含一个44...
xv6 book risc-v 第七章 调度 任何操作系统都希望运行比计算机所拥有的CPU数量更多的进程,所以,我们需要一个在进程之间时分CPU的计划,理想状态下,这种共享对用户进程透明。给每一个进程提供它拥有自己的虚拟CPU的通用方式是在多个硬件CPU上多路复用进程。这一章解释了xv6如何实现多路复用。 7.1. 多路复用# xv6会在...
xv6 book risc-v 第六章 锁 包括xv6在内的大多数内核都会交错的执行多个活动,一个原因来自于多处理器硬件:计算机有多个独立运行的CPU,比如xv6的RISC-V,这些CPU共享物理内存,并且xv6利用这一点来维护被所有CPU共同读写的数据结构。这种共享提高了在一个CPU正在更新数据结构的过程中另一个CPU读取该数据结构的可能,...
OpenSCA CLI 是一款开源的软件成分分析工具,用来扫描项目的第三方开源组件依赖及漏洞信息。如何使用 了解详情 下载安装 OpenSCA-CLI: 访问https://gitee.com/XmirrorSecurity/OpenSCA-cli,通过发行版(Release)下载对应系统架构最新的OpenSCA-Cli工具。 使用说明: ...
->RISC-V发出中断 ->trap handler ->调用devintr ->检查状态 ->调用uartintr处理输入 查看uartintr的源码, 可以看到它会循环不断的从UART硬件中读取等待的输入字符,并传递给consoleintr, 一旦读取完,uartgetc返回-1, 立刻退出循环, 结束这次中断的处理.并再次响应下一个像上面这样的流程产生的中断. void uartin...
(我觉得xv6 book上写的过于详细了,导致如果你不反复读几遍会很难理解这里的过程,所以我这里写两份去描述这里发生的事情,第一份尽可能简洁, 第二份详细解释每一部分都具体发生了什么,让你能够为什么这么做了就能产生这样的效果.) 启动引导加载程序, risc-v计算机运行位于只读内存中boot loader程序,将xv6内核加载到...
江湖小小白/xv6-riscv-book 代码 Issues 0 Pull Requests 0 Wiki 统计 流水线 服务 Gitee Pages JavaDoc PHPDoc 质量分析 Jenkins for Gitee 腾讯云托管 腾讯云 Serverless 悬镜安全 阿里云 SAE Codeblitz 我知道了,不再自动展开 Issues / 看板 欢迎使用看板! 看板提供了一种简略直观的展示方式,用于追踪待办事项、...
有了这个,你应该能够构建这本书通过运行 make,它将克隆操作系统本身并构建这本书到主目录中的 book.pdf。 图形是使用 inkscape 绘制的。 项目来源 xv6-riscv-book 翻译工具 MathTranslate 项目编译 环境准备 LaTeX 本地环境 mac brew install --cask mactex other TeX Live Overleaf LaTeX 在线环境 Overleaf ...
xv6-riscv-book-Chinese 本项目是MIT 6.S081与6.828课程用书xv6-riscv-book的中文翻译。此版翻译基于xv6-book-2020-Chinese修改与校对完成,全部内容转为Markdown格式。如果您在阅读过程中发现翻译中有任何错误或可以改进的地方,欢迎提出issue或pull request。目录...