关于操作系统开发的另一本书

图片


问候!



在过去的几年中,我有机会以某种程度研究了大约三打操作系统的源代码。我什至都不记得所有的人。基本上,这些都是用于微控制器的小型库,但是还必须以不同程度的沉浸度来查看“大型”操作系统。



一直以来,我还看到有关各种资源的“ OS开发”的帖子,这些帖子基本上归结为QEMU中“ Hello world”的输出,并抱怨没有必要混淆OS和“可以在裸机上运行的程序” ... OS根本不是在硬件上工作,而是有关同步和所有爵士乐。



有人可能会争辩说,对“学术”发展感兴趣的任何人都应该阅读书籍,而不是互联网上的HOWTO帖子。另一方面,诸如E. Tanenbaum的作品之类的书也有缺点,这导致上述职位流不会枯竭的事实。塔南鲍姆(Tanenbaum)的书(大约是MINIX)仍然处于较高的水平,实际上根本没有考虑许多实际出现的问题。还有一件事。通用OS和RTOS的发展历来是相反的方向:在类似UNIX的OS中,单线程进程首先出现,并且仅在一段时间后变为多线程。在RTOS领域是另一回事,首先是“单进程”多线程系统,然后才可能有多个进程。有观点认为第二种情况更适合研究,因为您可以从简单的事情开始,逐渐使事情复杂化,最终达到相同的目的。但是我离题了。



我所有这些抱怨声都被其他人和同事用“批评-建议”,“做得更好”,“钢琴演奏者尽其所能”,“每个人都可以冒犯艺术家”之类的词来满足。因此,有一天耐心用尽了,我说好,挑战接受了。然后他坐下来写下自己的“正确方法”。



顺便说一句,在整个活动的财务和精神支持下,我要感谢Eremex公司以及以阅读和编辑初稿的形式完成劳动的壮举的同事。



当卷达到250页时,很明显有必要及时停止。总体而言,这项工作尚未完成,但是,尽管如此,我认为,即使以这种形式,该书也很好地说明了这一概念,并且对感兴趣的人很有用。根据评论,它很难阅读,因此,如果对如何解决此问题有任何建议,我将不胜感激。



我认为,操作系统是对有必要组织几个独立任务的工作时出现的一系列问题的答案。因此,您需要首先描述问题以及解决问题的可能方法,而不仅仅是说它是历史悠久的,让我们确切地讨论它是如何发生的。因此,本书并不是与经典作品相对立,而是对其进行了补充,并从嵌入式系统和RTOS的角度提供了一些稍微不同的观点。



我想讨论的不是理论家研究大学操作系统课程的问题,而是程序员所面临的问题。因此,诸如“为什么通常不进行同步上下文切换是一个好主意?”,“当有必要支持隔离进程时内核中的质性变化是什么?”之类的问题。等等



还有一种观点认为,由于将操作系统分为LLVM形式的前端和后端,操作系统尚未经历类似于编译器所经历的架构和意识形态转换。最初,从这种分离中看不到任何效果;程序员之前和之后都以相同的方式使用了编译器。但是正是这种分离使Rust和其他语言的出现成为可能,Rust和其他语言的创建者能够立即专注于其语言的语义,并且后端可以使用了。同样,希望将OS分为几个部分,以使所有这些工作由不同的人作为独立的项目编写。FX-RTOS



用于说明所描述的原理。作为解决此问题的可能方法之一。当然,为了能够描述内核的某些部分而不接触其他部分,必须以允许的方式编写它。尽管在这里我将手推车放在了前面,因为首先出现了操作系统本身,然后很明显它的体系结构非常适合使用其示例来研究主题,因为您可以以很小的步骤增加功能并输入所有概念逐渐形成。



上面提到的资源可用于说明直到第6章(包括6章)的概念,然后您就可以平稳地继续使用MINIX。



为了使一切看起来都不是一帆风顺,我不得不添加前两章,它们专门介绍了一般概念和硬件。程序员可以跳过它们而不会影响对其余部分的理解。



您可以在这里免费下载本书,而无需注册和SMS



谢谢大家的关注,欢迎评论,但如果评论的长度超过两个句子,则最好用私人留言写出来,因为评论往往会增长并变成相关问题的讨论树,使用起来既困难又不便。



PS:如果话题变得很有趣,我将在稍后撰写FX-RTOS本身。



All Articles