Amiriox's Storage

Declaration does not declare anything.

amiriox@terminal: ~/journey
$ whoami > /dev/null # RSS: /atom.xml ## Tutorial TLDR 下划以查看博客文章 $ tldr amiriox 折鸦/折鸦夜明け前/無暝; Amiriox Makinohara > 极端社恐, 线上线下基本上是两个人, 但欢迎聊天/交换友链 > 计算机科学狂热爱好者, OS/C++/Rust, Vim 党 $ vim ~/anime.rs const anime_arr: [anime; 10] = [末日三问, 虚构推理, 魔女之旅, 四叠半, 浪客剑心, 葬送的芙莉莲, 我心危, 比翼之吻, 孤独摇滚, GBC]; -- INSERT -- 1, 1 All # cat ~/hobbies.md * 游戏: 空洞骑士/只狼:影逝二度/怪物猎人/赛博朋克2077/明日方舟/丝之歌.unwrap() * 听音乐: * J-POP: 可惜夜/夜鹿/majiko/Reol/Aimer/花谱/结束乐队( * Vocaloid: 洛天依/诗岸/星尘Infinity * R&B: 陶喆/王力宏 * 正在培养的爱好: 板绘/像素画/摄影/文学 ## 不断 refactor 的灵魂 $ objdump -s -j .rodata /usr/bin/amiriox_soul | grep -oP '\s\K[^\0]*' 0x00401000 保持必要的力量与清醒, 去努力维持您自己的宁静与尊严 0x0040104C 水利万物而不争,故万物莫能与之争 0x0040107B He who has a why to live can bear almost any how.

(六) 7.13:

回顾会议内容, 总结任务目标:

  • arceos/tour/* 添加对其他架构 (aarch64/x86_64/loongarch) 的支持
  • arceos/tour 下新增一些例子, 体现 ArceOS 特定功能, 如图形显示功能/文件系统功能/新调度算法功能

把工具链换到最新的:

  • #[naked] 更改为 #[unsafe(naked)]. 裸函数使得编译器不会为函数生成序言和尾声代码(比如保存/恢复寄存器, 设置栈帧等), 操作系统开发的部分场景要求完全控制寄存器细节

  • 同时将 asm! 改为 naked_asm!. 裸函数内一般没有 Rust 代码, 因为会隐含地依赖序言和尾声, 所以几乎都是内联汇编代码

  • naked_asm! 不支持伪指令和宏(虽然我不知道为什么原来这里要写伪指令, 可能是和 arm 统一?), 所以要把那一段全部改写成 RISC-V 汇编, 好在代码量比较少, 如果多了我还真想不出什么方便的方法

阅读全文 »

…以下计划仅供参考, 不必全部完成, 我估计这计划我得弄到大三结束才能弄完来着 更不要因此有压力

你更应关注的是 current state 的稳定性与质量, 而非整体的计划与进度

无论是学习计划还是玩的计划均不以完成为目的, 以尽可能多地体验和接触为目的, 同时训练和适应学习状态

事实上, 唯一必要的反而是”不以计划完成为目的, 尽可能体验当下”这一点的训练.

从另一个角度来讲, 进度上的最优解也是”不以进度为目的”的心态才能达到的方案.

阅读全文 »

复合数据

在实际的程序设计中(模拟数学或现实系统), 操作(过程)要应用到的数据往往不是一个单独的基本类型数据, 而是多个基本类型数据复合起来的: 例如分数是由分子和分母确定起来的, 单一的分子和分母都不能称为分数. 而将分子和分母以某种方式复合起来比单独管理分子和分母具有更强的可读性, 减少了编码中的精力消耗; 同时加强分子和分母之间的关系(分子和分母的关系应当强于这两个符号之于别的数据的关系)也符合某种(哲学上的)道理.

为此, 我们需要构造一种抽象使得这两个数据被复合起来:

  • 首先要有构造函数, 将这分子和分母复合为另一个新的数据
  • 然后还要有选择函数, 因为在实际操作中我们需要操作分子和分母本身(来模拟分数的运算)而不是分数本身
  • 最后, 分子和分母及其操作应当符合某些规则(即数学上分数运算上的规则)

这就是复合数据的需求: 将数据定义为一组适当的选择函数和构造函数, 以及为了使得这些过程成为一套合法表示, 它们就必须满足一组特定的条件.

阅读全文 »

程序设计需要考虑的基本元素

  1. 基本的表达形式: 基本的数据表达基本的过程表达
  2. 组合的方法: 将基本表达组合起来构成复合的元素, 如 Lisp 的组合式
  3. 抽象的方法: 为复合对象命名, 从一个新的抽象层次操作非基本单元

在 lisp (SICP 使用 scheme 方言) 中有如下体现:

阅读全文 »

操作系统的 libc 支持

../_images/app-software-stack.png

之前 我们说到系统从其功能实现上的目的是: 管理各种硬件资源,实现隔离并发与虚拟化. 但是站在一般用户的角度来说, 一个操作系统要有良好的生态, 支持应用程序才能被广泛使用. 而应用程序是由编程语言开发的, 这就要求操作系统能够支持一些语言(特别对于C语言)的标准库.

阅读全文 »

组件化操作系统设计与实现

oscamp 第三节阶段总结. 由于部分操作系统原理性质的内容在二阶段中已经学过了, 因此总结主要针对两部分:

  1. 新概念: ArceOS 在传统内核上的创新
  2. 老概念: 与 rCore 的实现不同的部分, 以及分析原因

为什么要组件化?

ArceOS 的优势区间在于快速针对特定领域构建出一个最合适的内核, 主要解决的痛点就是”从头开发一个操作系统太繁琐”, 而”现成的方案并不完全适用于应用场景”. 一些操作系统的可扩展性通过内核编译选项或者配置文件来实现, 但是这种方法无法在更深层次修改组装一个操作系统内核, 因此 ArceOS 采用了组件化的方案灵活组装某些功能.

阅读全文 »
0%