System Development The first Step;
Systems are very complex softwares .They are the mind of computers. They act as
assistants for the user to simplify the complex tasks and provide easy
operating system for your own is actually a very difficult task .Possible only
for great experts and professionals. But still it is possible for Amateur
programmers .For that you have to rise up to that much level in your skills
and knowledge. Creating an operating system requires a lot of knowledge about
several complex and difficult stages of computer science. There should be a
great understanding about the functions of hardwares, their workings, the
ability to read and write complex assembly languages and also good knowledge in
high level languages like C, C++, Pascal etc. You have to be thorough in
Programing concepts and Theories. And above all that you have to think yourself
whether you should enter or not in this world of obstacles and problems and you
are going to struggle a lot.
feeling discouraged by these words? Dont be frightened. These difficulties are
actually the fun of programming systems. The feeling of accomplishment you feel
when your OS starts to work, after long hours of coding and struggling makes
you the happiest person in the world. By that time you will be automatically
transformed into an expert in programming.
ARE YOU READY?
Operating system development
requires utmost patience, careful codings and great fore thinking. But it
returns very little to no Instant Gratification you
get from the development like games and webpages. You have to be aware of the
hard way ahead .Prepare your mind for occasional bouts of confusion,
discouragement, temporary insanity and anger. If your dedicate yourself into
your ultimate dream , in time you will be in the list of the elite few who have
contributed greatly to a working operating system .So get ready for the insane
think that writing software inefficiently is not a problem since the computers
are so fast. But this thinking is utterly wrong. Sloppy codes can be O.K for
simple applications. But for great operating systems where each function is
called million times the result can be disastrous. The Professionals who develop OS today keep
the records of everything they can with them. This is great practice to reduce
the time spent for debugging the applications and searching for bugs. Poorly
written programs cost precious execution time and involve task switching that is
expensive in both memory and frequency. So you have to leave out the practice
of writing poorly written programs.
WHAT YOU NEED?
OS development is not for beginners. It is the most difficult
programming task and can only be done by great minds with great skills and knowledge.
Failure to comply will make you disqualified. The Basic things you should know are listed below.
Computer Science-You have to know the basics of computer
science. At least the knowledge about the Binary,
Boolean Logics, Hexadecimal Operators etc. You should also know about Data Structure, Data Types, Algorithms, Programming Concepts
and Theories, Creation of Data structures, Constructors etc.
in high-level languages You are
going to write most of your codes for the operating system in a high-level
programming language like C/C++, Pascal, and FreeBSD .You
can choose any language as you like. You should have good knowledge in the
language you are using.
in Assembly-Assembly is a low level language.
You have to know it in an intermediate level because you will find its use in
your OS. To know the working of certain functions, hardware etc assembly should
creating program is essential in creating the most difficult program .OS
development cannot be considered as a method to learn programming.You can
extend your skills through OS development further.
programming-Linux is a free open source system.
Most of the programming tools were first made for Linux and later made
available for windows. You can get bootloader (GRUB)
and kernel (LINUXKERNEL) for free download.
Assemblers etc. are essential for OS
Development. You should also have good knowledge in all the tools like GCC, NASM, and GRUB etc.
These things will be discussed in another article.
Processors of the computers have to be dealed very carefully
when programing OS.You should study the manuals and the techspecs of the
processor you are going to use in your OS development. They contain the
information necessary to design the Kernel of you OS. If you avoid this there
can be dangerous results. Operating Systems frequently give instructions from
processors and other hardwares. A bug or an error can fry your hardwares.
DESIDING YOUR DEVELOPMENT AREA
Choosing the right development platform for your OS is
crucial. You have to select wisely by your needs. The most popular platforms
are the Linux and Windows. Using GNU/LINUX as
your platform gives you more tool to work with. In windows this problem can be
solved by using softwares like CYGWIN.
SOME TOOLS FOR LINUX:-
1. Binutils-Tool for Manipulating
2. Make-Automates the building
process .This tool is really useful when you have many files.
3. Grep, Sed-Does powerful searches
and replace functions.
4. Text Editor-For writing the
codes for C/C++ etc.
5. Diffutils-Finds the difference
YOU SHOULD AT LEAST KONOW THE BASICS OF USING THE ABOVE
Windows programing is little
difficult since all tools are not available. But still you can tools like CYGWIN, MINGSW or DJGPP to compile with GNU tools. CYGWIN is most
recommended. It is a good idea to
create a cross compiler due to default Executable formats. Other tools that can
be used are WATCOM, BORLAND TOOLS and VISUAL STUDIO. But creating in these
tools need specific linker requirements. You also require a Text Editor like
Notepad. But using notepad is not recommended since it is not much powerful.
Uses something like Notepad++ .It have Features like line number down etc. You
can also use Visual studio or eclipse but needs special configuration files.
GNU/LINUX platforms provide a lot
of tools for development. You can also use distributions package management
tools (apt-get, rpm, emerge) etc. Creating a cross compiler is essential. Some editors
that can be used are VIM, KDEVELOP, EMACE,
Frequent testing is essential to
find out and solve bugs in your OS.There are many techniques and tools for
complete testing. All these will be discussed later.
Creating an operating system is a
lengthy process .Youll spend hundreds of hours in front of your computer .Your
program is going to have hundreds or thousands of codes. A disk crash or an
error in formatting can throw your complete work into thrash. So you need some
backup to save your code from death. What you need is a VERSION CONTROL SYSTEM.CVS is
one of these that has been used for a no of years. Now systems like SUBVERSION, BAZAAR, and GIT etc.
are showing great competition in this field. You can also setup a server. If
you cannot then you can use your own computer. If your program is open source
then you can create project in SOURCEFORGE or GOOGLE or at Chinese server HIT.
I am only introducing the basic start up knowledge and
basic tools here. In future I will be giving out more explained articles and
posts on each topics in OS development mainly working out with hardwares.
Thanks for viewing.