Operating System Development

Hi,
I've been looking on net, but I couldn't find the good one, so I'm asking if somebody know where can I download good, documentation (book)... of programming OS in C, for free?
If asm (as I heard) is necessary in programming - developing OS, then the documentation - book, where emphasis is on C.
Thank you.

Comments

  • : Hi,
    : I've been looking on net, but I couldn't find the good one, so I'm asking if somebody know where can I download good, documentation (book)... of programming OS in C, for free?
    : If asm (as I heard) is necessary in programming - developing OS, then the documentation - book, where emphasis is on C.
    : Thank you.
    :

    I doubt that you will find very much free stuff because that's how many people make a living. In any event, knowledge of assembly is an absolute must -- you need to know the asm language for the hardware you intend to write an os for. I have never written an os, so I'm not the person to ask for any assistance.

  • : : Hi,
    : : I've been looking on net, but I couldn't find the good one, so I'm asking if somebody know where can I download good, documentation (book)... of programming OS in C, for free?
    : : If asm (as I heard) is necessary in programming - developing OS, then the documentation - book, where emphasis is on C.
    : : Thank you.
    : :
    :
    : I doubt that you will find very much free stuff because that's how many people make a living. In any event, knowledge of assembly is an absolute must -- you need to know the asm language for the hardware you intend to write an os for. I have never written an os, so I'm not the person to ask for any assistance.
    :
    :

    There is plenty of good documentation on writing and designing an OS. First off, check out the Linux Documentation Project, also put "Operating System Developement" into google and you'll get plenty of sites with information and links to references. There is a free online book that's quite dated (were talking PDP here), but still covers many of the issues you'll have to deal with with an OS (the operating system vade mecum). Just use google. However, you aren't likely to find a step-by-step teach yourself OS design and implementation in C in 24 hours book.

    As for assembly, it is usually necessary, however it can be pretty minimal what you need, for example, the vast majority of the Linux kernel is written in C and I'm pretty sure most Linux device drivers are written in mainly C with maybe a little inline assembly.

    "We can't do nothing and think someone else will make it right."
    -Kyoto Now, Bad Religion

  • : There is plenty of good documentation on writing and designing an OS. First off, check out the Linux Documentation Project, also put "Operating System Developement" into google and you'll get plenty of sites with information and links to references. There is a free online book that's quite dated (were talking PDP here), but still covers many of the issues you'll have to deal with with an OS (the operating system vade mecum). Just use google. However, you aren't likely to find a step-by-step teach yourself OS design and implementation in C in 24 hours book.
    :
    : As for assembly, it is usually necessary, however it can be pretty minimal what you need, for example, the vast majority of the Linux kernel is written in C and I'm pretty sure most Linux device drivers are written in mainly C with maybe a little inline assembly.
    :
    : "We can't do nothing and think someone else will make it right."
    : -Kyoto Now, Bad Religion
    :
    :

    Thank you for tip, but (I'm sorry if I forgot to mention) I've alaready searched google several times, before I've posted this here, and I could'nt find any good & serious documentation, that is not in form of tutorial on several pages & is available for free download, so I would appreciate any exact link from you. After all (now when I see how much tough is it to find a good documentation) any link to some serious ONLINE documentation is also appreciated, if it is large and serious.
    Also, can you give some tip, on how or maybe better, where to look for on Linux for that documentation? I'm not newbie in programming but in using Linux I am :) I have SUSE 8.0 and plenty of documentation, but that is mostly user & advanced user oriented, of course there is also good documentation in programming FOR linux, but I did'nt find anything about developing an OS, in this case Linux.

    Thank you.
  • Search for the freedos project and see if you can get to the web page they're giving out the source code i think under GNU GPL so it makes getting to the code much easier and most of it is in C/C++ with code for hundreds of such programs like attrib,etc. which are also there in the MS-DOS .
  • : : There is plenty of good documentation on writing and designing an OS. First off, check out the Linux Documentation Project, also put "Operating System Developement" into google and you'll get plenty of sites with information and links to references. There is a free online book that's quite dated (were talking PDP here), but still covers many of the issues you'll have to deal with with an OS (the operating system vade mecum). Just use google. However, you aren't likely to find a step-by-step teach yourself OS design and implementation in C in 24 hours book.
    : :
    : : As for assembly, it is usually necessary, however it can be pretty minimal what you need, for example, the vast majority of the Linux kernel is written in C and I'm pretty sure most Linux device drivers are written in mainly C with maybe a little inline assembly.
    : :
    : : "We can't do nothing and think someone else will make it right."
    : : -Kyoto Now, Bad Religion
    : :
    : :
    :
    : Thank you for tip, but (I'm sorry if I forgot to mention) I've alaready searched google several times, before I've posted this here, and I could'nt find any good & serious documentation, that is not in form of tutorial on several pages & is available for free download, so I would appreciate any exact link from you. After all (now when I see how much tough is it to find a good documentation) any link to some serious ONLINE documentation is also appreciated, if it is large and serious.
    : Also, can you give some tip, on how or maybe better, where to look for on Linux for that documentation? I'm not newbie in programming but in using Linux I am :) I have SUSE 8.0 and plenty of documentation, but that is mostly user & advanced user oriented, of course there is also good documentation in programming FOR linux, but I did'nt find anything about developing an OS, in this case Linux.
    :
    : Thank you.
    :
    http://www.tldp.org/guides.html
    http://www.nondot.org/sabre/os/articles/MiscellaneousSoftware/

    If you are programming for the x86, then you'll _need_ the Intel System's Programming Manual. You can download it for free. Go to my personal page, you'll recognize the link. You can also request a bound version for free too I believe.

    Really the basic parts of an OS aren't too complicated or hard to understand, much of the complexity is just the vast amount of details and the fact that it is very hard to do things incrementally or on a trial-and-error basis.

    If you are targetting x86, I also quite strongly recommend getting Bochs (bochs.sourceforge.net) it'll save you a lot of time and trouble (crash a virtual computer, not your computer.)

    "We can't do nothing and think someone else will make it right."
    -Kyoto Now, Bad Religion

  • : Search for the freedos project and see if you can get to the web page they're giving out the source code i think under GNU GPL so it makes getting to the code much easier and most of it is in C/C++ with code for hundreds of such programs like attrib,etc. which are also there in the MS-DOS .
    :

    Darius sounds like he knows what he is talking about. First off, you cannot simply say "I think I will write an OS" and then go do it like you would a simple flat file database or word processor program. Writing an OS is one of the most difficult and monumental projects you can undertake in computer science. Sure, a basic DOS like OS is not that hard to simulate, but to actually create a modern preemptive multitasking OS is not an easy project. You should first strive to learn some of the fundamentals of OS design... figure out your design and understand the tradeoffs in things like scheduling algorithms, replacement algorithms, etc. There are many good books on the subject, but I don't know of any free ones right off hand. After that, I would suggest you write some manner of simulation.. Perhaps several small simulations and then tie them together. All devices can be simulated with files, and you will need to get the hang scheduling, and of PCB's right off the bat. (PCB is a process control block.. the main data structure an OS uses to store information about processes). There are already some good programs out there that can be used to simulate an OS. I would also suggest you download one of these (and these are free) and begin by exploring the tradeoffs and basic design principals.

    check out
    http://www.cs.washington.edu/homes/tom/nachos/
    and see if this helps.

    Also, the text that I used for my intro graduate level OS course is by William Stallings, and I found it to be quite good... a little expensive as books go though. As I said, I don't know any free references.

    Once you get a firm understanding of the concepts involved, remember that the code for linux is open source, f you care to actually look at the code for a successful modern OS.

    best of luck!

  • Thanks a lot for advices.
    I have good experience in C but I haven't worked in asm, yet. So, first I'll read some "overview" or only generals in developing OS, after that I'll start to learn asm, and finaly I'll buy a book on concrete topic, anyway, thanks a lot again.
  • As far as books go try Operating systems design and implementataion by Andrew Tanenbaum and Albert Woodhull.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories