We've noticed that you've been inactive for over 10 minute(s). We've stopped running the Shoutbox due to your inactivity. If you are back again, please click the I'm Back button below.
OK, here is my own experience in trying to create an Operating System. The OS s friend of mine and I had in mind was to be a fully Arabic operating system to be sold commercially in Egypt (where I live) and other Arab countries. It was a very intense project - one which, unfortunately, we abandoned after about 10 months of work - but I hope some of the hands-on insight might be of help to you.
First of all, let me reiterate that, indeed, persistence and mental stability (a better term might be resilience) will be your true ultimate challenge here. Technical knowledge can be acquired. Information and details can be researched, asked for, or even created from the ground up if needs be. But you have to have an absolutely compelling reason to finish this project, and you need to know this reason, this purpose, before you start even thinking about the outline of your project.
Now, the programming languages we used for this operating system were C and Assembly, with the assembly code usually included in the C source files, except for the boot-loader and other low-level functions, for which assembly code was written separately.
I believe that the way to go about this is to, first, clearly define what you want out of your operating system. Is it simply a learning experience? Are you planning to continue developing for your own personal use? Do you intend to go commercial some time in the future?
Once you know what you want your operating system to do, you're in a much better position to research what you need. There are some very good online communities, books, and tutorials that will help you every step of the way, but you need to know which ones you're going to focus on first. Otherwise, you'll completely waste your time, energy, and motivation reading a ton of material you don't even need.
Unfortunately, I don't have the links to those resources anymore. However, as "tansqrx" mentioned above, I personally found Tanenbaum's book, Modern Operating Systems, an absolute, unqualified life-saver. It probably won't be your be-all-and-end-all in your pursuit of gaining knowledge about this subject, but it's definitely an outstanding starting-point. In some occasions - at least in my case - I didn't find his explanations and examples totally satisfactory, but they sure did let me know where to look for more information. If I remember correctly, he heavily leaned toward using demonstrations of his own open-source, UNIX-clone operating system, MINIX, which I found rather helpful, since I already had the source code available.
The last piece of advice I could give you here is: don't give up! This is going to take a lot of time -- a lot more than you realize, expect, or exaggeratedly estimate. But if you're the type who enjoys learning new concepts and facing big challenges, then it's definitely an undertaking worthy of your time and effort.
Also MIT Operating Systems class is a must read. There is a lot of material available from MIT's opencourse ware site. Do check out some of the forums related to operating system like SkyOS, and linux distros. You'll find many people studying operating systems. They'll guide for sure.
I really like the SIGOPS link. I particularly find one prerequisite in the introduction section to be very telling.
Persistence and Mental Stability - I once spent two weeks at work (where I was porting an operating system fulltime) trying to work out a bug that was fixed by changing one bit. Not only that, but all the documentation on the processor that I found was either lacking this critical piece of information or was very misleading, close enough to being actually wrong (and this includes the manufacturer's official documentation). Be prepared to spend a good portion of your time beating your head against a wall.
it's good to be interested in this sort of stuff....but i think its more complex than i even think,and i think its very hard to do this kind of project with not much of experience with operating systems and "pc's inside" ....
i would like to do my own OS,but it will have to wait for a few years first until i get all knowledge on that kind of stuff before even trying to do it
If you want to create your own operating system then SIGOPS tutorial series is for you. Also i found this tutorial interesting. And while you're learning about operating system. Make sure you pay attention to small things like interrupt, device drivers, display, sound and interface etc. Some more details about this are covered in this tutorial. You can also learn from other operating system. For example, how linux is created from tutorial like "Linux from scratch". For UNIX like Clone, check this. If you're C# user then there is one project going on called as "SharpOS".
Also there are few educational projects which tells you how operating system works. Check Mikeos and Pintos project. TomOS is fork of MikeOS. Nanoos is written in C++, if you're C++ user then do check it out.
Some good books are already mentioned by "@tansqrx" so do check them out.
I remember taking my operating systems class in college and I had no idea an operating system was so complicated. First you will have to have an intimate relationship with the hardware so most of your programming should be in assembly. Next you will have to create routines to handle the handoff between the BIOS (assuming an Intel architecture) and the OS. Next you need to create drivers for at least the keyboard and monitor. After that you will need some APIs to make the OS useable to other programs. That’s about as much advice I can give you because I have never had the need ro ambition to create my own OS.
I always wanted to creat my operating system (not a great one that could compete with Mac or Windows of course), but a simple little language that could host programs (written by me). Is there any one way to start on creating the system, and is there a commonly used programming language I would need to learn to start writting it?