Building an operating system for senior project?

Hey guys! this is my first post on this site. I was hoping you guys could help me out. I am going to be a senior this year and I want to build an operating system from scratch or at least do as much of as I can by myself. I want to build nothing big like ubuntu but something smaller looking that looks more like android or ios. I know I have to start off with a kernal and then from there do the rest but if you could help me out. Could you answer a few of my questions? and give me other tips that you think will be helpful? Thank you very much!

  1. How do I start building the kernal? Is there a program i use to create it?

  2. What programs will I need to create this operating system?

  3. what languages will I need to learn? I looked this part up and found I will have to learn c+, C++ and maybe C#.

  4. What programs will I need to create this whole project?

For people who don't know what a senior project is, it's a project that you create your senior year of high school or in college. You have to learn something then do something that relates to what you learned. I am a computer person and building a program seems something that anyone can do. I want more of a challenge. Thank you guys for all the help.

With a design. I'd suggest reading something like Tanenbaums Modern Operating Systems.

And editor, and a compilation toolchain.

Maybe C, and definitely the assembler dialect spoken by the platform you're programming for. C++ is more for user space, and C# needs an underlying VM to run.

I'd suggest, aside from the Tanenbaum, that you take a look at the sources for (at least one of) the Linux kernel, Minix3 (which was written as a teaching OS), FreeBSD, or KolibriOS.

Thank you very much. I have a design, where should i start off?

One place you could start is the memory manager.

Could you please share your design here ?

First of all Great initiative .Considering the vast amount of knowledge require to accomplish the project i recommend you to find a people with similar interest who are eager to participate in. Making your idea go Open source should do the trick unless you want to retain the privacy of your operating system.

I would like to participate in this, if you would like to share you work. I have good hands on experience in C programming.

please let me know your wish.

Thanks
Kumaran

sorry guys, this is a project for school. I wish I could give you my plans. I hope after I turned this project in and maybe release as a open source for other people to make better.

Anyone know exactly where I should start? Like what is the next thing after the design that I should do.

How "serious" an OS is this? Is it a theoretical construct, or does it need to fully utilize a modern system?

If you could get away with writing in 16-bit real mode, your work would be miles easier -- you could write a "hello world" without having to worry about disk drivers, keyboard interrupts, timing controllers, or any protected-mode histrionics by relying on BIOS I/O calls. Once you've got your "hello world" working, you can start building the structure from there. I'd almost say you have to start this way, getting a tinkertoy version of your OS running in 640K might happen before you manage to properly switch into real mode. If people really like it, they could reinvent it in protected mode themselves, like how Minux inspired Linux.

Either way though, getting a bootloader to load a kernel is way different than getting an OS to load a program. Some "magic" code is needed, and you need to put the right things in the right places. Play around with the GRUB bootloader, and have a look at the source code for memtest86 -- it's a small program that loads and runs raw from the bootloader too.

This may be little late but i found something that i think should be your initial step towards building your OS.
Just try to read about LFS(i.e Linux from scratch). This topic covers everything about How linux can be build according to your convenience .If you find this to be in your grasp then building an operating system should not be a big deal for you.

There is an enormous difference between building linux from scratch and writing linux from scratch. Building it, i.e. compiling it, might take a couple days. The other is an ongoing effort, 18 years and counting.