Din*_*nah 19 operating-system osdev
在我看来,程序员(尤其是Comp.Sci.grads)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统.(尝试创建自己的编程语言+编译器可能更常见,但不是那么雄心勃勃.)
对于那些(像我一样)愚蠢的尝试:除了庞大的规模,你在尝试从头开始创建自己的操作系统时遇到的最大问题或意想不到的障碍是什么?
编辑:一个很棒的操作系统问题:在操作系统开发中有哪些资源?
Aar*_*lla 20
能够从实际经验中说话(AROS,最大的障碍是:
所以如果你打算编写自己的操作系统,你应该考虑这个:
去过也做过.对我来说,最大的障碍是设备驱动程序.对OS核心进行编码是"有趣的部分",但是如果不能进行I/O(磁盘,键盘,视频,网络,至少)它就没用了.今天,如果我再次有时间并且愿意参与这样的项目,我可能会针对Xen VM而不是原始硬件 - 如果没有别的话,那么因为它隐藏了许多丑陋的x86特性以及硬件.Xen提供了一个很好的统一,独立于硬件的I/O设备视图,并且仍然可以让您有足够的自由来玩"有趣"的OS部件(mm,进程管理,同步,中断等).
最大的路障?我想当你发现规范中有多少差距以及各种实现中有多少bug时.
说真的,即使您拥有所有组件的所有规格(即USB,DMA,IRQ,您的CPU ......),您会发现a)某些事情未被指定(即如果您发送某个序列会发生什么您的USB设备)和b)有些事情只是被窃听,您需要解决它们(即CPU中的几十个错误,在英特尔和AMD发布的CPU勘误表中有详细说明)
我不知道在现代操作系统中有多少个bug的解决方法,但由于Linux和*BSD是开源的,他们的驱动程序会告诉你很多,即这个.并希望得到一些像这样的严重负面副作用.
所以,是的,如果你试图编写一个操作系统,请准备好在硬件制造商诅咒很多,并开始失去对现代PC质量的信心:-)