Module 1 – Operating System
What is an operating system?
An operating system (OS) is the program that, after being initially loaded into the
computer by a boot program, manages all of the other application programs in a
computer. The application programs make use of the operating system by making
requests for services through a defined application program interface (API). In addition,
users can interact directly with the operating system through a user interface, such as a
command-line interface (CLI) or a graphical UI (GUI).
Why use an operating system?
An operating system brings powerful benefits to computer software and software
development. Without an operating system, every application would need to include its
own UI, as well as the comprehensive code needed to handle all low-level functionality
of the underlying computer, such as disk storage, network interfaces and so on.
Considering the vast array of underlying hardware available, this would vastly bloat the
size of every application and make software development impractical.
Instead, many common tasks, such as sending a network packet or displaying text on a
standard output device, such as a display, can be offloaded to system software that
serves as an intermediary between the applications and the hardware. The system
software provides a consistent and repeatable way for applications to interact with the
hardware without the applications needing to know any details about the hardware.
System software is a type of computer program that is designed to run a
computer's hardware and application programs.
As long as each application accesses the same resources and services in the same
way, that system software -- the operating system -- can service almost any number of
applications. This vastly reduces the amount of time and coding required to develop and
debug an application, while ensuring that users can control, configure and manage the
system hardware through a common and well-understood interface.
1
Once installed, the operating system relies on a vast library of device drivers to tailor
OS services to the specific hardware environment. Thus, every application may make a
common call to a storage device, but the OS receives that call and uses the
corresponding driver to translate the call into actions (commands) needed for the
underlying hardware on that specific computer. Today, the operating system provides a
comprehensive platform that identifies, configures and manages a range of hardware,
including processors; memory devices and memory management; chipsets; storage;
networking; port communication, such as Video Graphics Array (VGA), High-Definition
Multimedia Interface (HDMI) and Universal Serial Bus (USB); and subsystem interfaces,
such as Peripheral Component Interconnect Express (PCIe).
Functions of an operating system
An operating system provides three essential capabilities: It offers a UI through a CLI or
GUI; it launches and manages the application execution; and it identifies and exposes
system hardware resources to those applications -- typically, through a standardized
API.
UI. Every operating system requires a UI, enabling users and administrators to interact
with the OS in order to set up, configure and even troubleshoot the operating system
and its underlying hardware. There are two primary types of UI available: CLI and GUI.
The CLI, or terminal mode window, provides a text-based interface where users rely on
the traditional keyboard to enter specific commands, parameters and arguments related
to specific tasks. The GUI, or desktop, provides a visual interface based on icons and
symbols where users rely on gestures delivered by human interface devices, such as
touchpads, touchscreens and mouse devices.
The GUI is most frequently used by casual or end users that are primarily interested in
manipulating files and applications, such as double-clicking a file icon to open the file in
its default application. The CLI remains popular among advanced users and system
administrators that must handle a series of highly granular and repetitive commands on
2
a regular basis, such as creating and running scripts to set up new personal computers
(PCs) for employees.
Application management. An operating system handles the launch and management
of every application. This typically supports an array of behaviors, including timesharing
multiple processes, or threads, so that various tasks can share the available processors'
time; handling interruptions that applications produce to gain a processor's immediate
attention, ensuring there is enough memory to execute the application and its
corresponding data without interfering with other processes; carrying out error handling
that can gracefully remove an application's processes; and performing memory
management without disrupting other applications or the OS.
An operating system can also support APIs that enable applications to utilize OS and
hardware functions without the need to know anything about the low-level OS or
hardware state. As an example, a Windows API can enable a program to obtain input
from a keyboard or mouse; create GUI elements, such as dialog windows and buttons;
read and write files to a storage device; and more. Applications are almost always
tailored to use the operating system on which the application intends to run.
Additionally, an operating system can perform the following services for applications:
3
In a multitasking operating system, where multiple programs can be running
at the same time, the OS determines which applications should run in what
order and how much time should be allowed for each application before
giving another application a turn.
It handles input/output (I/O) to and from attached hardware devices, such as
hard disks, printers and dial-up ports.
It sends messages to each application or interactive user -- or to a system
operator -- about the status of operation and any errors that may have
occurred.
It can offload the management of batch jobs -- for example, printing -- so that
the initiating application is freed from this work.
On computers that can provide parallel processing, an operating system can
manage how to divide the program so that it runs on more than one
processor at a time.
All major computer platforms (hardware and software) require, and sometimes include,
an operating system, and operating systems must be developed with different features
to meet the specific needs of various form factors.
Device management. An operating system is responsible for identifying, configuring,
and providing applications with common access to underlying computer hardware
devices. As the OS recognizes and identifies hardware, the OS will install
corresponding device drivers that enable the OS and applications running on the OS to
use the devices without any specific knowledge of the hardware or devices.
An operating system is responsible for identifying the correct printer and installing the
appropriate printer drivers so that an application needs to only make calls to the printer
without having to use codes or commands that are specific to that printer -- that is the
operating system's job. The situation is similar for other devices, such as USB ports;
networking ports; graphics devices, such as graphics processing units (GPUs);
motherboard chipsets; and storage devices, such as Serial-Attached SCSI (SAS) disk
adapters and disks that are formatted with a suitable file system.
The OS identifies and configures physical and logical devices for service and typically
records them in a standardized structure, such as Windows Registry. Device
manufacturers periodically patch and update drivers, and the OS should update them to
ensure best device performance and security. When devices are replaced, the OS also
installs and configures new drivers.
4
Operating system types and examples
Although the fundamental roles of an operating system are ubiquitous, there are
countless operating systems that serve a wide range of hardware and user needs.
General-purpose operating system. A general-purpose OS represents an array of
operating systems intended to run a multitude of applications on a broad selection of
hardware, enabling a user to run one or more applications or tasks simultaneously. A
general-purpose OS can be installed on many different desktop and laptop models and
run applications from accounting systems to databases to web browsers to games.
General-purpose operating systems typically focus on process (thread) and hardware
management to ensure that applications can reliably share the wide range of computing
hardware present.
Common desktop operating systems include the following:
Windows is Microsoft's flagship operating system, the de facto standard for
home and business computers. Introduced in 1985, the GUI-based OS has
been released in many versions since then. The user-friendly Windows
95 was largely responsible for the rapid development of personal computing.
Mac OS is the operating system for Apple's Macintosh line of PCs and
workstations.
Unix is a multiuser operating system designed for flexibility and adaptability.
Originally developed in the 1970s, Unix was one of the first operating systems
to be written in the C language.
Linux is a Unix-like operating system that was designed to provide PC users
a free or low-cost alternative. Linux has a reputation as an efficient and fast-
performing system.
5
Mobile operating system. Mobile operating systems are designed to accommodate
the unique needs of mobile computing and communication-centric devices, such as
smartphones and tablets. Mobile devices typically offer limited computing resources
compared to traditional PCs, and the OS must be scaled back in size and complexity in
order to minimize its own resource use, while ensuring adequate resources for one or
more applications running on the device. Mobile operating systems tend to emphasize
efficient performance, user responsiveness and close attention to data handling tasks,
such as supporting media streaming. Apple iOS and Google Android are examples of
mobile operating systems.
Embedded operating system. Not all computing devices are general purpose. A huge
assortment of dedicated devices -- including home digital assistants, automated teller
machines (ATMs), airplane systems, retail point of sale (POS) terminals and internet of
things (IoT) devices -- includes computers that require an operating system. The
principal difference is that the associated computing device only does one major thing,
so the OS is highly stripped down and dedicated to both performance and resilience.
The OS should run quickly, not crash, and handle all errors gracefully in order to
continue operating in all circumstances. In most cases, the OS is provided on a chip
that is incorporated into the actual device. A medical device used in a patient's life
support equipment, for example, will employ an embedded OS that must run reliably in
order to keep the patient alive. Embedded Linux is one example of an embedded OS.
Network operating system. A network operating system (NOS) is another specialized
OS intended to facilitate communication between devices operating on a local area
network (LAN). A NOS provides the communication stack needed to understand
network protocols in order to create, exchange and decompose network packets.
Today, the concept of a specialized NOS is largely obsolete because other OS types
largely handle network communication. Windows 10 and Windows Server 2019, for
example, include comprehensive networking capabilities. The concept of a NOS is still
used for some networking devices, such as routers, switches and firewalls, and
manufacturers may employ proprietary NOSes, including Cisco Internetwork Operating
System (IOS), RouterOS and ZyNOS.
6
Real-time operating system. When a computing device must interact with the real
world within constant and repeatable time constraints, the device manufacturer may opt
to use a real-time operating system (RTOS). For example, an industrial control system
may direct the operations of a sprawling factory or power plant. Such a facility will
produce signals from myriad sensors and also send signals to operate valves,
actuators, motors and countless other devices. In these situations, the industrial control
system must respond quickly and predictably to changing real-world conditions --
otherwise, disaster may result. An RTOS must function without buffering, processing
latencies and other delays, which are perfectly acceptable in other types of operating
systems. Two examples of RTOSes include FreeRTOS and VxWorks.
The differences between operating system types are not absolute, and some operating
systems can share characteristics of others. For example, general-purpose operating
systems routinely include the networking capabilities found in a traditional NOS.
Similarly, an embedded operating system commonly includes attributes of an RTOS,
while a mobile operating system can still typically run numerous apps simultaneously
like other general-purpose operating systems.
Acronym
API - An application programming interface (API) is code that enables two software
programs to communicate. An API defines how a developer should request services
from an operating system (OS) or other application, and expose data within different
contexts and across multiple channels.
CLI - A command-line interpreter or command-line processor uses a command-line
interface (CLI) to receive commands from a user in the form of lines of text. This
provides a means of setting parameters for the environment, invoking executables and
providing information to them as to what actions they are to perform.
GUI - is a form of user interface that allows users to interact with electronic
devices through graphical icons and audio indicator such as primary notation, instead
of text-based UIs, typed command labels or text navigation.
DRIVER - is a computer program that operates or controls a particular type
of device that is attached to a computer or automaton.
7
VGA - is a video display controller and accompanying de facto graphics standard, first
introduced with the IBM PS/2 line of computers in 1987, which became ubiquitous in
the IBM PC compatible industry within three years.
HDMI - High-Definition Multimedia Interface (HDMI) is
a proprietary audio/video interface for transmitting uncompressed video data and
compressed or uncompressed digital audio data from an HDMI-compliant source
device, such as a display controller, to a compatible computer monitor, video
projector, digital television, or digital audio device.
USB - Universal Serial Bus (USB) is an industry standard that establishes specifications
for cables, connectors and protocols for connection, communication and power supply
(interfacing) between computers, peripherals and other computers.
PCIe - PCI Express (Peripheral Component Interconnect Express), officially abbreviated
as PCIe or PCI-e, is a high-speed serial computer expansion bus standard, designed to
replace the older PCI, PCI-X and AGP bus standards. It is the
common motherboard interface for personal computers' graphics cards, sound
cards, hard disk drive host adapters, SSDs, Wi-Fi and Ethernet hardware connections.
BATCH JOB - The term ‘batch job’ originated in the days of mainframe computers
when users entered programs onto punch cards. The user would give a batch of these
programmed cards to the system operator, who would then feed them into the
computer.
THREAD - is a sequence of responses to an initial message posting. This enables you
to follow or join an individual discussion in a newsgroup from among the many that may
be there.
PARALLEL PROCESSING - a mode of computer operation in which a process is split
into parts that execute simultaneously on different processors attached to the same
computer.
PACKET - In networking, a packet is a small segment of a larger message. Data sent
over computer networks*, such as the Internet, is divided into packets. These packets
are then recombined by the computer or device that receives them.