The Evolution of Unix/Linux: A Historical Perspective

The Evolution of Unix/Linux: A Historical Perspective

Introduction to Operating Systems: The Core of Computer Functionality

An operating system (OS) is a crucial software component that facilitates communication between computer hardware and software, enabling the effective operation of both. Without an operating system, a computer and its applications would not function. After being loaded into the computer by a boot program, the operating system manages all other software, which are referred to as applications or application programs. Applications rely on the operating system to provide services, accessed through a defined application program interface (API). Users can interact with the operating system through various interfaces, including command-line interfaces or graphical user interfaces (GUI).

Operating systems provide a range of services for applications, including:

  • Multitasking: In systems where multiple programs run simultaneously, the operating system schedules application execution, determining the sequence and allocating processing time for each application.
  • Memory Management: It manages the allocation and sharing of internal memory among multiple applications.
  • Input/Output Handling: The OS facilitates communication between the computer and external devices such as hard disks, printers, and modems.
  • Status Communication: It communicates with applications or users, providing updates on the status of operations and any errors encountered.
  • Batch Job Management: The OS can handle batch jobs (e.g., printing) autonomously, freeing up the initiating application for other tasks.
  • Parallel Processing: On systems with multiple processors, the operating system manages the division of programs to utilize multiple processors effectively.

Examples of widely used operating systems include:

  • Red Hat: A prominent Linux distribution known for its stability and support in enterprise environments.
  • Microsoft Windows: The most common operating system for PCs and IBM-compatible computers.
  • Apple macOS: The exclusive operating system for Apple computers, known for its user-friendly interface and integration with Apple hardware.
  • Ubuntu Linux: A popular, user-friendly Linux distribution for PCs and IBM-compatible computers.
  • Google Android: The dominant operating system for Android-based smartphones and tablets.
  • iOS: The operating system used on Apple's iPhone, known for its security and seamless integration with Apple's ecosystem.


UNIX and UNIX-like operating systems, such as Linux, consist of a kernel and a variety of system programs. These systems also include application programs used to accomplish different tasks. Although the kernel is central to the operating system, it is only a component of the broader system. The operating system as a whole offers a vast array of services beyond the kernel.

These services include managing files on the disk, initiating and managing concurrent programs, allocating memory and other resources to processes, and handling network communication. The kernel itself provides minimal services directly but offers tools that facilitate the construction of these services. It restricts direct hardware access, thereby ensuring a layer of protection among users by requiring the use of system calls for accessing the tools.

System programs utilize the kernel’s tools to deliver the services essential for operating system functionality. All programs, including system and application programs, run "on top of the kernel" in what is known as user mode. System programs are crucial for system operations, while application programs are designed to perform specific tasks for users, such as word processing or gaming. The distinction between these programs can be nuanced and is mainly significant for classification purposes.

An operating system might also include compilers and their associated libraries, such as GCC and the C library in Linux, although programming languages are not always considered a part of the operating system. Additionally, documentation and games can be included in the operating system package.


The Linux kernel consists of several important parts:

Process management
Memory management
Hardware device drivers
Filesystem drivers
Network management
Various other bits and pieces        


The following figure shows some of the more important parts of the Linux kernel


 

 Probably the most important parts of the kernel (nothing else works without them) are memory management and process management. Memory management takes care of assigning memory areas and swap space areas to processes, parts of the kernel, and for the buffer cache. Process management creates processes, and implements multitasking by switching the active process on the processor.

 

At the lowest level, the kernel contains a hardware device driver for each kind of hardware it supports. Since the world is full of different kinds of hardware, the number of hardware device drivers is large. There are often many otherwise similar pieces of hardware that differ in how they are controlled by software. The similarities make it possible to have general classes of drivers that support similar operations; each member of the class has the same interface to the rest of the kernel but differs in what it needs to do to implement them. For example, all disk drivers look alike to the rest of the kernel, i.e., they all have operations like initialize the drive', read sector N', and `write sector N'.



History of Unix/Linux

 

1965 Bell Laboratories joins with MIT and General Electric in the development effort for the new operating system, Multics, which would provide multi-user, multi-processor, and multi-level (hierarchical) file system, among its many forward-looking features.

 

1969 AT&T was unhappy with the progress and drops out of the Multics project. Some of the Bell Labs programmers who had worked on this project, Ken Thompson, Dennis Ritchie, Rudd Canaday, and Doug McIlroy designed and implemented the first version of the Unix File System on a PDP-7 along with a few utilities. It was given the name UNIX by Brian Kernighan as a pun on Multics.

 

1971 The system now runs on a PDP-11, with 16Kbytes of memory, including 8Kbytes for user programs and a 512Kbyte disk.

 

Its first real use is as a text processing tool for the patent department at Bell Labs. That utilization justified further research and development by the programming group. UNIX caught on among programmers because it was designed with these features:

 

• programmers environment

• simple user interface

• simple utilities that can be combined to perform powerful functions

• hierarchical file system

• simple interface to devices consistent with file format

• multi-user, multi-process system

• architecture independent and transparent to the user.

 

1973 Unix is re-written mostly in C, a new language developed by Dennis Ritchie. Being written in this high-level language greatly decreased the effort needed to port it to new machines.

1974 Thompson and Ritchie publish a paper in the Communications of the ACM describing the new Unix OS. This generates enthusiasm in the Academic community which sees a potentially great teaching tool for studying programming systems development. Since AT&T is prevented from marketing the product due to the 1956 Consent Decree they license it to Universities for educational purposes and to commercial entities.

 

1977 There are now about 500 Unix sites world-wide.

1980 BSD 4.1 (Berkeley Software Development)

1983 SunOS, BSD 4.2, SysV

1984 There are now about 100,000 Unix sites running on many different hardware platforms, of vastly different capabilities.

1988 AT&T and Sun Microsystems jointly develop System V Release 4 (SVR4). This would later be developed into UnixWare and Solaris 2.

1993 Novell buys UNIX from AT&T

1994 Novell gives the name "UNIX" to X/OPEN

1995 Santa Cruz Operations buys UnixWare from Novell. Santa Cruz Operations and Hewlett-Packard announce that they will jointly develop a 64-bit version of Unix.

1996 International Data Corporation forecasts that in 1997 there will be 3 million Unix systems shipped world-wide.        

 

#OperatingSystems #ComputerHardware #SoftwareManagement #LinuxKernel #UNIXSystems #TechnologyEvolution #SystemProgramming #ComputerHistory #Multitasking #NetworkManagement

To view or add a comment, sign in

More articles by Tahmid Ul Muntakim

Insights from the community

Others also viewed

Explore topics