Question:
Writing an operating system?
lolermom
2010-09-07 14:27:21 UTC
I would like to learn how to build an operating system from the ground up completely from scratch. I am planning on using assembly to write some of the basics. What is a good operating system to program in, what are good tools to use to program and is there a guide on some basics i can use? (i don't even want to use a linux or unix or dos base i want to write my own base language, any guides for the other way work too. Thanx
Five answers:
Ilie
2010-09-09 23:57:57 UTC
Hi,



As an OS/compiler designer/developer, I suggest the books I listed at the following link:



http://forum.osdev.org/viewtopic.php?f=1&t=6989&p=174472#p174472



I also wrote mini-reviews for each books. The free ones have download links so you can get them easier. I would suggest that you don't use assembly to program the basics, rather you use something like C. I would also like to point you to a resource that is being maintained by several OS hobbyists (myself included):



http://wiki.osdev.org/



You will find everything there from articles describing theory and hardware to tutorials and tool descriptions. (Our Wiki is not a substitute to doing your own homework but it will point you in the right direction and help answer many questions; if something doesn't work out, feel free to ask about it on our forum.)



The best OS to develop an OS in is probably the OS you are most familiar with.



Cheers,

Bogdan
Cubbi
2010-09-07 21:46:37 UTC
The classic guide to OS design is Tanenbaum's MOSS: http://en.wikipedia.org/wiki/Modern_Operating_Systems but I am certain there are newer textbooks out there as well, as this is a fairly common computer science topic. You might also read up on the documentation of the major OS kernels -- linux, bsd, mach, etc.



Note that even if you ignore compatibility with dos or linux or unix, it is hard to be truly original: once you've chosen your development system architecture, say, Intel-compatible CPU, you're already locked into a set of concepts those CPUs have (memory paging, protection, task switching, sysenter/sysexit, IRQs), which means a lot of your OS ABI will reproduce existing OSs simply because there aren't many efficient ways to accomplish the same goals.
jplatt39
2010-09-07 22:24:07 UTC
Unix is the environment which is generally used. Minix is a Unix-derivative intended to facilitate the teaching of operating system concepts and the Linux kernel got its start in the comp.os.minix newsgroup.



I suggest learning Unix and at least the bash and possibly c shell and z shell. Also gcc from the command line and the programs gdb and make, which will allow you to do an awful lot using very little memory and disk space relative to Windows. By Unix I do mean Unix/Linux/Mac OS X and Minix.
tbshmkr
2010-09-07 22:46:04 UTC
Start Here

=

Algorithms & Data Structures by N. Wirth

- http://www-old.oberon.ethz.ch/WirthPubl/AD.pdf

=

C++ Book:Programming: Principles and Practice Using C++ by Bjarne Stroustrup

- - An Introduction to Programming by the Inventor of C++

- http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726/

=

C++ Tutorials online:

- http://www.learncpp.com/

- http://www.cplusplus.com/doc/tutorial/

=

Code::Blocks == Open Source C/C++ IDE

- - codeblocks-10.05mingw-setup.exe

- http://www.codeblocks.org/downloads/binaries

=

Assembly Language

- http://win32assembly.online.fr/
James H
2010-09-07 21:28:11 UTC
letmegooglethatforyou.com


This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.
Loading...