操作系统从头开始

Syl*_*lar 15 python operating-system

我被要求在我的大学为我的操作系统课程选择一个项目.我想到了在Python中从头开始创建操作系统的想法.

我有一些限制:

  1. 我只有3个月.
  2. 我想用Python做.
  3. 我可以每周说20-30个小时.

我想知道,这个想法有多可行?就像我可以在多大程度上建造同样的东西.我会很高兴,如果我能运行一个基本版本(运行一些非常基本的应用程序的东西.)是否有可能具有给定的限制?

有没有一本书可以帮助我像指南一样?(不需要用于python,我只需要一个指南来告诉我应该如何制作操作系统)

如果这个想法不可行,任何人都可以告诉我,我需要多少缩小我的想法?

任何帮助深表感谢!

Woo*_*Moo 16

将此缩小很多.我建议你看看你想要做的一小部分操作系统,也许是并行处理.没有可行的方法可以在500小时内编写整个操作系统,只需5000小时.真正的问题是本科课程还是研究生课程?答案将极大地反映出需要通过的内容.

添加
一本关于您感兴趣的操作系统的主题的书,并专注于该主题3个月,您可能只会产生一些好的东西.操作系统看起来似乎没有在外面做太多,但想到这一点,Windows有大约5000万行代码.

  • Tanenbaum的书*操作系统*是必读的. (7认同)
  • @Longpoke:Linux只是一个内核,Windows是一个完整的操作系统. (4认同)

rwo*_*ong 9

您的教授是否需要项目中的"低级"组件?例如,任何涉及硬件或指令架构的东西.如果是这样,您的教授将不允许您在Py​​thon中执行该项目.该项目必须用C语言和汇编语言编写.而且你总是会努力修改Linux内核.

但是,现在操作系统不再局限于低级别方面.虚拟化,数据库,并行化都建立在操作系统之上.如果您的教授是"老学校",那么他/她可能不会认为这些新主题是操作系统的一部分.因此,您可能需要向您的教授提供一些示例创意并寻求澄清.

正如一些人所暗示的那样,是否进入低级别,完全取决于教授的教育目标.

  1. 教授基本的并发编程结构,例如事件,信号量和互斥.这可以通过编写一些多线程应用程序来教授.作为OS类的目标,它可以说太容易了.然而,这实际上是你从课堂上获得的最"有市场"的技能.
    • 这个主题的变体是教如何"使用"特定风格的OS API.
  2. 教授如何编写有效使用操作系统的应用程序.这可能需要您在"模拟OS项目"中实现一些入门级OS相关算法(例如,在Java或Python中,也可以在C++中).每个方面都可以在单独的项目/模拟器中进行研究,而无需使用完整的操作系统.
    • 例如,为了教会如何有效地使用文件缓存,有必要使用简单的算法让学生使用"玩具"文件缓存.
  3. 教授操作系统的硬件方面(包括它的丑陋),即它如何与指令集架构和硬件I/O交互.这通常通过"嵌入式系统"完成,带有一个小型原型板.
  4. 教授现代操作系统中使用的真实算法.这将需要大量的纸张读取,以及在真正的Linux内核中实现非平凡的算法.这个水平适合研究生学习.

一个好的项目将包括以下一个或多个:

  • 输入输出
  • 存储
    • 决定缓存/预测要预加载的内容
  • 在本地或远程启动/管理/记录任务(进程,线程或Python函数)
  • 管理资源
    • 要求每个流程估计将使用多少峰值内存,并在整个执行过程中定期报告"进度"百分比,然后可以将它们一起用于估算资源使用情况
  • 通讯
  • 并发

一个不直接与硬件交互但仍然是好项目的项目将是:

  1. 如果您的项目为将在项目"内部"运行的应用程序提供操作系统的抽象
    • 换句话说,"应用程序"仅依赖于您的"操作系统项目"来实现其I/O,存储,任务管理,资源,通信需求
  2. 您的项目可以很好地(高效,可测量)使用真实的操作系统(Windows,Linux等)

然后,无论使用何种语言,它都将是一个很好的操作系统项目.

我建议您实现自己的memcached,map-reduce或简单的版本控制系统作为好的项目示例.

编辑:删除咆哮