1
1
Definition - An operating system (OS) is a software program or set of programs that serves as an
intermediary between computer hardware and user applications.
operating systems have two main functions: providing abstractions to user programs and managing
the computer’s resources.
OS is a fundamental component of most computing devices, including personal computers, servers,
smartphones, and embedded systems.
Operating systems (OS) are providing seamless operation of modern computer systems.While
operating 'behind the curtain', their presence is essential for the stability, functionality, and
efficiency of the entire system. They serve as the intermediary between hardware components and
the user, overseeing workflow of instructions, data flows, and processes. All the
devices we encounter daily – personal computers, smartphones, tablets, smart appliances, advanced
machinery; Operating systems power these devices,enabling them to perform an astonishing
array of tasks, from processing complex calculations to streaming high-definition videos, and from
running intricate algorithms to providing real-time updates on weather and traffic.
* Kernel: The core of the OS that manages hardware resources, scheduling processes, and handling
system calls. The kernel is loaded into memory when the computer starts,
and it remains in memory throughout the operation of the system. It provides services and
abstractions that higher-level software (applications, device drivers, system utilities) use it to
interact
with and control the hardware. Without the kernel, the OS cannot function.
On Kernel level Unix and windows versions took a different approach: A UNIX program consists of
code that does something or other, making system calls to have certain services performed.
In contrast, a Windows program is normally event driven. The main program waits for some event
tohappen, then calls a procedure to handle it. Typical events are keys being struck,
the mouse being moved, a mouse button being pushed, or a USB drive inserted.
An operating system (OS) is a fundamental software component that manages and facilitates the
interaction between a computer's hardware and software applications. It provides a set of
key functions and components to ensure efficient and secure operation. Main functions/components
of an operating system:
*Process Management:Process Creation and Termination; The OS creates, schedules, and
terminates processes (individual tasks or programs) and manages their resources.
Process Scheduling; It allocates CPU time to different processes, ensuring fairness
and efficiency.
Inter-Process Communication (IPC); The OS facilitates communication between
processes, allowing them to share data or work together.
*Memory Management: Memory Allocation; The OS allocates and deallocates memory space for
processes, ensuring they don't interfere with each other.
Virtual Memory; It provides an abstraction layer that allows programs to use more
memory than physically available by using disk space as an extension of RAM.
Memory Protection; The OS prevents processes from accessing memory locations
of other processes, ensuring data isolation and security.
*File System Management: File Creation, Deletion, and Access; It manages files and directories,
allowing users and applications to create, read, write, and delete files.
File Permissions; The OS enforces access control mechanisms to protect files
and restrict access to authorized users.
Filesystem Integrity; It ensures the consistency and integrity of the file
system, using techniques like journaling or checksums.
*Device Management: Device Drivers; The OS interacts with hardware devices through device
drivers, allowing applications to communicate with hardware components like printers,
disks, and network cards.
I/O Management; It handles input and output operations efficiently, including buffering
and caching data for better performance.
*User Interface: Graphical User Interface (GUI); Many modern operating systems provide a
graphical interface for users to interact with applications and the system.
Command-Line Interface (CLI); They also offer a command-line interface for advanced
users and system administrators.
*Security and Access Control: User Authentication; The OS manages user accounts and
authenticates users to ensure secure access to the system.
Access Control Lists (ACLs); It enforces access control policies to restrict
user and application access to system resources.
Updates; The OS receives and installs security updates to protect against
vulnerabilities and threats.
*Networking: Network Stack; It provides networking capabilities, enabling communication
between devices over a network.
Network Protocols; The OS supports various network protocols (e.g., TCP/IP) for data
transmission.
* Error Handling and Logging: Error Detection; The OS detects and reports hardware and software
errors to prevent system crashes.
Logging; It maintains logs of system events and errors for troubleshooting
and auditing purposes.
* Task Synchronization and Communication: Semaphores and Mutexes; The OS provides
synchronization mechanisms to coordinate access to shared resources.
Message Queues; It allows processes to communicate by sending
and receiving data.
*System Utilities and Tools: System Monitoring; The OS includes tools for monitoring system
performance and resource usage.
System Configuration; It provides utilities for configuring system settings
and preferences.
These functions and components collectively enable an operating system to manage hardware
resources efficiently, provide a stable environment for applications, and ensure the security and
reliability of the computer system. Different operating systems may have variations and additional
features, depending on their intended use cases and design philosophies.
<Different types of operating systems exist, including desktop operating systems like Windows,
macOS, and Linux, as well as server operating systems, mobile operating systems (iOS, Android),
and real-time operating systems used in embedded systems and critical applications. Each type of
OS is tailored to the specific needs of its target environment.>
The historical evolution of operating systems (OS) spans over several decades. It involves the
development of various concepts and technologies that have shaped the way we interact with
computers.
key milestones in the evolution of operating systems:
* 1940s - 1950s: Early Computers and Batch Processing - The first electronic computers, such as
ENIAC and UNIVAC, had no operating systems. Programs were hardwired;
Batch processing systems emerged,where users submitted jobs on punched cards to be processed
sequentially.
* 1950s - 1960s: Single-User, Single-Tasking Systems The introduction of early operating systems
like GM-NAA I/O and Fortran Monitor System (FMS).These systems provided basic resource
management
and job scheduling for single users and single tasks.
* 1960s - 1970s: Multiprogramming and Time-Sharing, IBM's OS/360 introduced
multiprogramming, allowing multiple programs to run concurrently. Time-sharing systems like
CTSS
(Compatible Time-Sharing System) and MULTICS allowed multiple users to interact with the
computer simultaneously.
* 1970s: Rise of Unix and Minicomputers; Unix, developed at Bell Labs, introduced many
fundamental concepts like the file system hierarchy and pipes.PDP-11 minicomputers popularized
Unix.
* 1970s - 1980s: Microcomputers and Personal Computers; availability of microcomputers led to
single-user OS like MS-DOS and Apple DOS; GUI-based operating systems, like Apple
Macintosh's
System Software and Microsoft Windows appeared.
*1980s - 1990s: Client-Server Architecture and Networking; The proliferation of local area
networks (LANs) and client-server computing led to OS like Novell NetWare and Windows NT;
UNIX variants (e.g., Linux) gained popularity in server environments.
*1990s - 2000s: Internet and Mobile Computing;The internet revolution influenced OS
development, with the rise of Linux and the dominance of Windows;Mobile operating systems like
Palm OS,
Windows CE, and eventually iOS and Android emerged.
*2010s - Present: Modern OS and Mobile Dominance;Modern desktop OS like Windows 10/11,
macOS, and various Linux distributions continued to evolve;Mobile OS like iOS and Android
became
dominant, powering smartphones and tablets; Advances in virtualization, containerization (e.g.,
Docker), and cloud-native technologies continued to reshape the landscape.
*Emerging Trends (2020s and Beyond): Edge Computing, AI Integration, and Security;Edge
computing is gaining importance for processing data closer to the source;Integration of
artificial intelligence and machine learning into OS for improved automation and user
experiences;Enhanced security measures in response to evolving cybersecurity threats.
The evolution of operating systems is a dynamic process driven by technological advancements and
changing user needs. It continues to shape the way we interact with and harness
the power of computing devices in our daily lives.
There are several types of OS, each designed to serve specific purposes and targeted to different
computing environments. Here are some of the most common types of operating systems:
Types of operating systems:
* Single-User, Single-Tasking OS: These are basic operating systems found on very simple devices,
such as some embedded systems and early microcomputers. They can only run one application
at a time and are not suitable for multitasking.
* Single-User, Multi-Tasking OS: This type of OS allows a single user to run multiple applications
simultaneously. Most desktop and laptop operating systems, such as Windows, macOS, and Linux
fall into this category.
* Multi-User OS: Multi-user operating systems enable multiple users to access and use the same
computer or server at the same time. Each user has their own account and can run their own
applications independently. Unix and Linux server operating systems, as well as some versions of
Windows Server, are examples of multi-user OS.
* Real-Time OS (RTOS): RTOS is designed for systems that require real-time processing and
deterministic response times, such as embedded systems in robotics, automotive systems,
and medical devices. RTOS ensures that tasks are executed within specific time constraints.
* Network OS: Network operating systems are designed for managing and facilitating network
resources. They are often used in server environments to manage file sharing,
user authentication, and network services. Examples include Windows Server, Linux server
distributions.
* Distributed OS: Distributed operating systems manage a network of computers as if they were a
single machine. They provide transparency to users and applications, making it appear as though
they are interacting with a single system, even if the components are physically distributed.( Cloud
computing services such as Amazon Web, Microsoft Azure, and Google Cloud Platform
are all examples of distributed operating systems)
* Mobile OS: Mobile operating systems are designed for smartphones and tablets. They are
optimized for touch input and mobile hardware, and they often provide app ecosystems for
downloading and installing applications. Examples include iOS (Apple), Android (Google), and
HarmonyOS (Huawei).
* Hypervisor or Virtualization OS: Hypervisors are used to create and manage virtual machines
(VMs) on physical hardware. They allow multiple operating systems to run concurrently
on the same hardware. Examples include VMware vSphere, Microsoft Hyper-V, and KVM.
* Batch Processing OS: Batch processing operating systems are primarily used in mainframes and
supercomputers for processing large volumes of data in a batch mode.
They are efficient at handling repetitive, data-intensive tasks.
* Mainframe OS: Mainframe operating systems are designed to run on large, powerful computers
known as mainframes. They are optimized for handling high volumes of transactions and data
processing.
Example : IBM's z/OS an operating system for IBM zSystems mainframes, suitable for continuous,
high-volume operation with high security and stability.
* Clustered OS: Clustered operating systems are used in clustered computing environments, where
multiple computers work together as a single system to provide high availability and load
balancing.
Examples include Microsoft Windows Cluster Server and Linux-based clustering solutions.
Each type of operating system serves specific needs and is tailored to different computing
environments, from personal devices to servers and specialized systems. The choice of the right OS
depends on the intended use and requirements of the computing system
Both Linux and Windows operating systems can incorporate a wide range of features, and many of
the above can be included in a single Linux or Windows OS installation. The specific features and
capabilities available in a particular installation depend on the distribution or edition of the OS and
the software packages installed.( while possible they are less common Mainframe OS distros)
Operating systems (OS) have various versions and editions over time, each with its own features,
improvements, and sometimes specialized editions for specific use cases. Editions often cater to
different user needs, such as home users, professionals, and enterprise users. Additionally, the
availability and support for specific versions and editions may change over time as new
versions are released and old ones are retired or replaced.
Microsoft Windows:
Windows 2000 (Professional and Server editions)
Windows XP (Home, Professional, and Media Center editions)
Windows Vista (Home Basic, Home Premium, Business, Ultimate)
Windows 7 (Starter, Home Basic, Home Premium, Professional, Ultimate)
Windows 8 and 8.1 (Standard, Pro, Enterprise)
Windows 10 (Home, Pro, Enterprise, Education)
Windows 11 (Home, Pro, Enterprise)
Linux:
Linux Kernel (Various versions, e.g., 2.2, 2.4, 2.6, 3.x, 4.x)
Ubuntu (Multiple versions with LTS - Long Term Support - editions)
CentOS (Various versions, especially CentOS 6 and 7)
Red Hat Enterprise Linux (Various versions)
Debian (Multiple versions including Debian 9 "Stretch" and Debian 10 "Buster")
Chrome OS (Various versions)
macOS:
Mac OS Classic (System 1 through 9)
Mac OS X (10.0 Cheetah through 10.15 Catalina)
macOS 11 Big Sur
macOS 12 Monterey
Server Operating Systems:
Windows Server (Various versions)
Linux Server distributions (Various versions of CentOS, Ubuntu Server, Debian Server, etc.)
iOS (Apple mobile operating system) versions iOS 1 - 15
Android (Google's mobile operating system) versions Android 1.0 - 12
Virtualization: Virtualization is the process of creating a virtual (rather than physical) version of
something, such as a server, storage device, network, or even an operating system.
It involves using software to simulate hardware functionality or create multiple instances of
something on a single physical hardware resource.
Types of Virtualization:
* Server Virtualization: most commonly used case, where one physical server is divided into
multiple virtual servers using a hypervisor (e.g., VMware, Hyper-V, KVM).
Each virtual server operates as an independent entity, allowing better resource utilization and
management.
* Desktop Virtualization: It involves running multiple virtual desktop instances on a single physical
machine, often used in environments where centralized control and management are critical.
* Network Virtualization: This creates virtual networks on top of physical networks, enabling more
flexible and efficient network management.
* Storage Virtualization: It abstracts storage resources from their physical location, making it easier
to manage, allocate, and scale(combine) storage capacity.
Benefits of Virtualization:
*Resource Utilization: Virtualization allows for better utilization of physical hardware resources,
reducing waste and lowering costs.
*Isolation: Virtual machines (VMs) or virtualized resources are isolated from one another,
enhancing security and stability.
*Flexibility: It enables easy scalability and resource allocation, making it more adaptable to
changing business needs.
*Testing env: Virtual environments are ideal for testing new software or configurations without
affecting production systems.
*Disaster Recovery: VM snapshots and backups simplify disaster recovery processes.
Virtual Machines - VM is a software emulation of a physical computer. It allows you to run multiple
operating systems (OS) and applications on a single physical server or computer, creating a
virtualized environment. This tech provides improved resource utilization, isolation of workloads,
and greater flexibility in managing and deploying software.
VMs think that they are physical machines.
Usefulness of VMs:
*Resource Utilization: Virtualization allows you to make better use of your hardware resources by
running multiple VMs on a single physical server.
This can lead to significant cost savings as you can consolidate workloads.
*Isolation: VMs are isolated from each other, meaning that if one VM crashes or experiences issues,
it doesn't affect the others. This provides a high level of security and stability.
*Compatibility: You can run different operating systems, software versions, and configurations on
separate VMs, making it easier to manage compatibility issues.
*Snapshot and Cloning: VMs can be easily cloned or snapshots can be taken, allowing for quick
backups, testing, and recovery.
hypervisor is a program or software component that allows for virtualization and the management
of multiple virtual machines (VMs) on a single physical host machine.
It is essentially a specialized software layer that abstracts and controls the underlying physical
hardware, enabling multiple operating systems and applications to run independently
and concurrently on the same hardware.
Types of hypervisors:
*Type 1 Hypervisor (Bare-Metal): Type 1 hypervisors run directly on the physical hardware without
the need for an underlying operating system. They provide better performance and security.
ex:VMware vSphere/ESXi, Microsoft Hyper-V, Xen, and KVM.
While Type 1 Hypervasor posess kernel and some OS features, they are specialized for
virtualization and are not intended to have whole suite of features and services we have in standard
OS.
*Type 2 Hypervisor (Hosted): Type 2 hypervisors run on top of a host operating system. Users
install them as regular applications. While they are easier to set up for testing and
development purposes, they introduce some performance overhead. Examples include VMware
Workstation, Oracle VirtualBox, and Parallels Desktop.
Hypervisor Components:
*Virtual Machine Monitor (VMM): The VMM is the core component of the hypervisor responsible
for managing and monitoring the virtualized environment.
It controls the allocation of physical resources to VMs.
*Management Interface: Hypervisors typically provide a management interface, often web-based or
through specialized management software, for administrators to configure and monitor VMs.
*Configuration Files: Hypervisors use configuration files to define the characteristics of each VM,
including the number of CPUs, memory, virtual disks, and network settings.
*Integration Tools: Some hypervisors offer integration tools or drivers that enhance the
performance and compatibility of VMs with the host system.
Containers: Containers are a form of virtualization technology that allows you to package and
isolate applications and their dependencies, including libraries and configuration files,
into a single, lightweight, and portable unit called a container.
Dockers: Docker refers to several related technologies and tools, primarily Docker Engine, Docker
Compose, and Docker Hub, that together provide a platform for developing, packaging,
distributing, and running containerized applications. Containerization technology, like Docker, has
revolutionized the way software is developed and deployed by enabling applications
and their dependencies to be packaged into lightweight, portable containers.
Cloud computing is a technology model that provides on-demand access to a shared pool of
computing resources (including servers, storage, networking, applications, and services) over the
internet.
These resources are hosted and managed by cloud service providers in data centers around the
world. Heavily relies on the technelogy of virtualization.
virtualization enables the creation of virtual resources, while cloud computing leverages these
virtualized resources to provide scalable and accessible IT services over the internet.
Together, they have revolutionized the way businesses manage their IT infrastructure and deliver
services