Operating system 操作系统开发工具:需要建议

Operating system 操作系统开发工具:需要建议,operating-system,Operating System,所以我在圣诞节买了一台新电脑,预装了Windows8。现在,让它在同一个驱动器上同时运行LinuxUbuntu和W8已经够麻烦的了。如果一个硬盘驱动器有两个操作系统,则需要对驱动器进行分区,以便两个操作系统不会相互冲突。现在有一个名为Mini Partition Tool Wizard的程序在Windows 8中运行(Linux中也有一个类似的程序称为gparted),它允许您创建和调整硬盘分区大小,只要您不覆盖当前使用的操作系统 长话短说:我想编写自己的迷你操作系统,专门用于引导控制和硬盘管理

所以我在圣诞节买了一台新电脑,预装了Windows8。现在,让它在同一个驱动器上同时运行LinuxUbuntu和W8已经够麻烦的了。如果一个硬盘驱动器有两个操作系统,则需要对驱动器进行分区,以便两个操作系统不会相互冲突。现在有一个名为Mini Partition Tool Wizard的程序在Windows 8中运行(Linux中也有一个类似的程序称为gparted),它允许您创建和调整硬盘分区大小,只要您不覆盖当前使用的操作系统

长话短说:我想编写自己的迷你操作系统,专门用于引导控制和硬盘管理。也就是说,一旦我将它编写、调试并编译成可执行代码,我将把它放在USB记忆棒上,我可以从BIOS菜单中启动,然后直接设置硬盘分区,甚至在必要时格式化硬盘。我很惊讶BIOS没有用户自己做的选项

所以我的问题是:我是否可以只使用C/C++工具来完成这项工作?或者我需要内联汇编代码吗?或者编写一个C++程序中使用的汇编代码模块。非常确定迷你分区工具向导不是开源的(Windows也是)。以前从未写过和使用过操作系统,所以我对此不感兴趣,但我愿意并且能够花时间来了解它是如何完成的

我可以专门使用C/C++工具来完成这项工作吗?或者我需要内联汇编代码吗

您将需要一些程序集,而不是内联类型。编译后的C/C++代码需要设置和配置一些东西(例如,CPU的32位保护模式、堆栈、各种CPU寄存器的值、设备驱动程序、中断、C/C++内存管理器等),而BIOS只需从磁盘加载一个512字节长的扇区并将控制权传输给它,没有任何设置,CPU仍处于16位模式

因此,您需要编写一些汇编代码:

  • 从磁盘加载更多的内容,你不会认为所有内容都能容纳512字节,是吗
  • 将CPU切换到32位保护模式
  • 重新配置中断控制器,使中断不会映射到与保护模式异常相同的中断向量上(好吧,这一小部分可以用C语言完成)
  • 写入异常处理程序
  • 为计时器和键盘等基本功能编写中断处理程序(如果精心设计,您可能只需要在汇编中完成一小部分,其余部分可以在C中完成)
然后,您需要为其他所有内容编写32位I/O设备驱动程序,因为在切换之后,您无法使用BIOS。或者,您可以实现一个虚拟8086机器(使用虚拟8086模式),以便将这些内容委托回BIOS,这也不是一件小事。这大部分工作都可以用C语言完成,但是仍然需要一些汇编代码的知识或使用

您还需要重新实现C(C++)标准库的某些部分,因此
malloc()
/
new
putch()
getchar()
fopen()
time()
,等等使用您的低级API,而不是Windows或Linux

准备花几年时间,从一无所有、缺乏知识和经验的状态中获得一些有用的东西

是的,你确实可以从一开始就学习东西。还有一些有用的新闻组:和。

,您需要组装。