ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
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.
I would recommend using Linux because Understanding the Linux Kernel, third edition, by Bovet and Cesati is a currently available text that was actually developed from the curriculum of an operating system course. However, if I were planning such a course I might use it as a secondary text, with some other text that covers operating systems in a more general and generic way as the primary material.
(EDIT follows)
Maybe Minix would be a better choice because Tannenbaum created it specifically for educational purposes, and because it is intentionally a minimalist design, which would be easier to cover in the limited time available in a school term. Despite rumors to the contrary, Minix is not actually dead.
I also cannot ignore any recommendations by posixculprit. Admitting my own ignorance of BSD, and seeing how many parts of Linux are not actually as easily followed as I would like, I would not dismiss his assertion that the BSD source is clear and elegant.
Thanks a lot for that informative reply. Actually that's what confuses me. Linux has excellent documentation and books about kernel development(found atleast three good ones, like of Orielly which you mentioned, Robert Love's and Linux drivers.). Whereas FreeBSD is known for its clear design(although I don't understand why as I am a newbie here, will take your words for granted ).On contrary Minix has one whole text that to written by its own creator. But its popularity is quite less in practical field.
However can you kindly mention where you found linux kernel tough to follow. From your advice I believe I should concentrate on FreeBSD or Minix. Is my interpretation correct? And thanks again for your kind reply.
Also for additional text I am opting for Silberschatz, Galvin Operating Sytem Concepts(textbook in our course) and have already started reading it.
Last edited by dheerajsuthar2008; 06-03-2010 at 01:13 AM.
Reason: additional text information
However can you kindly mention where you found linux kernel tough to follow.
When I look at any particular piece of code in Linux it is usually not too hard to follow. My problem is that I need a high level road map to know where to look for the code I want to look at. That may be inevitable in a project with 230MB of source code. Fortunately, I can use Bovet and Cesati for that road map, so it is not a show stopper.
Linux source code does not have the level of comments that I like to put in my code, but I have been accused of over commenting. I like to precede every function with a descriptive block that says what the function does (a single sentence). I also describe each parameter, any required pre conditions, and describe the return value along with any post conditions. I also insert comments in the body of the code that describe the steps I am using to implement the function. These comments are written before I write the function, and are subject to change as the project progresses. I also write a time and date stamp at the bottom of the comment header block that states when that function has been verified, at least for cases that satisfy the pre conditions. Needless to say, I don't produce a huge amount of code in any given day. If all the code in Linux had that level of comments, the source code might be twice the size due to comment bloat. In my defense, my code usually works eventually and I can usually come back to that code later and easily amend it if I need to add or limit features in it. By comparison, I sometimes (but not too often) find the comments in Linux code slightly cryptic.
Thanks for reply ArthurSittler,
Just one more doubt. Does FreeBSD also suffer from same problem or its code is more organized and easier to understand? From your previous replies and my findings on other sites I think I will choose from Minix or FreeBSD.
I apologize, I have not looked at freeBSD nor Minix. posixculprit and at least one person I know personally claim freeBSD is easier to understand.
freeBSD also has had a less restrictive license, but the current license in Linux removes many of its former restrictions. I never had any problems with any of the details of the Linux license, either.
Minix is useful as a learning tool... if you like to learn things you're likely to never use in the real world.
It's like delphi/pascal, great language to learn programming on... but you'll likely never see heavy use in real world.
Learning linux or *bsd is more complex but at the same time you likely will see those in the real world, especially at the rate they're going into embeded systems.
University programming languages, university operating systems, etc... not the most useful thing ever for real world application in my experience.
When you say for academic purposes, are you studying them? like studying Operating systems? Or using *nix to program on top of? cause depending on the what you are trying to do, there are always the best tools for the best jobs.
If you are studying Operating Systems, why not try all? And see the Pro's can Con's of each?
If you are programming on top of any particular flavour of *nix, I can quite honestly say it doesn't matter that much, but try and keep your code portable across platforms.
I apologize, I have not looked at freeBSD nor Minix. posixculprit and at least one person I know personally claim freeBSD is easier to understand.
freeBSD also has had a less restrictive license, but the current license in Linux removes many of its former restrictions. I never had any problems with any of the details of the Linux license, either.
No need for any apologies Arthur Sittler. Everyone has expertise in one subject or another. Infact its through combined experiences of esteem members of this forum I like to form my decisions. For now I seem to make my mind. I think I will start with freebsd and then if possible switch to linux. Thanks again for all your kind replies.
Minix is useful as a learning tool... if you like to learn things you're likely to never use in the real world.
It's like delphi/pascal, great language to learn programming on... but you'll likely never see heavy use in real world.
Learning linux or *bsd is more complex but at the same time you likely will see those in the real world, especially at the rate they're going into embeded systems.
University programming languages, university operating systems, etc... not the most useful thing ever for real world application in my experience.
Thanks for reply rweaver. As mentioned before I think I will start my journey with the demon(ooops sorry Daemon itself ie FreeBSD).
When you say for academic purposes, are you studying them? like studying Operating systems? Or using *nix to program on top of? cause depending on the what you are trying to do, there are always the best tools for the best jobs.
If you are studying Operating Systems, why not try all? And see the Pro's can Con's of each?
If you are programming on top of any particular flavour of *nix, I can quite honestly say it doesn't matter that much, but try and keep your code portable across platforms.
So?
Thanks for reply. I will be studying OS itself. So I think I will start with FreeBSD then if time permits switch to LInux.
Thanks to all the replies (and votes too.). With all ideas presented here I believe I will start with FreeBSD. Then if time permits will try Linux also. I made my choice as members say FreeBSD has cleaner source and is professionally used to. So I believe its my natural choice. Thanks to all again.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.