Getting Started: Difference between revisions

m
Update links, fix spelling and grammar
[unchecked revision][unchecked revision]
m (Reverted edits by Pdietl (talk) to last revision by Vardpa)
m (Update links, fix spelling and grammar)
Line 1:
First of all, developing an operating system is probably one of the most challenging things you can do on a computer (next to killing the final boss in Doom on Nightmare difficulty level). Composing an operating system requires a lot of knowledge about several complex areas within computer science. You need to understand how hardware works, be able to read and write the complex Assemblyassembly language, and also a higher level language (like for instance C, C++ or [[Pascal]]). Your mind has to be able to wrap itself around abstract theory, and hold a myriad of thoughts. Feel discouraged yet? Don't fear! Because all of these things are also the things that makes OS programming fun and entertaining.
 
There is nothing like the feeling of accomplishment when you - finally - after hours of struggling, solve the problem. And after some time you are able to look back and see all of the things you've created from scratch. Your handwritten system is able to boot, performs magic against the hardware, and gives the user a user interface and programs to play with.
 
There is no absolute path you have to take when creating an OS. Once you get your initial system up and running (and you do this by finding appropriate tutorials), you choose the path you want to take next. Your OS is exactly that - yours. You have ultimate control, and the sky is's the limit!
 
==The Hard Truth==
Line 13:
 
==Responsibility==
People tend to claim that it is OK to write inefficient software, stating that computer systems are so fast these days, that you won't see the impact. This type of mentality is dangerous in operating system design. It might be OK to write sloppy code when making a simple application, but when it comes to critical code that may get called thousands of times per second, you need to take out all the overhead you can. The operating system should supply the computer as a basic resource to the running application'sapplications, with as little complication, abstraction and overhead as possible.
 
People who design operating systems in this day and age tend to have the "everything but the kitchen sink" mentality. They take it upon themselves to account for everything, which of course is good, but it shouldn't be done in order to allow poorly written programs to flourish. There are many things that go on "under the hood" when program errors occur. Poorly written programs cost precious execution time, and involve task switches that are expensive in both memory and frequency. We encourage you to discourage poorly written software.
Line 69:
 
===GNU/Linux===
When using GNU/Linux, most of the GNU development tools are probably already present. If not, use your distribution's package management tools (APT, RPM, Portage, Apk, etc) to install them as needed. Again, making a [[GCC Cross-Compiler | cross-compiler]] is required, so as not to link in the development system's runtime files.
 
Common editors are [[Wikipedia:Vim (text editor)|Vim]], [[Wikipedia:Emacs|Emacs]] and [[Wikipedia:KDevelop|KDevelop]].
Line 80:
During your code building you will write hundreds, even thousands, of lines of code. You'll spend an unmentionable number of hours, and sit up late at night coding when you really should go to bed. The last thing you need is a disk crash or a poorly written 'rm' or 'format' command throwing all your work away.
 
What you need is a [httphttps://en.wikipedia.org/wiki/Revision_controlVersion_control version control system]. [http://www.nongnu.org/cvs/ CVS] has been used for a number of years, but has gotten a lot of competition from [http://subversion.tigrisapache.org/ Subversion], [http://bazaar-vcs.org/ Bazaar], [httphttps://www.mercurial-scm.selenic.comorg// Mercurial] and [http://git-scm.com/ Git] lately. If you can, you should set up a remote computer or server as a version control server, but if you do not have such a machine available you can also host the version control system on your local development computer. Just remember to backup your code to CD or FTP once in a while.
 
We cannot stress this point strongly enough: if you are not using source control already, you should start doing so immediately. You only need make a serious mistake in your code once to realize the importance of having your code securely versioned and easily retrievable. While it may seem like overkill for a small, private hobby project, once you get into the habit of using revision control, you'll wonder how you ever did without it.
Line 94:
There are many other [[Tutorials]] available, too.
 
==AttainingObtaining further knowledge==
There is an amazing amount of knowledge about operating system development available on the Internet today. It's just a matter of finding it. First of all, there is this wiki itself. Amongst others we have lots of [[:Category:Tutorials|Tutorials]]. Since you're here, you've probably already found it. Also on this site is the [http://www.osdev.org/phpBB2/ forum], where many developers hang out and can help you (but make sure you read [[How_To_Ask_Questions|How To Ask Questions]] first). Quite a few books on operating system development have been written. A number of these are featured on our [[Books]] page, and more over at [http://www.osdever.net/books.phptutorials/ osdever.net] as well.
 
== See Also ==
Anonymous user