我被要求在我的大学为我的操作系统课程选择一个项目.我想到了在Python中从头开始创建操作系统的想法.
我有一些限制:
我只有3个月.
我想用Python做.
我可以每周说20-30个小时.
我想知道,这个想法有多可行?就像我可以在多大程度上建造同样的东西.我会很高兴,如果我能运行一个基本版本(运行一些非常基本的应用程序的东西.)是否有可能具有给定的限制?
有没有一本书可以帮助我像指南一样?(不需要用于python,我只需要一个指南来告诉我应该如何制作操作系统)
如果这个想法不可行,任何人都可以告诉我,我需要多少缩小我的想法?
任何帮助深表感谢!
将此缩小很多.我建议你看看你想要做的一小部分操作系统,也许是并行处理.没有可行的方法可以在500小时内编写整个操作系统,只需5000小时.真正的问题是本科课程还是研究生课程?答案将极大地反映出需要通过的内容.
添加
一本关于您感兴趣的操作系统的主题的书,并专注于该主题3个月,您可能只会产生一些好的东西.操作系统看起来似乎没有在外面做太多,但想到这一点,Windows有大约5000万行代码.
您的教授是否需要项目中的"低级"组件?例如,任何涉及硬件或指令架构的东西.如果是这样,您的教授将不允许您在Python中执行该项目.该项目必须用C语言和汇编语言编写.而且你总是会努力修改Linux内核.
但是,现在操作系统不再局限于低级别方面.虚拟化,数据库,并行化都建立在操作系统之上.如果您的教授是"老学校",那么他/她可能不会认为这些新主题是操作系统的一部分.因此,您可能需要向您的教授提供一些示例创意并寻求澄清.
正如一些人所暗示的那样,是否进入低级别,完全取决于教授的教育目标.
教授基本的并发编程结构,例如事件,信号量和互斥.这可以通过编写一些多线程应用程序来教授.作为OS类的目标,它可以说太容易了.然而,这实际上是你从课堂上获得的最"有市场"的技能.
这个主题的变体是教如何"使用"特定风格的OS API.
教授如何编写有效使用操作系统的应用程序.这可能需要您在"模拟OS项目"中实现一些入门级OS相关算法(例如,在Java或Python中,也可以在C++中).每个方面都可以在单独的项目/模拟器中进行研究,而无需使用完整的操作系统.
例如,为了教会如何有效地使用文件缓存,有必要使用简单的算法让学生使用"玩具"文件缓存.
教授操作系统的硬件方面(包括它的丑陋),即它如何与指令集架构和硬件I/O交互.这通常通过"嵌入式系统"完成,带有一个小型原型板.
教授现代操作系统中使用的真实算法.这将需要大量的纸张读取,以及在真正的Linux内核中实现非平凡的算法.这个水平适合研究生学习.
一个好的项目将包括以下一个或多个:
输入输出
存储
决定缓存/预测要预加载的内容
在本地或远程启动/管理/记录任务(进程,线程或Python函数)
管理资源
要求每个流程估计将使用多少峰值内存,并在整个执行过程中定期报告"进度"百分比,然后可以将它们一起用于估算资源使用情况
通讯
并发
一个不直接与硬件交互但仍然是好项目的项目将是:
如果您的项目为将在项目"内部"运行的应用程序提供操作系统的抽象
换句话说,"应用程序"仅依赖于您的"操作系统项目"来实现其I/O,存储,任务管理,资源,通信需求
您的项目可以很好地(高效,可测量)使用真实的操作系统(Windows,Linux等)
然后,无论使用何种语言,它都将是一个很好的操作系统项目.
我建议您实现自己的memcached,map-reduce或简单的版本控制系统作为好的项目示例.
编辑:删除咆哮