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.

I will do that. ThanksSolar wrote:Please check the sticky thread "Book Recommendations" and the "Wiki" link above (the one with the yellow flower beside it).
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.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.
Thanks.rexlunae wrote: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.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.
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.
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.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![]()
I hope it works for you!
Thanks, this well help alotpiranha 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...
How can I thank you guys enough. This is awesome and great informationdistantvoices 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.