Beginning OS Developer... Advice.

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Beginning OS Developer... Advice.

Post 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: .
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
User avatar
Solar
Member
Member
Posts: 7615
Joined: Thu Nov 16, 2006 12:01 pm
Location: Germany
Contact:

Post by Solar »

Please check the sticky thread "Book Recommendations" and the "Wiki" link above (the one with the yellow flower beside it).
Every good solution is obvious once you've found it.
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Post 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.
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
User avatar
Solar
Member
Member
Posts: 7615
Joined: Thu Nov 16, 2006 12:01 pm
Location: Germany
Contact:

Post by Solar »

That's what the FAQ is about.
Every good solution is obvious once you've found it.
GLneo
Member
Member
Posts: 237
Joined: Wed Dec 20, 2006 7:56 pm

Post by GLneo »

do you know any Programming Languages???
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Programming Languages

Post 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: .
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
rexlunae
Member
Member
Posts: 134
Joined: Sun Oct 24, 2004 11:00 pm
Location: North Dakota, where the buffalo roam

Re: Beginning OS Developer... Advice.

Post 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.
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Re: Beginning OS Developer... Advice.

Post 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.
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Post 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...
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
User avatar
piranha
Member
Member
Posts: 1391
Joined: Thu Dec 21, 2006 7:42 pm
Location: Unknown. Momentum is pretty certain, however.
Contact:

Post 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!
SeaOS: Adding VT-x, networking, and ARM support
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Post 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.
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
User avatar
piranha
Member
Member
Posts: 1391
Joined: Thu Dec 21, 2006 7:42 pm
Location: Unknown. Momentum is pretty certain, however.
Contact:

Post 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...
SeaOS: Adding VT-x, networking, and ARM support
dbittman on IRC, @danielbittman on twitter
https://dbittman.github.io
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Post 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: .
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
distantvoices
Member
Member
Posts: 1600
Joined: Wed Oct 18, 2006 11:59 am
Location: Vienna/Austria
Contact:

Post 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.
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
87ASC
Posts: 18
Joined: Wed Dec 20, 2006 11:07 pm
Location: Coupeville, WA

Post 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: .
Beginning OS Developer.
Have any suggestions for my post here:
http://www.osdev.org/phpBB2/viewtopic.php?t=12490
Post Reply