Skip to content

Overview

Loader 需要向内核传递一些信息, 包括 内存布局显示缓冲区...

传递缓冲区

为什么需要传入缓冲区? 一个应用情景就是内核在初始时没有文件读写能力, 但是需要使用到硬盘上的文件, 比如说字库文件, 这时需要将缓冲区传入


指针在这里是很难传递的, 主要是因为内核接手后会将页表中的低端地址项全部抹掉, 导致指针失效, 解决方案如下:

  • 提前映射到高端地址
  • 将缓冲区统一管理, 压缩成一块 (以下称这一块为 ArgStack), 直接传入 ArgStack, 之后由内核来映射到高端地址, 并进行指针修正

以上两个方法都有局限性:

  • 内存管理杂乱
  • 实现不优雅, 代码复杂, 内存结构杂乱

所以像之前提到的字库之类的文件, 能直接硬编码进内核的就不要折腾了...


但是我还是给一份原始的代码:

  • Docs/Kernel/textos-argstack.diff