Learning OS design, Linux Vs. Minix???

Hi friends,
I hope everybody is fine. I have been studing operating system concepts at college, and I find this subject very interesting. I've decided that I must go into this field no matter what, hopefully someday I would design my own operating system. I have two choices infront of me, studying the kernel of MINIX or studying the kernel of Linux or one of the bsd's. I have heard that linux is a monolithic kernel consisting of millions of lines of code, I don't think it would suit me. On the other hand, minix3 contains no more than 6000 lines of code. What do you guys think, which route should I follow?
The author of minix, andrew tanenbaum has written a book specifically about the minix3 operating system, so it is also a plus point for minix
Looking forward to your wonderful replies.
Thanks in advance

I think the reason Minix, an obsolete 16-bit kernel, still exists is as educational code. It's the kernel Linus Torvalds learned with.

While certainly a confidential Unix variant, Minix is neither obsolete (last versions were released in October 2010) nor 16 bit (it can be compiled in 16 or 32 bit).

Quoting Andy Tanenbaum:Please be aware that MINIX 3 is not your grandfather's MINIX ... MINIX 1 was written as an educational tool ... MINIX 3 is that plus a start at building a highly reliable, self-healing, bloat-free operating system ... MINIX 1 and MINIX 3 are related in the same way as Windows 3.1 and Windows XP are: same first name.

Linux is not a monolithic kernel. It fully supports loadable kernel modules. And these kernel modules can be unloaded if no longer required.

Yes, it has a huge code base. But this is mainly because of the variety of platforms, devices and options that it supports.
Robert Loves book "Linux Kernel Development" is a good introduction.

Another interesting kernel to consider is the Windows Research Kernel (WRK) which is essentially the NT kernel. This is available as part of the Windows Academic Program.

I get three replies, but none of them solves my confusion. Which one is best for a starter who wants to know how an operating system works? I think linux is very large and complicated, would you agree with me or not? I think Minix3 is very small and manageable as compared to linux. Please through some light and give some guidance!!!
Thanks

It is an individual decision. We cannot solve your confusion for you; we can only point out certain aspects of each choice. You have to make the decision.

However it sounds like you wish to take the option which results in the least amount of work on your part. If this is the case, choice Minix.

I told you guys that I am a starter in this field. I am not afraid of hard work, I am willing to do hard-work, nobody is forcing me to choose this path, I love operating systems. What I am asking is that which path would suit me the best, I think one should do everything step by step, and should not jump multiple stairs at once, would you agree with me or not?

You've been told twice now. I'll make it thrice: MINIX.

Linux is very complicated, so perhaps not a good educational example. You could find yourself stumbling across 9 different architecture macros when tracking down what a particular function in the linux kernel does...

Thanks everybody for your wonderful comments. I have just downloaded and installed MINIX3, looks very similar to the other unices, but they say it is quite different internally. I have downloaded the source code as well, so wish me best of luck!

Thanks once again!

Beware not to stick to the micro-kernel code (the 6000 lines you were referring to). On Minix, there is more "kernel" code in userland than these 6k lines, essentially minix device drivers and the so called server processes (eg: file system, network stack, process manager, etc.)

1 Like