首页
苦瓜小仔
取消

【笔记】rCore (RISC-V):抢占式 OS 与中断机制

协作式和抢占式 批处理系统的特性是:在内存中同一时间最多只需驻留一个应用。 只有当一个应用出错或退出之后,批处理系统才会去将另一个应用加载到相同的一块内存区域。 为了提高 CPU 的利用率,操作系统演进成加载多个应用,并发运行这些应用。有两种方式执行这些应用: 协作式:让当前执行的应用主动放弃 CPU 的控制权,其他处理器才能执行其他应用 缺点:程序无法做到在...

【笔记】rCore (RISC-V):tmux 使用记录

背景 tmux 是一个流行且相当成熟的终端复用工具。在 Ubuntu 中,你可以使用 apt install tmux 安装它。 终端复用只有一个目的:在一个终端界面运行多个终端会话,从而尽可能地减少窗口的数量,但尽可能多地控制多个终端。 作为一个每天使用终端的人,有必要梳理和介绍我在这方面的终端使用经验。 实现终端复用 (terminal multiplex) 或者类似的效果有多种...

【笔记】rCore (RISC-V):qemu 使用记录

Qemu 有两种运行模式 qemu-system-riscv64 qemu-system-riscv64 模拟系统级模拟一台 RISC-V 64 裸机,它包含处理器、内存及其他外部设备,支持运行完整的操作系统。 常用以下命令启动内核: qemu-system-riscv64 \ -machine virt \ -nographic \ -bios ../boo...

【笔记】rCore (RISC-V):特权级

src: https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter2/1rv-privilege.html Why 实现特权级机制的根本原因是应用程序运行的安全性不可充分信任。 从我的理解来看,权级的出现主要是为了 处理程序的错误 和 限制程序的资源(指令、内存地址)。 对于前者,一个程序出现错误时,这导致执行环境被破坏,影...

【笔记】rCore (RISC-V):程序的内存布局

程序的内存布局 一个程序加载到内存之后,这部分内存可以划分为两大块:代码区域和数据区域。 可以用段 (section) 来描述一段连续的内存空间,用 .name 来命名一个段,在汇编中,用 .section .name 声明一个段的开始。 代码 (code memory):.text 用来存放代码(也就是指令) 数据 (data memory): ...

【笔记】rCore (RISC-V):GDB 使用记录

安装 GDB GDB 需要针对 riscv64 平台编译的版本才能用来调试内核,其二进制文件为 riscv64-unknown-elf-gdb。 rCore 教程的配置环境一章给了 GDB 预编译二进制的下载链接,但那是在 2020 年版本了。 最大的缺点在于不支持 TUI 插件和 dbg-dashboard。 所以,为了愉快地调试代码,需要自己编译最新的 GDB。GDB 编译流程在...

【笔记】rCore (RISC-V):函数调用与调用栈

函数调用是一种控制流结构 程序中构造的 控制流 (Control Flow) 具有多种结构。在汇编级别,它们核心都是利用跳转一类的指令: 控制流结构 汇编指令 说明 分支结构 (如 if/switch 语句) B 型指令 (条件分支) beq, bne, blt, b...

【笔记】rCore (RISC-V):指令的二进制格式

示例:beq x1 x2 0x1f 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 1...

【笔记】《期货市场技术分析》约翰·墨菲

《道氏理论》基本原则 平均价格包容消化一切因素。 市场具有三种趋势。 趋势定义是,只要相继的上冲价格波海和波谷都对应地高过前一个波峰、波谷, 那么市场就处在上升趋势之中。换言之,上升趋势必须体现在依次上升的蜂和谷上。 相反,下降趋势则以依次下降的峰和谷为特征。 趋势分成三类——主要趋势、次要趋势和短暂趋势。 ...

LazyLock 未稳定的难点

LazyLock 的背景 翻看古老的教程,初始化数据用的最多的是 lazy_static!。 但实际上,它正逐渐在被 once_cell 库替代: lazy_static 库已经存在了 10 年,截止目前下载量超过 1.56 亿次,不久前官方宣布 落幕 once_cell 库仅存在 5 年,下载量就已突破 1.4 亿次,其作者就是 Rust Analyzer 的作者 onc...