<story><title>Roll your own toy UNIX-clone OS</title><url>http://www.jamesmolloy.co.uk/tutorial_html/index.html</url></story><parent_chain></parent_chain><comment><author>jwatzman</author><text>Stylistically, there are a huge number of things wrong with this. The idea is good, but if you actually write code this way you&apos;ll have a slow, unmaintainable mess of a kernel.&lt;p&gt;The biggest issues that jump out at me are the horrible overuse of magic numbers (#define is your friend, especially when working with the GDT and IDT) and the disabling of interrupts and paging when copying an address space (the latter of which is slow and the former of which prevents concurrency -- imagine how well Linux would work if every fork() were terribly slow and stopped the world -- doing this in even a halfway reasonable way is not hard). Inline assembly is also a really bad idea for portability and maintainability, the latter of which you at least care about for a toy kernel. I&apos;m also not sure why they are disabling interrupts so much in general... and on and on.&lt;p&gt;Again, a very interesting read for kernel-development-n00bs, I&apos;m sure, but a lot of their code is very, very, terrifyingly wrong even for a toy kernel. Our OS class has students write a kernel somewhat like this one; the class provides a list of things which you are not to ever do, ever, oh god, or you will fail. This article does a staggering number of those things.</text></comment>
<story><title>Roll your own toy UNIX-clone OS</title><url>http://www.jamesmolloy.co.uk/tutorial_html/index.html</url></story><parent_chain></parent_chain><comment><author>tseabrooks</author><text>My Op Sys class in school was designed around compiling your own toy &apos;unix&apos; kernel and rewriting large portions of it from scratch for educational reasons. We used the Tanenbaum book and his &quot;Minix&quot; system. It was far and away the most informative class I had in school.</text></comment>