Before it begins, I would like you to know how it all started and what is the purpose of this!
I am an Engineer from more than 10 years now. As an Engineer, by nature I tend to solve the problem(s) or create some technology for betterment of society or nature. To do so, Engineers should know many concepts before doing anything. Ex, Teachers cannot teach in school/college without the knowledge of chapter they are teaching! In simple terms they should understand what they are dealing with. An Engineer should know many things depending on type of work.
As an Embedded developer (an Engineer who will write a software(s) to make hardware/chip/controller/processor communicating with other hardware/chip/controller/processor), I should know type of hardware I am dealing with, what software already present in that (like, OS/RTOS if any), how it will work, how it should work, etc...
As its is more than 10 years now, I have good understanding of the Operating System. In my personal opinion and experience, theoretical knowledge and practical knowledge are 2 different things. And I believe in the "Reinventing Wheel" to have better understanding of anything! From business point of view it has no value add. From individual point of view it is a great value add. So, Engineers should put extra effort outside office hours to learn anything! now you know why Engineers has to spend more time related to work!
Purpose: "Reinventing Wheel" in this case "re-writing operating system" is to deepen my understanding.
There is no hidden work going on here. I am starting this as an hobby, not sure where it goes. I know it is not an easy task and cannot be completed in few days/months. It will be one of the longest running hobby project that I ever worked on or will work on! Not sure who long I can keep up. I will try my best for sure.
Interested people can check out my actual development work in here: https://github.com/bvbasavaraju/os_dev
If anyone would like to contribute, please feel free to mail me first. With that we can decide on which module one can take up or work on!
If you find a bug in my work please feel free to log the same.
Programming Language(s):
+ C/C++ and Assembly
To write an Operating System one should know C/C++ and assembly language depending on the language opted for writing an Operating System. Reason for using C/C++ is, these are close to low level programming and easy to understand. Assembly is much better, but not easy to understand. So, I have opted for C/C++ programming language. Some places assembly language is a unavoidable. From my experience I am relatively good at these programming languages.
Architecture:
+ Intel x86 architecture - this operating system will be written for Intel x86 Architecture.
Tools:
+ ubuntu 18.04 - Host operating system in which operating system is developed
+ nasm - Netwide Assembler for Intel x86 Architecture.
+ qemu - Quick Emulator for emulating processor (similar to Virtual Box or VMWare). It is used for testing operating system. I Will move to virtual box in future.
References (Many would be listed as and when I refer the same):
+ http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
+ https://github.com/cfenollosa/os-tutorial
+ https://wiki.osdev.org/Main_Page
Let's get started!...
I am an Engineer from more than 10 years now. As an Engineer, by nature I tend to solve the problem(s) or create some technology for betterment of society or nature. To do so, Engineers should know many concepts before doing anything. Ex, Teachers cannot teach in school/college without the knowledge of chapter they are teaching! In simple terms they should understand what they are dealing with. An Engineer should know many things depending on type of work.
As an Embedded developer (an Engineer who will write a software(s) to make hardware/chip/controller/processor communicating with other hardware/chip/controller/processor), I should know type of hardware I am dealing with, what software already present in that (like, OS/RTOS if any), how it will work, how it should work, etc...
As its is more than 10 years now, I have good understanding of the Operating System. In my personal opinion and experience, theoretical knowledge and practical knowledge are 2 different things. And I believe in the "Reinventing Wheel" to have better understanding of anything! From business point of view it has no value add. From individual point of view it is a great value add. So, Engineers should put extra effort outside office hours to learn anything! now you know why Engineers has to spend more time related to work!
Purpose: "Reinventing Wheel" in this case "re-writing operating system" is to deepen my understanding.
There is no hidden work going on here. I am starting this as an hobby, not sure where it goes. I know it is not an easy task and cannot be completed in few days/months. It will be one of the longest running hobby project that I ever worked on or will work on! Not sure who long I can keep up. I will try my best for sure.
Interested people can check out my actual development work in here: https://github.com/bvbasavaraju/os_dev
If anyone would like to contribute, please feel free to mail me first. With that we can decide on which module one can take up or work on!
If you find a bug in my work please feel free to log the same.
Programming Language(s):
+ C/C++ and Assembly
To write an Operating System one should know C/C++ and assembly language depending on the language opted for writing an Operating System. Reason for using C/C++ is, these are close to low level programming and easy to understand. Assembly is much better, but not easy to understand. So, I have opted for C/C++ programming language. Some places assembly language is a unavoidable. From my experience I am relatively good at these programming languages.
Architecture:
+ Intel x86 architecture - this operating system will be written for Intel x86 Architecture.
Tools:
+ ubuntu 18.04 - Host operating system in which operating system is developed
+ nasm - Netwide Assembler for Intel x86 Architecture.
+ qemu - Quick Emulator for emulating processor (similar to Virtual Box or VMWare). It is used for testing operating system. I Will move to virtual box in future.
References (Many would be listed as and when I refer the same):
+ http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
+ https://github.com/cfenollosa/os-tutorial
+ https://wiki.osdev.org/Main_Page
Let's get started!...
No comments:
Post a Comment