我有一个班级项目要创建自己的操作系统。我对此考虑了很多,但现在一切看起来都很混乱

我有一个班级项目要创建自己的操作系统。我对此考虑了很多,但现在一切看起来都很混乱

我考虑创建一个操作系统,现在我依靠您的建议来决定从哪里开始制作它。

答案1

你是认真的吗?我的意思是,有很多粉丝自制的操作系统,但这很繁重,工作很辛苦!

首先,操作系统至少应具备:

  1. 引导加载程序:将内核推送到 RAM,准备 TLB 并进行一些日常管理

  2. 内核:内核是操作系统最核心的部分,它管理着一些关键方面,例如程序之间的物理/虚拟内存映射、多任务处理、I/O 调度、IPC、互斥锁等。根据操作系统的不同,有几种不同的设计理念(单片式,如 Linux 架构;混合式,如 OS X 架构;或微内核,如未完成的 Hurd)。根据不同的设计理念,内核代码或用户代码负责管理系统的各个方面。

  3. 用户空间应用程序,它将为用户提供与机器的一些交互。

在 GNU/Linux 和 BSD 世界中,我们有其中的几个,例如:

引导加载程序:GRUB2、GRUB、LILO、ISOLINUX...

内核:Linux、kFreeBSD...

用户空间应用程序:GNU [或] BSD Coreutils、Bash、Xorg 等等 :)

无论如何,如果这是你的问题,这里就是你的答案,如需更多信息,以下 wiki 中有很多关于如何开始思考各个方面的设计决策的信息:http://wiki.osdev.org/Main_Page

这里有很多关于引导加载程序如何工作、如何在没有 stdio.h 等商品的情况下在裸机上编程的信息,而且确实有很多有用的信息。

相关内容