An operating system is software that manages computer hardware and system resources and provides the tools that applications need to operate.
A Brief History of Operating Systems
The first operating system was created by General Motors in 1956 to run a single IBM mainframe computer. Other IBM mainframe owners followed suit and created their own operating systems..As you can imagine, the earliest operating systems varied wildly from one computer to the next, and while they did make it easier to write programs, they did not allow programs to be used on more than one mainframe without a complete rewrite.
In the 1960s, IBM was the first computer manufacturer to take on the task of operating system development and began distributing operating systems with their computers. However, IBM wasn’t the only vendor creating operating systems during this time. Control Data Corporation, Computer Sciences Corporation, Burroughs Corporation, GE, Digital Equipment Corporation, and Xerox all released mainframe operating systems in the 1960s as well…In the late 1960s, the first version of the Unix operating system was developed. Written in C, and freely available during it’s earliest years, Unix was easily ported to new systems and rapidly achieved broad acceptance.
Many modern operating systems, including Apple OS X and all Linux flavors, trace their roots back to Unix.
Microsoft Windows was developed in response to a request from IBM for an operating system to run its range of personal computers.
The first OS built by Microsoft wasn’t called WINDOW, it was called MS-DOS and was built in 1981 by purchasing the 86-DOS operating system from Seattle Computer Products and modifying it to meet IBM’s requirements.
The name Windows was first used in 1985 when a graphical user interface was created and paired with MS-DOS.
Apple OS X, Microsoft Windows, and the various forms of Linux (including Android) now command the vast majority of the modern operating system market.
Operating systems are built out of two main parts:
- The kernel;
- System programs.
The kernel is the heart of the operating system. It is the first program loaded when the computer starts up, it manages computer resources, and it handles requests from system programs and applications.
System programs run on top of the kernel. They aren’t used to perform useful work, instead, they are the programs necessary to connect the kernel to user applications and peripheral devices. Device drivers, file systems, networking programs, and system utilities like disk defragmeters are all examples of system programs
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.
Learn Computer Science
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 101is 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
Learn Computer Programming
With a solid grasp of computer science under your belt and some limited experience with programming languages, the next step is to learn how to tackle a large-scale programming project.
Udacity: Software Development Process is an excellent course everyone should take if they’ve never undertaken a large-scale, challenging programming project before. In this course you’ll learn workflow and management tools and techniques such as Git and how to set up an integrated development environment.
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 Phyton can also be used.
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:
Learning OS development is one of the most challenging programming tasks you can undertake. However, Spytrac256 At gmail com. the team will help you knowing more about operating system and 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.
Hope it work thanks.