Introduction: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (small fixes)
Line 4: Line 4:
Not all "make it" in this field, many don't even pass the "Hello World" of OSDev, but perhaps you will go further and create the next Linux? Or Windows? Or are your goals lower - MenuetOS? Or even CP/M?
Not all "make it" in this field, many don't even pass the "Hello World" of OSDev, but perhaps you will go further and create the next Linux? Or Windows? Or are your goals lower - MenuetOS? Or even CP/M?


Whatever you goals, OSDev'ing is the great pinnacle of programming. But, you're not alone. In fact, this entire website, including the [http://forum.osdev.org forums] and this Wiki, are dedicated to OSDev'ing. This is not only about great programming skills, but is about community and developing friendships. Be those friendships between fellow forum members or IRQs and processes.
Whatever your goals, OSDev'ing is the great pinnacle of programming. But, you're not alone. In fact, this entire website, including the [http://forum.osdev.org forums] and this Wiki, are dedicated to OSDev'ing. This is not only about great programming skills, but is about community and developing friendships. Be those friendships between fellow forum members or IRQs and processes.


What do you need to succeed in OSDeving? You should read the [[Getting Started]] article.
What do you need to succeed in OSDeving? You should read the [[Getting Started]] article.

Revision as of 00:40, 21 September 2009

Welcome

Welcome to Operating System development; the great frontier.

Not all "make it" in this field, many don't even pass the "Hello World" of OSDev, but perhaps you will go further and create the next Linux? Or Windows? Or are your goals lower - MenuetOS? Or even CP/M?

Whatever your goals, OSDev'ing is the great pinnacle of programming. But, you're not alone. In fact, this entire website, including the forums and this Wiki, are dedicated to OSDev'ing. This is not only about great programming skills, but is about community and developing friendships. Be those friendships between fellow forum members or IRQs and processes.

What do you need to succeed in OSDeving? You should read the Getting Started article.

Do you want to read a step-by-step tutorial to writing a basic kernel you can build upon? You should read Bran's Kernel Development Tutorial, and the article about Bran's Known Bugs. Once you know the bare basics, you may find some more tutorials at the Tutorials page.

Good luck! :)

What is an Operating System?

Computer systems in general are a finite resource. Their entire purpose is to execute a set of instructions, something we commonly call a "program". This concept has not changed much over the years. Early main-frame system administrators had the job of taking program execution requests, assigning them a priority, and giving them a time frame to run. These concepts are the basis of any operating system, they just tend to occur thousands of times per second. The operating system can allow execution of multiple programs so quickly that it is virtually unnoticeable to a human user, making it seem as all the programs are running at the same time. Many things have to occur in order to allow multiple programs to execute in such a manner. The priority is safety, because if the system crashes and becomes unusable, not much else matters. Second is security, denying the capability of malicious programs, such as viruses and worms, to wreak havoc on the system is a must. Even more so is security-related software, denying access to such software's memory space is imperative. The last major issue is speed; If software runs slow or takes up valuable system resources, it makes a run-away impact on the rest of the system.

Why develop an OS?

There are a number of reasons why people choose to develop an operating system. Although each individual developer may have their own, there are a number of reasons that are common between some (if not most) developers:

  • Having complete control over the machine. When developing an application or other userspace program, the developer has to take into consideration the code written by others: the operating system, the libraries, other programs, etc. It is a powerful feeling for the only code to be running on a machine to be your own.
  • Research. Quite a few operating system projects are started as homework or research projects. While starting an operating system as a homework assignment in a pre-tertiary or first-year environment is generally considered a bad idea (due to short deadlines), a longer term project is quite fine. Research projects are usually undertaken to improve on the existing operating systems. A common beginner mistake, however, is to underestimate the time needed to write an operating system from scratch.
  • To replace the currently available operating systems. Maybe they don't have a particular feature that the developer wants. Maybe they just generally suck (Linux is bloated, Windows is unstable, etc). This may be for profit; although any returns are likely to be a long time away.
  • Because it's fun. Low level programming is a fun and exciting task, because you have to do everything. This may seem more difficult (it is, don't worry) but by the same reasons more fun. You know how everything works, how it all fits, and the inner-most workings of your program.

Unfortunately, many operating system projects are undertaken for the wrong reasons. See Beginner Mistakes for a list.