Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Operating system 创建自定义操作系统的障碍_Operating System_Osdev - Fatal编程技术网

Operating system 创建自定义操作系统的障碍

Operating system 创建自定义操作系统的障碍,operating-system,osdev,Operating System,Osdev,在我看来,程序员(尤其是工商系毕业生)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统。(尝试创建自己的编程语言+编译器可能更常见,但远没有那么雄心勃勃。) 对于那些(像我一样)愚蠢到要尝试的人:除了规模之外,在尝试从头开始创建自己的操作系统时,您遇到了哪些最大的难题或意外障碍? 编辑:一个很好的操作系统问题:能够根据实际经验说话(,最大的障碍是: 母鸡和鸡蛋(没有操作系统没有应用程序没有用户不能吸引开发者) 为什么还要与Windows竞争呢?苹果没有成功,他们有很多钱,Linux也没

在我看来,程序员(尤其是工商系毕业生)试图解决的最常见的过于雄心勃勃的项目是构建自己的操作系统。(尝试创建自己的编程语言+编译器可能更常见,但远没有那么雄心勃勃。)

对于那些(像我一样)愚蠢到要尝试的人:除了规模之外,在尝试从头开始创建自己的操作系统时,您遇到了哪些最大的难题或意外障碍?


编辑:一个很好的操作系统问题:

能够根据实际经验说话(,最大的障碍是:

  • 母鸡和鸡蛋(没有操作系统没有应用程序没有用户不能吸引开发者)
  • 为什么还要与Windows竞争呢?苹果没有成功,他们有很多钱,Linux也没有成功,尽管有一个庞大而热情的社区
  • 大公司对把他们的应用程序带到你的操作系统(Adobe Acrobat Reader、MS Office、Macromedia Flash、Sun的Java)一点也不感兴趣。没有这些,没有好的OSS替代品,你就无法吸引用户
  • 这需要很长时间。在我的例子中,大约15年才得到1.0(我们还没有100%达到)
  • 兼容性。为了获得任何用户,你必须与现有的东西兼容(以便人们可以继续使用他们的数据等)。如果你兼容,为什么要更改你的操作系统
所以如果你打算编写自己的操作系统,你应该考虑一下:

  • 这将需要很长时间
  • 在最长的时间里,你将是孤独的。我很幸运,因为我有一个非常狂热和专注的阿米加社区,它不会松懈
  • 你必须找到一个利基,在那里你可以提供其他操作系统无法提供的服务
  • 能够做到这一点的人通常会得到更好的工作机会,因为他们认为“编写OSs很难”:
  • 你将成为一个非常小的精英程序员群体的成员,他们可以说“我编写了自己的操作系统,它可以做的不仅仅是打印‘Hello world!’”

    • 编写操作系统会遇到与其他大型软件项目相同的问题

      它缺乏明确定义的目标,并且由于缺乏经验而存在时间安排/评估问题


      程序员首先创建一个“hello world”类型的操作系统也很有用,这样他/她就可以学习操作系统开发背后的概念,然后可以专注于开发操作系统(而不是学习操作系统概念).

      我认为现在很多优秀的程序员不知道他们对计算机如何工作知之甚少。要让机器从磁盘引导操作系统,你需要认真掌握基础知识,而这类知识现在传播得很少。现在你也找不到一书架关于它的书了

      有趣的是,几周前我问了一个关于SO的问题,涉及到10-15年前严肃的PC编程的基本知识类型,一位评论者说他们认为这是一个硬件问题


      我一点也不反对他们,但我认为这是一个有趣的关于技能如何变化的反思。

      最大的障碍是什么?我认为这是当您发现规范中有多少差距,以及各种实现中有多少bug时

      说真的,即使您拥有所有组件的所有规格(即USB、DMA、IRQ、您的CPU…),您也会发现a)有些东西没有指定(即,如果您向USB设备发送某个序列会发生什么情况)和b)有些东西只是被窃听了,您需要解决它们(即英特尔和AMD发布的CPU勘误表中详细说明的数十个CPU错误)

      我不知道现代操作系统中有多少漏洞的解决方法,但由于Linux和*BSD是开源的,它们的驱动程序告诉了你很多,也就是说,它们可能会产生一些严重的负面影响,比如


      所以,是的,如果你想写一个操作系统,准备好诅咒硬件制造商,开始对现代个人电脑的质量失去信心:-)

      去过那里,就去做吧。最大的障碍,至少对我来说,是设备驱动程序。对操作系统内核进行编码是“有趣的部分”,但是如果不能进行I/O(至少是磁盘、键盘、视频、网络),编码是没有用的。今天,如果我再次有时间和意愿参与这样的项目,我可能会瞄准Xen VM而不是原始硬件——如果没有别的原因,那是因为它隐藏了x86和硬件的许多丑陋特性。Xen为I/O设备提供了一个统一的、独立于硬件的视图,并且仍然让您有足够的自由来使用“有趣的”操作系统部件(mm、进程管理、同步、中断等)。

      我认为目前最大的障碍是用户—直到您构建了大部分工作系统,你不太可能有任何用户。没有用户,您就没有功能请求、bug报告,因此动机有限。然而,即使你确实构建了一个工作的操作系统,也不能保证你会拥有一个用户群,除非你能找到一个吸引人的钩子——是什么让你的操作系统与众不同,让人们愿意尝试beta版,当几乎没有任何工作应用程序移植到它时,坚持到底,等等


      您可能对签出感兴趣-它主要由单个开发人员(现在是一个小型开发团队)开发。报告也有一个很好的总结。我认为这是一个很好的例子,说明了如何承担这样一项艰巨的任务,并取得良好的结果。他们在SkyOS上做了一些有趣的事情,尤其是看到这在很大程度上来自于一个人在业余时间的努力,这一点非常酷。

      过去,创建自己的文本编辑器的排名也很高。:)我认为最大的障碍是恐惧和怀疑,如果你能摆脱它们……”准备好……开始失去你的fai