当前位置:  开发笔记 > 编程语言 > 正文

操作系统从头开始

如何解决《操作系统从头开始》经验,为你挑选了2个好方法。

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

我有一些限制:

    我只有3个月.

    我想用Python做.

    我可以每周说20-30个小时.

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

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

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

任何帮助深表感谢!



1> Woot4Moo..:

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

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


Tanenbaum的书*操作系统*是必读的.
@Longpoke:Linux只是一个内核,Windows是一个完整的操作系统.

2> rwong..:

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

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

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

    教授基本的并发编程结构,例如事件,信号量和互斥.这可以通过编写一些多线程应用程序来教授.作为OS类的目标,它可以说太容易了.然而,这实际上是你从课堂上获得的最"有市场"的技能.

    这个主题的变体是教如何"使用"特定风格的OS API.

    教授如何编写有效使用操作系统的应用程序.这可能需要您在"模拟OS项目"中实现一些入门级OS相关算法(例如,在Java或Python中,也可以在C++中).每个方面都可以在单独的项目/模拟器中进行研究,而无需使用完整的操作系统.

    例如,为了教会如何有效地使用文件缓存,有必要使用简单的算法让学生使用"玩具"文件缓存.

    教授操作系统的硬件方面(包括它的丑陋),即它如何与指令集架构和硬件I/O交互.这通常通过"嵌入式系统"完成,带有一个小型原型板.

    教授现代操作系统中使用的真实算法.这将需要大量的纸张读取,以及在真正的Linux内核中实现非平凡的算法.这个水平适合研究生学习.

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

输入输出

存储

决定缓存/预测要预加载的内容

在本地或远程启动/管理/记录任务(进程,线程或Python函数)

管理资源

要求每个流程估计将使用多少峰值内存,并在整个执行过程中定期报告"进度"百分比,然后可以将它们一起用于估算资源使用情况

通讯

并发

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

    如果您的项目为将在项目"内部"运行的应用程序提供操作系统的抽象

    换句话说,"应用程序"仅依赖于您的"操作系统项目"来实现其I/O,存储,任务管理,资源,通信需求

    您的项目可以很好地(高效,可测量)使用真实的操作系统(Windows,Linux等)

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

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

编辑:删除咆哮

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有