Guidness for OS Design
Posted: Mon Jul 13, 2015 7:42 am
Hi everybody,
I was actively working on Genius Horizon OS until I paused the project for some reasons, now when I decided to return to work, I took a look on the current code and features I realized that my OS now is very basic and featureless, so, I decided to re-write the whole OS or actually write a new one from scratch - again -.
Now I have many ways to go with in the new design keeping in mind that I am very fan of Rolling Your Own staff.
-The development environment:
Previously I was using Visual Studio IDE, compiler and assembler. I am very familiar with VS and tweaking it. But when it comes to writing a new OS that I aim to be self-hosted, I think that VS here will be somehow a bad idea here, do you think so?
If we come to gcc, tbh, I don't have any experience with gcc staff and other gnu related tools due to that all my work previously was with VS and nothing forced me to use gcc, do you think that it is a good idea to use a tool that I am not familiar with to build an OS directly?
-The language to be used:
My previous attempt in OSdev was in pure C and Intel syntax assembly with nasm. Do you think that I should shift to C++ or it is OK to go with C especially that I am more familiar with C?
-The primary booting device:
Previously I was using floppy disks (awful headache ) , of course I am not going to choose floppy disk as primary booting device again. Now I am confused between hard disks and USB sticks. I want my OS to be portable i.e. easy to view it on others computers without need to change their MBR to boot up my OS. That aim makes me decide to choose USBs , but considering amount of coding to support USB as a primary booting device may be somehow a FDD-like headache, also if I considered durability of the stick with many reads and writes and the differences between UEFI and BIOS in booting from the sticks, I think that it is not a good choice.
What do you think ?
-Kernel layout, subsystem, userspace and such staff :
As I mentioned above, I like rolling my own design, especially that I am developing an OS, so I am free to do what I want.
What do you think , should I follow available archs or to roll my own to meet my aims ?
-Primary executable files for the OS apps:
ELF or EXE ?!
I would go with EXE honestly if I chose to go with VS as the primary IDE.
Those are the criteria that I thought about for now, I will be very thankful if someone guided me to other things that I should also consider while designing my OS.
Thanks in advance.
I was actively working on Genius Horizon OS until I paused the project for some reasons, now when I decided to return to work, I took a look on the current code and features I realized that my OS now is very basic and featureless, so, I decided to re-write the whole OS or actually write a new one from scratch - again -.
Now I have many ways to go with in the new design keeping in mind that I am very fan of Rolling Your Own staff.
-The development environment:
Previously I was using Visual Studio IDE, compiler and assembler. I am very familiar with VS and tweaking it. But when it comes to writing a new OS that I aim to be self-hosted, I think that VS here will be somehow a bad idea here, do you think so?
If we come to gcc, tbh, I don't have any experience with gcc staff and other gnu related tools due to that all my work previously was with VS and nothing forced me to use gcc, do you think that it is a good idea to use a tool that I am not familiar with to build an OS directly?
-The language to be used:
My previous attempt in OSdev was in pure C and Intel syntax assembly with nasm. Do you think that I should shift to C++ or it is OK to go with C especially that I am more familiar with C?
-The primary booting device:
Previously I was using floppy disks (awful headache ) , of course I am not going to choose floppy disk as primary booting device again. Now I am confused between hard disks and USB sticks. I want my OS to be portable i.e. easy to view it on others computers without need to change their MBR to boot up my OS. That aim makes me decide to choose USBs , but considering amount of coding to support USB as a primary booting device may be somehow a FDD-like headache, also if I considered durability of the stick with many reads and writes and the differences between UEFI and BIOS in booting from the sticks, I think that it is not a good choice.
What do you think ?
-Kernel layout, subsystem, userspace and such staff :
As I mentioned above, I like rolling my own design, especially that I am developing an OS, so I am free to do what I want.
What do you think , should I follow available archs or to roll my own to meet my aims ?
-Primary executable files for the OS apps:
ELF or EXE ?!
I would go with EXE honestly if I chose to go with VS as the primary IDE.
Those are the criteria that I thought about for now, I will be very thankful if someone guided me to other things that I should also consider while designing my OS.
Thanks in advance.