我被要求在我的大学为我的操作系统课程选择一个项目。我想到了在Python中从头开始创建操作系统的想法。
我有一些限制:
我想知道,这个想法有多可行?就像我可以在多大程度上建造同样的东西。我会很高兴,如果我能运行一个基本版本(运行一些非常基本的应用程序的东西。)是否可能有给定的限制?
是否有一本书可以帮助我像指南一样? (不需要用于python,我只需要一个指南来告诉我应该如何制作操作系统)
如果这个想法不可行,有人能告诉我,我需要多少才能缩小我的想法?
非常感谢任何帮助!
答案 0 :(得分:16)
将此缩小很多。我建议你看看你想要做的一小部分操作系统,也许是并行处理。没有可行的方法可以在500小时内编写整个操作系统,只需5000小时。真正的问题是本科课程还是研究生课程?答案将极大地反映出需要通过的内容。
<强> 添加 强>
抓住一本关于您感兴趣的操作系统主题的书,并专心关注这个主题3个月,您可能只是生产出一些好的东西。操作系统看起来似乎没有在外面做太多,但想到这一点,Windows有大约5000万行代码。
答案 1 :(得分:9)
您的教授是否需要项目中的“低级”组件?例如,任何涉及硬件或指令架构的东西。如果是这样,您的教授将不允许您在Python中执行该项目。该项目必须用C语言和汇编语言编写。你总是会努力修改Linux内核。
然而,现在操作系统不再局限于低级别方面。虚拟化,数据库,并行化都建立在操作系统之上。如果您的教授是“老学校”,那么他/她可能不会认为这些新主题是操作系统的一部分。因此,您可能需要向您的教授提供一些示例创意并寻求澄清。
有人建议,是否进入低级别,完全取决于教授的教育目标。
一个好的项目将包括以下一个或多个:
不直接与硬件交互但仍然是好项目的项目将是:
然后,无论使用何种语言,它都是一个很好的操作系统项目。
我建议您实现自己的memcached,map-reduce或简单的版本控制系统作为好的项目示例。
已编辑:已删除ranting
答案 2 :(得分:2)
我不认为您可以用Python编写操作系统。你需要本机代码来至少在启动时加载一个解释器,更不用说硬件通信,驱动程序等了,在裸机上运行时,鉴于当前的Python解释器,所有这些都几乎是不可能完成的。我也在思考你是否意识到你必须将一个给定的Python解释器移植到没有底层操作系统的情况下进行编译和运行,而这只会让你忙碌一段时间。
你雄心勃勃很好,但老实说,我认为你甚至无法完成基本操作系统,更不用说“一些非常基本的应用程序正在运行”。
答案 3 :(得分:1)
你可能不能在一个学期内完成这个任务。
如果你想在类似的东西上挥杆,请阅读由Per Brinch Hansen和他在加州理工学院的学生建造的Solo操作系统。他们在Concurrent Pascal中编写了全部内容,这是由Brinch Hansen开发的Pascal衍生物。
Solo的来源可以在Brinch Hansen的"Architecture of Concurrent Programs"中找到。 (链接到整本书的PDF)你的教授应该有一份副本。你的大学图书馆应该有一份副本。有时,副本会出现在亚马逊上。
或者你可以做一个版本的Brinch Hansen的RC4000 Nucleus。 (谷歌是你的朋友。)
答案 4 :(得分:1)
您可以使用十多年前的概念,在您指定的时间范围内编写一个小型嵌入式系统操作系统。与小型嵌入式操作系统相比,许多较新的操作系统需要更复杂的调度和内存管理启发式算法;设计一个完整的现代操作系统不是一个实用的单人项目,但人们可能能够用它的某个子系统做一些有趣的事情。我个人认为闪存文件系统还有一些改进空间,但我不知道你的教授会怎么想。你的教授真的在寻找什么?
答案 5 :(得分:1)
在我们的大学,我们有操作系统课程,我们也应该在linux上开发一些东西。不是整个OS。我们为linux做了自己的调度策略和文件系统。但是这将在C中完成,因为linux在C中。
答案 6 :(得分:0)
我知道......这个想法非常有气泡。即使我有这种经历(一段时间:p)。
但是当你深入研究它时,你才意识到你刚刚说了多么大的话。我不花钱说你不能制作操作系统。因为我相信保持无法实现的梦想。这样做可能有助于您更快地学习。
无论如何,PYTHON?呐。去找C.
但我建议不要浪费你的3个月,谷歌搜索如何在3个月内创建一个操作系统&amp;宁 还做一些事情,比如说你正在尝试的工作是小菜一碟。 例如:http://linuxologist.com/1-general/create-your-own-linux-distro/ 即使这个标题也是误导和令人沮丧的。
所有这一切。祝你好运:)
答案 7 :(得分:0)
了解其他人在操作系统领域所做的工作。除了上面提到的书籍之外,下载vanilla linux内核源码并开始探索它:http://www.kernel.org/。 Robert Love关于Linux内核Linux内核开发的书将为您提供内核所涉及的所有部分的精彩概述。
一个重要的亮点是O(1)调度程序如何在新内核中工作,因为调度只是编写操作系统时发生的众多主要问题之一。
答案 8 :(得分:0)
使用Python 开发操作系统是可能的。但是,您可能希望选择C或汇编,因为这些语言开发了巨大的代码库。
答案 9 :(得分:0)
http://www.getacoder.com/projects/programming_c_87390.html
制作像Windows,Mac或Linux这样的完整操作系统与制作MMORPG一样困难。
也许您应该制作最简单的操作系统,让您成功启动并运行一些简单的命令行脚本,如DOS工作方式,但在Python中运行Python。