New Operating System

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
Alright guys, so here I am, I have had this dream since I first used Windows ME, I want to program my own operating system, now before you go and say "ARE YOU ******* CRAZY?!" no, I am not, I've compiled a complete Linux From Scratch system with bare minimum packages more than once, and even made my own adjustments. I've used just about every single operating system there is, and I still am not happy with what I see, Windows keeps coming out with "newer" "faster" "sleeker" designs, but really it hasn't changed at all. I have made sketches of the UI and what's so different about it compared to Mac OS X, Linux, and Windows. I want this to be a fresh operating system built from scratch, meaning that, I don't want to make a Linux/Unix mod and call it perfection. I am very good at Java, C, and C++ programming.

I don't really know where to start other than keep designing it in my head and sketching the layout of it. I am not going to say the name of what i want to call it, because i don't want anyone to steal my idea, for now lets just refer to it as "H". OS "H" has been with me since I first began dreaming about this. Now that you guys know about my dream/idea could someone please give me some hints/pointers on where to start programming it?

Thanks :) this means so much to me if you can help!
 

Ijack

Distinguished
1. You need to learn assembler.

2. you need to learn how all the chips in a computer work - interrupt controllers, keyboard controllers, hard disk controllers, graphics cards, network cards, PCI bus, etc.

3. You'll need a lot of time and a lot of hard work to get the simplest system working.

4. You'll need to understand things like semaphores, inter-process communications, and deadlocks if you are looking at a multi-tasking OS.

5. Get hold of the programming reference books for your chosen processor (should be available for free on the manufacturers web site) and ensure that you understand such topics as the protection mechanism, interrupts, and memory paging.

There's a lot of information about OS design on the web (just "Google Operating System Design"), and a number of books on the subject, including some sample OSs. If you can find a copy I would recommend Developing Your Own 32-bit Operating System by Burgess.

It's a great hobby, but be prepared to put in alot of hard work.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
Thanks bro :) I had thought/heard about assembler before, but how come i see microsoft using c, c++ and c#? and solaris using Java? I know it will be A TON of hard work, and effort, and im prepared for it, it's something i want to spend time doing as a hobby and a personal goal.
 

Ijack

Distinguished
I made a couple of edits to my previous post, so you may want to revisit it.

Whatever language is used to write the majority of the code (C is the most popular), you need to know assembler to write interrupt routines, to boot the system in the first place, to manage memory, and other low-level stuff.

Windows is, as you surmise, written in C, as are Linux, BSD and Solaris.

The first hurdle that you have to surmount is just to boot the processor into the correct mode to start with. It's a bit tricky finding that information for 64-bit processors but you could look at my web site (linked in my profile) for a very simple example of this.

Another thing I should add is that you will find life much easier if you use Linux as your development platform, rather than Windows, and get hold of SimNow from AMD to use as an emulator. It's slow, but has good debugging facilities. You can also use qemu, but debugging is a little more difficult. Debugging Operating Systems is a very difficult task.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
okay thanks, hey could you add me as a friend on here? for future refrences? and i am using linux, i kind of prefer linux over windows, but windows has the most applications built for it, and so you're saying pretty much ALL operating systems are written in C? or just most of them? and thanks but for now im using an intel E6850 for my cpu, if that has anything to do with my OS. If i put in about 4-8 hours each day in this OS, how long do you think it should take till it's ready? (i know im the one who will decide if it's ready or not, but what i mean is a guess for a good timeframe) and i found a copy of the book and got it for my ipad (ebooks)
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
Yup, I think that it's "only" the shell. This is still a tremendous job, but of a different nature.

If you want to make something completely new, you might have to create a complete new "XWindow-style" layer and unless you make something that is compatible with an existing graphical API (like WxWidget), every application will not only need to be recompiled, but recoded to work with the framework. Lack of application will kill any OS.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
Okay thanks, so in linux if i were to lets say keep the kernel (maybe strip it down) and make a diffrent ui where/what would i have to edit or create to make a new ui? or Desktop Enviroment? Thanks for the help

:)
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
I think that is what ChromeOS tries to do.

HTML is only a presentation layer language and was originally made to support very static interfaces (think of it as PDF for example). JavaScript (not Java), made it possible to to have a bit more dynamic interfaces through jQuery and DHTML techniques (you can make very impressive stuff with that however, all things considered). Moreover I think HTML 5 added lots of dynamicity to the language.

Before you do a full-fledge shell/OS, you might want to create some basic "proof of concept" prototypes and see if this is feasible and is also usable.
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
Mmm, my knowledge doesn't run THAT deep, but maybe you could contact the Gnome or KDE team to see if they can give you a little kick-start (they are all open-source so you can always download the source code). I don't know how tied they are to the XWindow "standard" (not even sure what it is to be honest), but you could always try to contact that team too. If you want something more html/web based, looking at Chromium (ChromeOS) could also be an option.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560



By "proof of concept" you mean that i should sketch the os out? I was thinking of HTML because it would be easy to create designs/layouts as html isn't THAT hard you know? and i know exactly how i want it to function i want it as small and as basic as possible with a pack manager that will basicly install the packages itself and the ui isn't anywhere near what kde gnome or xfice look like
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
By prototype I mean contained small-scale versions of the different aspects you want to implement like a new point-and click paradigm or gesture support (I'm not quite sure of what you are planning so hard to pin-point relevant examples).

I'm a professional developer and I worked with HTML/jQuery, Java (Swing and Eclipse framework) and C++ (Win32 and WxWidget under Windows) and HTML is by far the one for which it is the most complicated to do stuff like resizing, drag/drop, ... stuff we usually take for granted. It's not THAT hard, but not that simple depending on what you want to do either.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
That's true with lots of programming languages, i do C C++ C# Java swing and i love eclipse i haven't done much html just tiny bits and pieces well i could upload some pictures of the DE i plan to make/create if that would help you know what i mean?

I know it will take a LONG time but i wanted to know where i should start exactly, cause i do love linux it's by far the best, but it's just too much compiling for people, my OS that i have in my design it's practically like linux (filesystem mount points and stuff like that) it would have just a different look to it, and i wanted to change the file extensions that would work in my OS like the packages that i want to be made installable *.pkg and the executables (programs) *.xxx <- haven't decided on an extension for it yet but you get the point right?
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
If it's really just the look of it you want to change, then maybe there would be a way to do some advanced skinning instead or create your own skinning engine both being MUCH less work than actually making a whole shell. Again, I cannot give much help on the matter, the GUI shell is probably what I know the least about Linux.

Just found this BTW.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560
Yeah i looked at that link and i noticed it wasnt what i wanted i was talking about full fledge totally different look like there wont be a taskbar i wanted an orb as a like "dock" basically like the start menu on windows etc but it would be in the shape of an orb that would be scroll able till you found the menu/program you wanted or folder, then you could also search for anything, but i did want to do the file type association changing, and there would be like a window bar manager that if you wanted to minimize a program it would be docked into that area of the screen, it's a little complex for text but once i photoshop a design i like i will send you a link to it, so you can tell what i should do from there, :) but that skinning thing is kind of what i want as well, just not needed at the moment (i've used them before though)
 

Zenthar

Distinguished
Dec 31, 2007
250
0
18,960
As I said, I'm not that knowledgeable about linux GUI, but make sure you study the skinning thing thoroughly because I think some of theme are far more powerful than "skinning" would let believe.
 

boss_nate

Distinguished
Mar 11, 2011
22
0
18,560


Yeah, i think i understand it though, stay tuned if it's okay i will make a ROUGH and i mean ROUGH sketch tomorrow on what the gui windows and Desktop environment look like in my OS :)