Minix vs Linux for Learning Operating System Design?
Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Minix vs Linux for Learning Operating System Design?
I wish to learn operating system design. I was wondering if I should tackle Minix or Linux in the process? I like books so I would be following mainly a book, though video resources (presumably videotaped lectures) would also be welcome.
I have formally studied C and C# and can program small to medium sized programs in them. I also have a basic understanding of data structures.
If I take the Minix route, should I tackle version 2 (simpler??) or version 3?
I find it motivating to formally enroll in a college or university course. Are there any online or distance courses that cover operating system design available?
At $165 it ought to be good! You can get a 2nd hand copy at Amazon for half that. Minix was used extensively for teaching in universities in pre-Linux days and it was originally designed for that purpose, rather than as a Unix replacement. Linus learned OS design from it.
Another possibility is HelenOS: http://www.helenos.org/
That is intended to become a working system, but it's also a teaching tool at Charles University, Prague.
Why do you wish to USE an existing system? Get a book like Andy Tanenbaum's OS book (the exact name escapes me now), and try writing something. The less influenced you are by existing systems, the better. (though that book goes in depth into Unix).
Why do you wish to USE an existing system? Get a book like Andy Tanenbaum's OS book (the exact name escapes me now), and try writing something. The less influenced you are by existing systems, the better. (though that book goes in depth into Unix).
Also check alt.os.development on Usenet.
But Andrew Tanenbaum's system IS Minix. I am actually leaning towards using it precisely because of his book and it's reputation as an OS textbook in Universities. It also taught none other than Linus Torvalds and inspired him to try to write his own Kernel. I actually have the second edition of Tanenbaum's book (1997?), which some recommend over his third edition for the simplicity (relatively speaking) of it's implementation. If I do attempt to pursue my learning of OS design via the Linux approach I may opt to use an earlier version of the Kernel (1.0 ??, 2.4 ????) to try to keep it relatively simple. Even then I am afraid that Linux has grown too complex to fully grasp specially without a traditional University Textbook. I have several books on the Linux Kernel but find them too complex beyond the first few chapters on very quick review.
BTW I am starting a formal evening course at a University this semester. It covers Unix programming in general. The first 4 chapters in the assigned book cover rewriting the basic Unix utiltities e.g. writing your own implementation of who, ls, pwd, more etc. Should be good preparation for tackling the Kernel (but which Kernel?) next.
Distribution: RPM Distros,Mostly Mandrake Forks;Drake Tools/Utilities all the way!GO MAGEIA!!!
Posts: 986
Rep:
Resorting to the least common denominator.
I was considering studying Minix because of growing tired of trying to learn the basics from a compounded paradigm. But Minix documentation was as hard to find and as obscure as the Linux docs I was then acquainted with. There is not a single guide for Linux so you have to piece the concepts together yourself.
Unix and DOS Documents seem to be better than Linux Docs in general so don't hesitate to search using these therms. In my opinion DOS users tend to have a better core understanding of computing for whatever reason and for that reason I think DOS if anything is the better O.S to learn from if you can not find Linux Docs that are intentionally comprehensive. I have learned a lot of core concepts from DOS guides and Tutorials.
As a prolific LQ members states "Linux is Dormant". If you use a search term that is encapsulated by the topic you need info for ,you will eventually find the data you need. Example if you want to learn about gparted search for ( partitions and logical volumes)and not just (partitions). Go one step smaller or more detailed in your search.
You could search LQ for Linux Docs as in (Internals, Bisecting Linux , The Linux Kernel and lastly a lot of Administrator Guides have the best info on the Linux Kernel.
Learning is learning so if you have to resort to MSDOS or Windows what the hell. Just get it done.
Last edited by theKbStockpiler; 01-04-2012 at 06:59 PM.
I was considering studying Minix because of growing tired of trying to learn the basics from a compounded paradigm. But Minix documentation was as hard to find and as obscure as the Linux docs I was then acquainted with. There is not a single guide for Linux so you have to piece the concepts together yourself.
Unix and DOS Documents seem to be better than Linux Docs in general so don't hesitate to search using these therms. In my opinion DOS users tend to have a better core understanding of computing for whatever reason and for that reason I think DOS if anything is the better O.S to learn from if you can not find Linux Docs that are intentionally comprehensive. I have learned a lot of core concepts from DOS guides and Tutorials.
As a prolific LQ members states "Linux is Dormant". If you use a search term that is encapsulated by the topic you need info for ,you will eventually find the data you need. Example if you want to learn about gparted search for ( partitions and logical volumes)and not just (partitions). Go one step smaller or more detailed in your search.
You could search LQ for Linux Docs as in (Internals, Bisecting Linux , The Linux Kernel and lastly a lot of Administrator Guides have the best info on the Linux Kernel.
Learning is learning so if you have to resort to MSDOS or Windows what the hell. Just get it done.
DOS? How do you learn Kernel design from a closed source system? I am trying to learn the basics of kernel design and implementation (I am not ready for anything beyond OS design basics). Traditionally this has been taught at most universities using Unix and Unix variants such as Minix precisely because you can examine the source code.
Ignore the parts where he talks about Minix then. There's plenty of OS *theory* in that book.
The idea is not for you to write another Minix when you're through, but your OWN design. There are QUITE A FEW "hacker" OSes out there, though I haven't touched this sort of thing in a while. Just some names - Menuet, SkyOS, Syllable. Go to their pages, get inspired, get some ideas, and.... start writing!
DOS? How do you learn Kernel design from a closed source system? I am trying to learn the basics of kernel design and implementation (I am not ready for anything beyond OS design basics). Traditionally this has been taught at most universities using Unix and Unix variants such as Minix precisely because you can examine the source code.
DOS? How do you learn Kernel design from a closed source system?
I really do not wish to take this off into another tangent but DOS documentation was released early by IBM/MS (MS was totally against any release). One of the reasons to fragment their relationship. You could purchase the documentation with code. Somewhere in my library there are multiple documentation sets that helped develop the open use of the software & hardware for the IBM PC. Which blossomed to a Industry that is still alive today.
So, yes you can learn from the days of IBM/DOSMS/ DOS. Personally the PC industry was very gainful for me. Knowing both UNIX and IBM/DOSMS/ DOS has not hurt in any way. Add hardware design to enhance my abilities certainly opened may doors.
Quote:
Originally Posted by haziz
I am trying to learn the basics of kernel design and implementation (I am not ready for anything beyond OS design basics). Traditionally this has been taught at most universities using Unix and Unix variants such as Minix precisely because you can examine the source code.
I still have my original text(s). Most people do learn design via examples to enhance what they are learning. Back in the mid 90's we were using UNIX, Minix and Linux to teach design with usage. Linux was the new boy on the block but to watch the evolution and use it to enhanced things was a big benefit. We were seeing the evolution of a Kernel and how open source benefited that evolution/creation.
If you are serious then do the programed approach!
I really do not wish to take this off into another tangent but DOS documentation was released early by IBM/MS (MS was totally against any release). One of the reasons to fragment their relationship. You could purchase the documentation with code. Somewhere in my library there are multiple documentation sets that helped develop the open use of the software & hardware for the IBM PC. Which blossomed to a Industry that is still alive today.
I would never recommend DOS as an example for kernel design though.
While useful for some basics, it's a horrible design for modern systems.
Modern kernels like Linux are multitasking and complex therefore to start learning at that level the learning curve will be steep. Not impossible! But to understand a simple kernel like DOS or Minix one can learn the basics then move on to more complex design(s).
Any time you present complex designs without prior experience, knowledge or understanding then the user will take a long time to comprehend the subject, if at all. Heck, look at the controversy with semaphores vs a simpler mutex semantic use in Linux. Arguments over a few bytes and how they are descriptive to allow scalability. Each style has advantages when used appropriately.
Disadvantages for mutex is that to use in a interrupt based context then things are impossible. I can remember my first codes with re-entrant code and semaphore based tasking. Just imagine a newbie trying to understand the concept without basic code development/design.
So, I do believe that one should learn from earlier kernel examples then move or progress into understanding modern kernels. Learn about the black boxes and how each routine assembles into a fully functional kernel. Look at 'Simplified Kernel diagram'. Most newbies cannot understand this simple diagram. But if you look at Linux Kernel Interactive Map then select the area of interest, one can start to understand the linkable areas of the diagram as associated to the kernel. Simplistic but a good start for a newbie. I do suggest Kernelnewbies for interested parties to interact and hopefully learn about the Linux Kernel.
Modern kernels like Linux are multitasking and complex therefore to start learning at that level the learning curve will be steep. Not impossible! But to understand a simple kernel like DOS or Minix one can learn the basics then move on to more complex design(s).
<snip>
I certainly agree with that.
However, MINIX 3 is by all means a modern kernel (and IMHO a better choice for today's students).
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.