LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - General
User Name
Password
Linux - General This 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


Reply
  Search this Thread
Old 01-04-2012, 07:38 AM   #1
haziz
Member
 
Registered: Jan 2012
Location: /dev/null
Distribution: Slackware, Fedora, Debian, Arch, Ubuntu
Posts: 101

Rep: Reputation: 4
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?

Thanks.

Last edited by haziz; 01-04-2012 at 07:41 AM.
 
Old 01-04-2012, 08:27 AM   #2
jens
Senior Member
 
Registered: May 2004
Location: Belgium
Distribution: Debian, Slackware, Fedora
Posts: 1,465

Rep: Reputation: 299Reputation: 299Reputation: 299
The MINIX book is still one of my favorites.
I mostly liked the first one (long time ago).

The 3th one isn't bad either but doesn't cover everything like the first ones did (MINIX 3 is a lot more functional though):
http://www.pearsonhighered.com/educa...USS_01DBC.html

Highly recommended.

Last edited by jens; 01-04-2012 at 08:29 AM.
 
Old 01-04-2012, 11:40 AM   #3
DavidMcCann
LQ Veteran
 
Registered: Jul 2006
Location: London
Distribution: PCLinuxOS, Debian
Posts: 6,142

Rep: Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314Reputation: 2314
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.
 
Old 01-04-2012, 03:16 PM   #4
resetreset
Senior Member
 
Registered: Mar 2008
Location: Cyberspace
Distribution: Dynebolic, Ubuntu 10.10
Posts: 1,340

Rep: Reputation: 62
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.
 
Old 01-04-2012, 06:22 PM   #5
haziz
Member
 
Registered: Jan 2012
Location: /dev/null
Distribution: Slackware, Fedora, Debian, Arch, Ubuntu
Posts: 101

Original Poster
Rep: Reputation: 4
Quote:
Originally Posted by resetreset View Post
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.

Last edited by haziz; 01-04-2012 at 06:23 PM.
 
Old 01-04-2012, 06:56 PM   #6
theKbStockpiler
Member
 
Registered: Sep 2009
Location: Central New York
Distribution: RPM Distros,Mostly Mandrake Forks;Drake Tools/Utilities all the way!GO MAGEIA!!!
Posts: 986

Rep: Reputation: 53
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.
 
Old 01-04-2012, 07:19 PM   #7
haziz
Member
 
Registered: Jan 2012
Location: /dev/null
Distribution: Slackware, Fedora, Debian, Arch, Ubuntu
Posts: 101

Original Poster
Rep: Reputation: 4
Quote:
Originally Posted by theKbStockpiler View Post
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.
 
Old 01-05-2012, 08:48 AM   #8
resetreset
Senior Member
 
Registered: Mar 2008
Location: Cyberspace
Distribution: Dynebolic, Ubuntu 10.10
Posts: 1,340

Rep: Reputation: 62
Quote:
Originally Posted by haziz View Post
But Andrew Tanenbaum's system IS Minix.
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!
 
Old 01-05-2012, 08:56 AM   #9
JimBrewster
Member
 
Registered: Feb 2010
Location: usa:/dev/random
Distribution: Slackware-15.0; -current
Posts: 245

Rep: Reputation: 60
Quote:
Originally Posted by haziz View Post
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.
http://www.freedos.org/
 
Old 01-05-2012, 09:58 AM   #10
onebuck
Moderator
 
Registered: Jan 2005
Location: Central Florida 20 minutes from Disney World
Distribution: SlackwareŽ
Posts: 13,925
Blog Entries: 44

Rep: Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159
Member response

Hi,

Quote:
Originally Posted by haziz View Post
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/DOS MS/ DOS. Personally the PC industry was very gainful for me. Knowing both UNIX and IBM/DOS MS/ DOS has not hurt in any way. Add hardware design to enhance my abilities certainly opened may doors.
Quote:
Originally Posted by haziz View Post
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!
 
Old 01-05-2012, 01:52 PM   #11
jens
Senior Member
 
Registered: May 2004
Location: Belgium
Distribution: Debian, Slackware, Fedora
Posts: 1,465

Rep: Reputation: 299Reputation: 299Reputation: 299
Quote:
Originally Posted by onebuck View Post

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.
Best example was (imo) DOS-C
http://opensourcedepot.com/DOS/DOS-C.html

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.

Last edited by jens; 01-05-2012 at 01:56 PM.
 
Old 01-05-2012, 05:31 PM   #12
onebuck
Moderator
 
Registered: Jan 2005
Location: Central Florida 20 minutes from Disney World
Distribution: SlackwareŽ
Posts: 13,925
Blog Entries: 44

Rep: Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159
Member response

Hi,

Quote:
Originally Posted by jens View Post
Best example was (imo) DOS-C
http://opensourcedepot.com/DOS/DOS-C.html

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.
 
Old 01-06-2012, 02:38 PM   #13
haziz
Member
 
Registered: Jan 2012
Location: /dev/null
Distribution: Slackware, Fedora, Debian, Arch, Ubuntu
Posts: 101

Original Poster
Rep: Reputation: 4
Quote:
Originally Posted by jens View Post
The MINIX book is still one of my favorites.
I mostly liked the first one (long time ago).

The 3th one isn't bad either but doesn't cover everything like the first ones did (MINIX 3 is a lot more functional though):
http://www.pearsonhighered.com/educa...USS_01DBC.html

Highly recommended.
By "first ones" are you refering to the first or second editions or both?
 
Old 01-13-2012, 06:23 AM   #14
jens
Senior Member
 
Registered: May 2004
Location: Belgium
Distribution: Debian, Slackware, Fedora
Posts: 1,465

Rep: Reputation: 299Reputation: 299Reputation: 299
Quote:
Originally Posted by haziz View Post
By "first ones" are you refering to the first or second editions or both?
Sorry, that should have been "first one" and not "first ones" (I can't comment on the second one).

Last edited by jens; 01-13-2012 at 07:13 AM. Reason: spelling
 
Old 01-13-2012, 06:33 AM   #15
jens
Senior Member
 
Registered: May 2004
Location: Belgium
Distribution: Debian, Slackware, Fedora
Posts: 1,465

Rep: Reputation: 299Reputation: 299Reputation: 299
Quote:
Originally Posted by onebuck View Post
Hi,

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).

Last edited by jens; 01-13-2012 at 07:12 AM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
free download-The design of the Unix Operating System by Maurice J. Bach Gerwar General 6 03-29-2011 06:11 AM
How to add a new daemon process in MINIX operating system ? Aquarius_Girl Linux - General 7 10-05-2009 11:18 PM
'Operating system not found' Any operating system installed wont work. TechniSlave Linux - Newbie 55 02-09-2009 11:02 AM
Why Linux is best Operating System for Learning/Doing System Programming ? ubaid_t General 6 03-21-2004 02:10 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - General

All times are GMT -5. The time now is 05:13 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration