Page 1 of 2

Beginning OS Developer... Advice.

Posted: Wed Dec 20, 2006 11:46 pm
by 87ASC
I am a beginning in programing and OS Development in computers. I do understand a good majority of how everything works on a computer. I am a so called "Computer Geek". But I would love to create my own OS for a change. Any Software, Tutorials, Programming Languages I should know etc... I would like to have some advice, maybe someone could tell me the steps involved.

What I want to do:
I want a OS that can run all Unix, Linux, Mac, and Windows apps. That way if their is a cool Mac program and you want to use it you can use it on my OS.

Thanks. :lol: .

Posted: Thu Dec 21, 2006 1:11 am
by Solar
Please check the sticky thread "Book Recommendations" and the "Wiki" link above (the one with the yellow flower beside it).

Posted: Thu Dec 21, 2006 1:25 am
by 87ASC
Solar wrote:Please check the sticky thread "Book Recommendations" and the "Wiki" link above (the one with the yellow flower beside it).
I will do that. Thanks :D . I want some advice from someone who has made a OS before.

Posted: Thu Dec 21, 2006 1:27 am
by Solar
That's what the FAQ is about.

Posted: Thu Dec 21, 2006 5:53 am
by GLneo
do you know any Programming Languages???

Programming Languages

Posted: Thu Dec 21, 2006 4:58 pm
by 87ASC
Yes, I have a very basic representation of C. I have heard of the other languages and know what most of them do but the only problem is I need to learn them. Needless to say I need to learn them :lol: .

Re: Beginning OS Developer... Advice.

Posted: Thu Dec 21, 2006 6:16 pm
by rexlunae
87ASC wrote:I want a OS that can run all Unix, Linux, Mac, and Windows apps. That way if their is a cool Mac program and you want to use it you can use it on my OS.
First piece of advice: Pick more attainable goals. Especially if you have limited programming experience, start with simple things. Learn about multitasking, memory models, file systems, IPCs, protection mechanisms, libraries, system calls, and a bunch of things I've forgotten to mention, then come up with a design that suits your taste. Your initial ideas are unlikely to work, but as you learn more about the specifics of how OSes work, you should be able to come up with more workable ideas.

You will need strong understanding of a programming language like C, which you should have before you even begin if possible (everything will go much faster if you start with this knowledge). You should also have an understanding of basic algorithms and data structures.

Good Luck.

Re: Beginning OS Developer... Advice.

Posted: Thu Dec 21, 2006 6:34 pm
by 87ASC
rexlunae wrote:
87ASC wrote:I want a OS that can run all Unix, Linux, Mac, and Windows apps. That way if their is a cool Mac program and you want to use it you can use it on my OS.
First piece of advice: Pick more attainable goals. Especially if you have limited programming experience, start with simple things. Learn about multitasking, memory models, file systems, IPCs, protection mechanisms, libraries, system calls, and a bunch of things I've forgotten to mention, then come up with a design that suits your taste. Your initial ideas are unlikely to work, but as you learn more about the specifics of how OSes work, you should be able to come up with more workable ideas.

You will need strong understanding of a programming language like C, which you should have before you even begin if possible (everything will go much faster if you start with this knowledge). You should also have an understanding of basic algorithms and data structures.

Good Luck.
Thanks.

I just now made a simple PASCAL program. So I know some PASCAL now.

Posted: Thu Dec 21, 2006 6:36 pm
by 87ASC
Does anyone know of the steps to make a OS?
For example (I know this is not right):
1. Create GUI
2. Create Boot Sector
etc...

Posted: Thu Dec 21, 2006 7:50 pm
by piranha
I would recommend making a basic kernel that boot and prints something on the screen. Then you can work on IRQ events, and such. Then make a simple memory manager and task switching. After that i recommend making a command line and IO reading. Then make it flawless and work on a GUI.

Of course, you don't have to take all of that advice, in fact you may completely ignore it. This however is that plan I was recommended by several sources and I am following that plan now as well :wink:

I hope it works for you!

Posted: Thu Dec 21, 2006 8:25 pm
by 87ASC
piranha wrote:I would recommend making a basic kernel that boot and prints something on the screen. Then you can work on IRQ events, and such. Then make a simple memory manager and task switching. After that i recommend making a command line and IO reading. Then make it flawless and work on a GUI.

Of course, you don't have to take all of that advice, in fact you may completely ignore it. This however is that plan I was recommended by several sources and I am following that plan now as well :wink:

I hope it works for you!
Do you know of a website that will show you how to create a basic kernel. Also what programming language should I use. Think I could use PASCAL.

Posted: Thu Dec 21, 2006 10:27 pm
by piranha
In my OS I am using C and assembly. I don't know very much assembly but you can find code in websites...

osdever.net has a lot of helpful stuff.
http://osdever.net/tutorials.php?cat=3&sort=1 these are some nice kernel tutorials
http://osdever.net/tutorials.php?cat=1&sort=1 this is some stuff on how to get started

Hope it helps...

Posted: Fri Dec 22, 2006 12:43 am
by 87ASC
piranha wrote:In my OS I am using C and assembly. I don't know very much assembly but you can find code in websites...

osdever.net has a lot of helpful stuff.
http://osdever.net/tutorials.php?cat=3&sort=1 these are some nice kernel tutorials
http://osdever.net/tutorials.php?cat=1&sort=1 this is some stuff on how to get started

Hope it helps...
Thanks, this well help alot :lol: .

Posted: Fri Dec 22, 2006 1:48 am
by distantvoices
Oy gewalt!

I'd rather you ventured for small application projects instead of OS-Deving first. It'd save you a lot of frustration. :-)

Second, it should go in this order:

Lowest Level - Stack switching, GDT, IDT, paging handling, irq handling
memory management - physical, virtual & at least kernel heap manager
task switching & task management - keeping a list o' tasks & switch between them
IPC: message passing f. ex.
device management - device drivers (video stuff starts here)
file system stuff (VFS, File system drivers)
user land applications - loading&running of executables
networking stuff (Sockets, Tcp UDP ICMP Ip ARP ethernet at least)
user land library (kernel library/user library)
gui (a gui service which does the screen composing & dealing out of window buffers&sending of events to clients - and a gui library, which is responsible for all the client side stuff: drawing, handling of events, management of controls & containers)
and of course applications and little programs which use your kernel. :-)

This is not at all an exhaustive list. You can of course add/leave out things.

I hope this helps you to split down your big goal into smaller subgoals which in sum achieve what you want. It is important in big projects to split up the task into smaller items which are easier to design/implement. In fact, it comes down to plain project management and process design.

Stay safe & keep your use cases in mind.

Posted: Fri Dec 22, 2006 2:24 am
by 87ASC
distantvoices wrote:Oy gewalt!

I'd rather you ventured for small application projects instead of OS-Deving first. It'd save you a lot of frustration. :-)

Second, it should go in this order:

Lowest Level - Stack switching, GDT, IDT, paging handling, irq handling
memory management - physical, virtual & at least kernel heap manager
task switching & task management - keeping a list o' tasks & switch between them
IPC: message passing f. ex.
device management - device drivers (video stuff starts here)
file system stuff (VFS, File system drivers)
user land applications - loading&running of executables
networking stuff (Sockets, Tcp UDP ICMP Ip ARP ethernet at least)
user land library (kernel library/user library)
gui (a gui service which does the screen composing & dealing out of window buffers&sending of events to clients - and a gui library, which is responsible for all the client side stuff: drawing, handling of events, management of controls & containers)
and of course applications and little programs which use your kernel. :-)

This is not at all an exhaustive list. You can of course add/leave out things.

I hope this helps you to split down your big goal into smaller subgoals which in sum achieve what you want. It is important in big projects to split up the task into smaller items which are easier to design/implement. In fact, it comes down to plain project management and process design.

Stay safe & keep your use cases in mind.
How can I thank you guys enough. This is awesome and great information :lol: .