INTRODUCTION TO OS DEVELOPMENT
There aren’t really any development fields more challenging than operating system (OS) development. It is the “great pinnacle of programming.”
Few programmers ever attempt to build an OS and many of those who do make the attempt never produce a functioning system.
However, if you do make it all the way to the finish line and produce a functional operating system, you will have joined an elite group of top-flight programmers.
What is an Operating System?
The earliest computers did not have operating systems.
Every program that ran on these early systems had to include all of the code necessary to run the computer, communicate with connected hardware, and perform the computation the program was actually intended to perform. This situation meant that even simple programs were complex.
As computer systems diversified and became more complex and powerful, it became increasingly impractical to write programs that functioned as both an operating system and a useful application.
In response, individual mainframe computer owners began to develop system software that made it easier to write and run programs and operating systems were born.
An operating system (OS) is software that manages computer hardware and system resources and provides the tools that applications need to operate. The birth of operating systems meant that programs no longer had to be written to control the entire scope of computer operation.
Instead, computer applications could be written to be run by the operating system while the operating system worried about computer resources and connected peripheral equipment such as printers and punched paper card readers.
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 Windows, 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.
The Parts of an Operating System
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.
Application programs aren’t part of the operating system and are the programs used to perform useful work. Word processing applications, browsers, and media player are common types of application programs. Application programs are managed and enabled by the kernel, and use system programs to access computer periphery devices and hardware.
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.