spinlock和sleeplock锁的使用及其注意事项
锁的使用 本文默认读者有对应的编程经验,过多细节不再赘述 在写FrostVistaOS的时候,在 OS 初始化早期,由于调度器尚未启动、进程尚未建立,会导致依赖进程上下文的睡眠锁无法正常工作。所以,我打算还是专门写一篇博客用来讲解锁的使用,因为我的锁的编写借鉴了xv6的代码,所以,理论上与xv6的锁的使用是通用的。 spinlock struct spinlock { uint lo...
Read moreMarkdown to HTML
A tiny, fast Markdown blog for GitHub Pages.
Posts grouped in this category.
锁的使用 本文默认读者有对应的编程经验,过多细节不再赘述 在写FrostVistaOS的时候,在 OS 初始化早期,由于调度器尚未启动、进程尚未建立,会导致依赖进程上下文的睡眠锁无法正常工作。所以,我打算还是专门写一篇博客用来讲解锁的使用,因为我的锁的编写借鉴了xv6的代码,所以,理论上与xv6的锁的使用是通用的。 spinlock struct spinlock { uint lo...
Read more一次FrostVista的排错 前言 那几天在尝试使用gdb来追踪OS的运行流程的时候发现,自己的OS无法在-O0优化下运行(无优化),但是可以在-O2优化下运行,这就让我感到很奇怪,这是为什么?同一套代码竟然会在不同的优化下产生这么大的差异? 优化 1. -O0:零优化(默认级别) 核心目标:最快的编译速度,最好的调试体验。 特点: 如果你在编译时不加任何 -O 参数,编译器默认使用...
Read moreFrostVista: Minimal U-mode implementation 本文主要讲述在实现简单的U-mode时可能遇到的问题,以及一些疑问。 本文主要讲解思路而非代码,本文中的代码也仅仅是我实现所用的代码,仅供参考。 需要使用到以下文件: RISCV_ABI.pdf RISCV-Privileged.pdf 涉及到的章节: ABI: Chapter 1.1 Integer Re...
Read more