EGOS-2000 拓展

将 C 标准库融入进一个基本的操作系统。

在我的工程硕士论文中,我开发了一个对 EGOS-2000 的高级扩展,这是由康奈尔大学博士候选人张云昊 构建的简约操作系统。这个操作系统仅由 2000 行代码构成,专为部署在 FPGA 开发板上而设计。尽管采用了简约的设计,EGOS-2000 是一个完全功能性的操作系统,包含但不限于文件系统、抢占式进程切换和用户管理等所有基本功能。

然而,为了节省代码行数,一个显著的限制是缺乏对广泛标准 C 库的支持。相反,该系统配备了一系列有限的专有函数作为系统调用,从而大大缩小了项目的范围,并在为操作系统编写或移植应用程序时带来了挑战。我的论文旨在通过将一些标准 C 库集成到操作系统中来缓解这个问题,即 math.hstdlib.hstdio.hctype.h、和 string.h。这种集成允许操作系统支持这些基本的库函数,从而简化了开发人员为 EGOS-2000 设计应用程序的过程。

我尝试了几种实验性解决方案,包括尝试将编译器的 C 库实现链接到用户应用程序。然而,由于 FPGA 开发板的限制,特别是受限的 RAM,这些解决方案被证明是不可行的。这表明许多现代解决方案在这种情况下将不兼容。因此,我设计了一种解决方案,将整个 C 标准库分为两大类:与操作系统相关的和与操作系统无关的。前者包括需要操作系统支持的函数,如文件操作,而后者包括不依赖操作系统支持的函数,如数学运算。

此外,我重新编译了包含 C 库函数的内核,利用内核在代码大小上的较大自由度。通过提供一个接口连接到这些函数,用户应用程序能够像在任何现代操作系统上一样使用 C 标准库。与操作系统相关的操作被重新构造以使其能够与服务器进程通信并满足相关请求。

该项目是在康奈尔大学计算机科学系教授兼研究生主任罗伯特·范·雷内斯博士的指导下进行的,并获得了高度赞扬,被评为 A+ 等级。