内核赛周记1 #os #coding #rust #proj 内核赛第一周,这份文档用于记录开发过程,以及写一些模块的思路 & 代码。 lwext4参考 phoenix 的实现,用到了 lwext4 file system,所以打算把 lwext4 接进我们的内核。 块设备lwext4 为了可以更加通用,把整个文件系统和块设备解耦开了,留了 KernelDevOp 的接口方法需要我们去实现。这几个方法 2025-02-27 #Operating-System
RCore-霸王龙 #os #rust #proj 背景知识在下面的描述中,“文件”有可能指的是常规文件、目录,也可能是之前提到的若干种进程可以读写的 标准输出、标准输入、管道等I/O 资源 文件 同一个文件系统中如果两个文件(目录也是文件)具有相同的inode号码,那么就称它们是“硬链接”关系。这样links的值其实是一个文件的不同文件名的数量。 实际上目录也可以看作一种文件,它也有属于自己的底层编 2025-02-18 #Operating-System
RCore-伤齿龙 #os #proj #rust 背景知识协程我对进程和线程的概念有一定了解,但没了解过协程的概念。协程可以看作是用户态的线程,由调用方去控制。 找到较好的参考文章:协程简介 有栈与无栈协程 协程运行在线程上,本质是单线程。在异步的场景下(比如大量的 IO),协程通过主动让出线程资源,来达到异步。这就是为什么叫做“协程”,有别与线程的抢占式执行。其实函数调用就是一种特殊的协程,只不过这个协程在最 2025-02-13 #Operating-System
如何阅读源码 阅读目的不同目标,你看代码的策略是不一样的。 粗看:若目标是了解代码结构、模块间耦合及组合方式,仅需查看目录结构与模块组合,无需深入代码上下文关注细节。 细看:当目标是知晓模块内部设计,如具体算法细节实现时,需采用细看策略,通过一步步调试来研究代码。 阅读顺序 明确目的之后,我们就要开始阅读了,这部分我推荐的步骤是:自顶向下,反复阅读。 自顶向下阅读源码本质上是让我们的大脑构建出整个系统 2025-02-09 #Tools
工具流美化 起因今天完成了一些工作,比较满意,奖励自己一些时间摸鱼。突然看到我的 obsidian,觉得当前字体真的让人没有输出的欲望,想试着让它看起来更漂亮。由此引发对我的几个主力工具的美化。 具体工作我的工作流: 知识库/笔记:obsidian 编辑器:Visual Studio Code 个人总结/思考:Notion 终端:iterm2 输出:知乎/个人博客 秉持着能用 2025-02-06 #Tools
RCore-头甲龙 #proj #os #rust 总体结构 开发思路这章的代码量剧增,需要记录一下代码添加的思路。 改进应用程序:使用虚拟地址 加入动态分配内存的功能heap_allocator.rs 地址转换address.rs 建立页表page_table.rs 背景知识rust静态分配这个变量可能是一个局部变量,它来自于正在执行的当前函数调用栈上,即它是被分配在栈上;这个变量也可能是一个全局变量,它一般 2025-02-06 #Operating-System
CMU10414-hw0 overviewhw0 简单回顾了机器学习的基础,看了 lec01-03 就可以开始完成。本人为 0基础 机器学习选手,花了不少时间熟悉矩阵运算和一些 python 的矩阵操作。hw0 是进入开发needle前的热身,并不算难。关于计算梯度等的求导过程,在 lec 中会简单过一遍,最后直接使用简化后的公式即可( Kotlin说这样hacky 一点,因为没有人会在实际的计算过程中使用严格的求导过程) 2025-01-25 #Machine-Learning-Systems
RCore-腔骨龙 总体结构 背景知识与之相对, 抢占式调度 (Preemptive Scheduling) 则是应用 随时 都有被内核切换出去的可能。现代的任务调度算法基本都是抢占式的,它要求每个应用只能连续执行一段时间,然后内核就会将它强制性切换出去。 本章中我们仅需要最原始的 RR 算法,用文字描述的话就是维护一个任务队列,每次从队头取出一个应用执行一个时间片,然后把它丢到队尾,再继续从队头取出一个应用,以此类 2025-01-24 #Operating-System
RCore-始初龙 总体架构 背景知识多道程序操作系统:内存中尽量同时驻留多个应用,这样处理器的利用率就会提高。但只有一个程序执行完毕后或主动放弃执行,处理器才能执行另外一个程序。 aka. 支持 多道程序 或 协作式多任务 的协作式操作系统 代码overview在 批处理系统 的基础上,多道程序的协作式操作系统的区别主要在于: 全部应用都会直接放在内存load_apps(),无需运行时再加载(batch 时需要 2025-01-24 #Operating-System
RCore-邓氏鱼 背景知识特权级设计提供服务为了让应用程序获得操作系统的函数服务,采用传统的函数调用方式(即通常的 call 和 ret 指令或指令组合)将会直接绕过硬件的特权级保护检查。为了解决这个问题, RISC-V 提供了新的机器指令:执行环境调用指令(Execution Environment Call,简称 ecall )和一类执行环境返回(Execution Environment Return,简称 2025-01-18 #Operating-System