Developing Your Own Operating System | Things You Need TO Know | #Trendytone

Step 1 : What You Need to Know

The list of things you need to know before you attempt to undertake operating system development is very long. The three most important things you need to master prior to jumping into OS development are:
  • Basic computer science knowledge;
  • Computer programming theory and best-practices;
  • Low-level and a high-level programming languages. 

Step 2 : Learning Computer Sci. and Coding

OS development isn't like web development. It isn't something you can jump into and learn as you go. You need to develop a solid foundation in computer science before moving on to other topics. Here are some resources to get you started:
Coursera: Computer Science 101 is the course you should take first if you are brand new to the field of computer programming and computer science. If you have a little knowledge and experience under your belt, skip this course in favor of the Udacity of edX options. However, if you are brand new to the field, this course takes a no-prior-experience approach to introducing computer science and programming topics.
Udacity: Intro to Computer Science takes a web-development approach to teaching computer science. While not directly applicable to the prospect of building an operating system, this is a solid course that delivers useful information and provides a good overview of the basics of computer programming.
edX: Introduction to Computer Science is the most complete and in-depth computer science course in this list. This free, self-paced course was designed by Harvard University and mirrors the content presented in the course by the same name offered on the campus of Harvard University. In this far-reaching course you will learn about algorithms, data structures, resource management, software engineering, and get a look at programming languages like C, PHP, and JavaScript.

Step 3 : Learn Programming Languages

In order to develop an operating system, you will need to master at least two programming languages:
  • Low-level assembly language;
  • A high-level programming language.
Assembly languages are used to communicate directly with a CPU. Each type of CPU speaks a machine language and there is just one corresponding assembly language for each type of CPU. The most common computer architecture is x86, it was originally developed by Intel and is now used by a wide range of computer chip manufacturers including AMD, VIA, and many others. In this guide we will point you in the direction of learning x86 assembly language.
High-level programming languages work with multiple computer architectures. C is the programming language most commonly used and recommended for writing operating systems. For this reason, we are going to recommend learning and using C for OS development. However, other languages such as C++ and Python can also be used.

Step 4 : x86 Assembly Language

The x86 Assembly Guide is a great place to start learning assembly language. This short document provides a brief overview of x86 assembly language and will set the stage for the more advanced resources you'll be moving on to next.
Programming from the Ground Up by Jonathan Bartlett is one of the defining books of the assembly language landscape. This book uses assembly language as the basis for learning computer science and programming. This resource is also available from the Internet Archive.
The Art of Assembly Language by Randy Hyde is another iconic text in the world of assembly language education. Originally written specifically for Hyde's programming courses at Cal Poly and UC Riverside, the text was released as an HTML ebook in the mid-1990s and is recognized as a defining work within the field. The text is also hosted as a series of PDF files by the Yale FLINT Group.
If you want to use a traditional textbook to learn about x86 assembly language two of the most commonly used and highly recommended texts are:

Step 5 : C

There are many high-level programming languages you could learn and many different resources you could use to learn them. Our recommendation, and the recommendation most commonly echoed by the OS development community, is to learn C, and we've found several excellent resources that will turn you into a competent C programmer.
Get a quick overview of the C programming language by completing this C Tutorial. This resource won't turn you into an expert, but it will give you a good basic understanding of the language and prepare you to tackle more challenging topics and resources.
Learn C the Hard Way is a free HTML ebook that includes many practice exercises. This text walks you all the way through the C programming language, and if you put in the work, take your time, and complete all of the exercises, you'll be well on your way to being a competent C programmer by the time you complete this tutorial.
If a traditional textbook is something you're more likely to work your way through, these two texts are some of the most popular for mastering the C programming language.

Step 6: OS Development Tutorials

Once you have a strong grasp of the fundamental concepts of computer science and programming, and have mastered assembly language and C, the next step is to complete one or two OS development tutorials that walk through the entire process of developing a simple OS from scratch. We found three excellent resources that do just that.
Linux From Scratch will walk you through the process of building a complete Linux operating system. Completely this tutorial won't produce a full-fledged operating system, but it will give you a solid code base on which to build out a complete operating system. Tackle advanced tutorials such as Beyond Linux from ScratchAutomated Linux from ScratchCross Linux from Scratch, or Hardened Linux from Scratch to build your basic OS into a useful piece of software.
The little book about OS development by Erik Helin and Adam Renberg was developed as part of an advanced computer science course the authors completed while students as the Royal Institute of Technology in Stockholm. This course walks through the complete process of developing an x86 operating system by beginning with setting up a programming environment, culminating in programming for multitasking, and hitting topics such as managing system memory and developing file systems along the way.
Operating System Development Series from Broken Thorn Entertainment is a series of 25 tutorials that walk you through the process of creating an OS from the ground up. Beginners beware: this series assumes you already know your way around an IDE and are a competent C and assembly language programmer.
There are many texts you could use to learn about the discipline of OS development. Three of the most commonly recommended are:

Step 7 : OS Development Communities

As you embark on the journey of becoming an OS developer, there are a few places where you can find other OS developers to learn from and commiserate with:
  • OSDev.org is a wiki with a great deal of information about OS development as well as a forumwhere you can meet and get feedback from other like-minded programmers.
  • OS Development Channel on reddit is a great community where you can learn about OS development and enjoy a moment of levity when the task of OS development becomes a bit to arduous.
  • Computer ScienceProgrammers, and StackOverflow from StackExchange are places you can pose technical questions to other programmers when you come up against a problem you can't seem to figure out on your own.

Summary

Learning OS development is one of the most challenging programming tasks you can undertake. However, succeeding in your effort to build a working OS will mark you as a competent programmer and one who deeply understands how processors, hardware, and computer programs work together to create what the rest of the world takes for granted as a functioning computer.

Comments

  1. Thank you for sharing this excellent blog. Nice Post I Enjoy! Fantastic site you've got here, but I was wondering to know if there are forums that deal with the same subjects discussed here? I'd like to be part of an online community where I can hear the opinions of other individuals who share my interests. If you have any ideas I'd appreciate it if you let me know.

    StartIsBack license key

    ReplyDelete

Post a Comment