华科 OS 实验的 RISC-V 代理内核是如何启动的?

代码仓库为 hustos riscv-pke 以下内容基于 lab2 代码 入口在哪? 入口为 kernel/machine/mentry.S 的 _mentry ,它调用了 kernel/machine/minit.c 的 m_start(uintptr_t hartid, uintptr_t dtb) ,两个参数并没有在 _mentry 中设置,这是因为 spike 会自动设置 a0 寄存器为 CPU id ,...

2024 Mar 02 · 2 min · vaaandark

MIT6.S081 Lab:Fixup Xargs

昨天朋友跟我说我的 MIT6.S081 lab1 的 xargs 命令的代码无法通过,看到他的测试方法才知道原来是这样测试的,感觉之前写的测的都太简略了。 例如测试 xargs 命令这一关可以这...

2024 Feb 26 · 1 min · vaaandark

PAC2023娱乐赛

7.6 举办了 PAC2023 的开幕赛,以轻松娱乐为主,我还没有体验过在短时间内完成优化工作(不过今天的工作量倒也不大)。这场娱乐赛给了我别样的体验,也让我发现...

2023 Jul 06 · 4 min · vaaandark

MIT6.S081 Lab: Xv6 and Unix Utilities

这是 MIT6.S081 的第一个 Lab ,目的是为了让学生熟悉 Xv6 和 Unix 的一些实用程序,例如 sleep find xargs 等。 sleep 这一关是实现 sleep 命令。由于在 user/user.h 目录中给出来了可以直接由 C 语言调用的...

2023 Mar 02 · 3 min · vaaandark

MIT6.S081 实验环境配置

最近开始学习操作系统的相关知识,选择学 MIT6.S081 的课程。 首先在 课程官方网站 上拉取仓库配置环境。 $ git clone git://g.csail.mit.edu/xv6-labs-2020 $ cd xv6-labs-2020 $ git checkout util $ make qemu make 时发现有报错: user/sh.c: In function ‘r...

2023 Feb 21 · 1 min · vaaandark

内联汇编

高中第一次看到在 C 语言中嵌入汇编语言时,我就觉得它非常好玩,到大学刚开学的时候,我甚至有使用它的需求,可惜直到现在我才抽出时间开始学习它。 分...

2023 Jan 02 · 6 min · vaaandark

稍微深入VLA

最近在学习汇编语言,和朋友聊天时聊到了 C 语言中的变长数组,想知道在汇编后是什么样子的。 变长数组(Variable-length array) 可变长数组是...

2022 Oct 20 · 1 min · vaaandark

说说链表

最近看到了一些关于侵入式和非侵入式链表的讨论,决定研究一下它们两个。 侵入式和非侵入式链表的区别 这里的侵入是相对于链表的指针域来说,所以最主要...

2022 Aug 14 · 2 min · vaaandark

OpenMP进阶

继续学习 OpenMP 的使用,尤其是一些较新版本。 OpenMP 4.0 Controlling OpenMP thread Affinity 因为很多硬件如今是 NUMA 结构,分配线程的位置可以很大程度上影响性能。 与核绑定有关的 OpenMP 结构 proc_bind (master |...

2022 Aug 02 · 4 min · vaaandark

OpenMP入门

写 OpenMP 的时候总是感觉怪怪的,不知道什么时候该用什么,所以最近系统化地看一遍 OpenMP 的使用,主体为 OpenMP 2.0 和 3.0。 What is OpenMP? OpenMP Model 每个线程都有可以访问全局的共...

2022 Jul 29 · 3 min · vaaandark