No Flash

Create Your Own Operating System

Operating system
An operating system (OS) is software, consisting of programs and data, that run on computers and manages the computer hardware and provides common services for efficient execution of various application software. Examples Windows, Linux, Macintosh. 

India's Bharat Operating System Solutions

BOSS (Bharat Operating System Solutions) is a GNU/Linux distribution developed by C-DAC, Chennai in order to benefit the usage of Free/Open Source Software throughout India.

Knowledge Required
The following are some of the important area where you should be comfortable. It is not necessary to know in and out of everything.
• C and Assembly (Yes – Assembly knowledge is must)
• Data structures (Array, Linked List, Binary Tree, Hash…)
• Compiler, Linker, Object Files, Executable Files
• Processor Modes – Real and Protected
• Knowledge in BIOS, Interrupt, ISR, DMA, IO etc
• Basic Hardware Knowledge
• OS Concepts

Writing an OS is not an easy task.

No I didn’t say that; although developing OS is not an easy task, it is not an impossible one. OSdevelopment may take more than what you estimate however it is also possible to complete a working kernel within short frame of time (6 months).If you have knowledge about the above thing then it will take just a year to complete an OS project. :)

OS is composed of many components or modules. Writing all the modules from scratch will take lot of time. And also all modules are not required for all OSes. So decide what kind of OS you want to write. GUI and Shell are some example for programs which are not needed for an OS. Memory Management, Process Management and Scheduler are the important things; around which you may set your goals.

Design is the first task to be done for any task
Spend some time to finalize your kernel design before starting coding. Set all modules’s functions, data structure and how they are going to interact/communicate with other modules before start coding.
Kernel is the most important part in OS design.

Set Environment
What makes OS development harder?
– The answer is development/debugging environment.
Before start coding but after design set your development environment well.
GCC and NASM/FASM is compiler/assembler used by most hobby OS developers. Try to learn the options. Supported by these compilers and assemblers.
You should also learn how to link Assembly and C source code.
Also you may need to learn about MakeFile and linker scripts.
Linux as the host machine for OS development because Linux has lot of open source tools related to kernel development.

To test and debug your kernel, you need either a real machine or a virtual machine (Virtual PC, VMWARE,Bochs, QEmu). WinImage, FileDisk are some tools help to create image files for virtual machines.

If you are creating a kernel you should take care of time management also
otherwise you can’t complete the project. The classic technique of time management is set timeframe for each activity and to complete it within the timeframe. Here are some macro level milestones. (The percentages are of total time within which the objectives should complete.)

• Design (25%) (Reading – 15%, Design – 10%)
• Tools and environment Setup (5%)
• Grub and Hello World Kernel (15%)
• Create Real Kernel (30%)
• Debugging (20%)

OS Development Forums and Basic Fundamental Books...


Good luck.. ;)

No comments:

Post a Comment