Of Operating System Practical
Of Operating System Practical
An Operating System (OS) is software that acts as an interface between computer hardware
components and the user. Every computer must have at least one operating system to run other
programs. Applications such as Browsers, MS Office, Notepad Games, and others need an
environment to run and perform their tasks. Examples of operating systems include Windows, macOS,
Linux, and Android
1. Bare Metal Installation: This means installing the OS directly on physical hardware. It requires a
bootable USB/DVD or PXE (network installation). It is common for personal computers, servers, and
workstations. Example: Installing Windows, Linux, or macOS on a laptop/desktop.
2. Virtual Machine (VM) Installation: In this, the OS is installed inside a virtualized environment
using software like VMware, VirtualBox, or Hyper-V.
3. Dual Boot Installation: In this Two or more OSes are installed on a single system. The user selects
the OS at startup (a bootloader like GRUB manages selection).
4. Live OS (Persistent or Non-Persistent): In this OS runs from a USB/DVD without installation on
the hard drive. It is mainly used for testing or recovery purposes.
5. Embedded OS Installation: Used in IoT devices, routers, or specialized hardware. The OS is flashed
onto a chip or a memory card. Example: Installing Raspberry Pi OS on a microSD card.
Windows
Windows is an operating system (OS) developed by Microsoft. It provides a graphical user interface (GUI),
making it easy for users to interact with their computers using a mouse, keyboard, and touchscreen. Windows
is one of the most widely used OSes in the world, especially for personal computers (PCs), laptops, and
servers.
● Prerequisites:
○ Windows Installation Media: A USB flash drive (at least 8GB) or DVD with a Windows
ISO.
○ Product Key: A valid Windows product key (unless you plan to enter it later or use digital
licensing).
● Steps:
1. Create/Obtain Installation Media
a. Download the official Windows ISO from Microsoft’s website or use the Media Creation Tool
(for Windows 10/11) remember to know your system configurations.
b. If using a USB then run the Media Creation Tool and follow the prompts to create bootable
media, or use third-party software like Rufus to create a bootable USB from the ISO.
c. Insert a USB drive with at least 8GB of storage into your computer and open Rufus.
d. Select "USB flash drive" select the ISO file for Windows.
e. Choose the USB drive you inserted earlier and click "Next." The tool will now download the
Windows files and create a bootable USB drive. This process may take some time, depending
on your internet speed and the performance of your computer.
4. Initial
a. Select your language, time and currency format, and keyboard/input method.
b. Click Install Now.
a. You can either enter your valid product key now or skip and enter it after installation
(depending on your version of Windows and licensing).
👍
g. Wait for final setup steps.
h. “Installation Done ”
LINUX
Linux is a free, open-source operating system (OS) based on Unix. It was originally created by Linus
Torvalds in 1991 and has since become one of the most widely used operating systems in the world. Unlike
Windows or macOS, Linux is open-source, meaning anyone can modify, distribute, and use it freely.
Linux can be installed in many ways but some popular ways that our industry uses are:
● Single Boot
● Dual Boot
● Virtual Box
● Prerequisites
○ Linux ISO: Obtain a distribution of your choice (e.g., Ubuntu, Fedora, Linux Mint, etc.).
○ Bootable USB/DVD: Use a tool like Rufus (Windows) or Etcher (macOS, Linux) to create a
bootable USB from the ISO.
● Steps
1. Create Bootable Media:
a. Download the ISO of your chosen Linux distribution.
b. It depends on you which type/version of Linux you want like Ubuntu, Debian, Kali,
Arc, Mint etc.
c. Use Rufus or another tool to create a bootable USB drive.
b. Something else (manual partitioning): If you want custom partitions (e.g., separate
/home partition), choose this option and set up partitions manually (/, swap, /home,
etc.).
8. User Account Setup:
a. Enter your username, password, and computer name.
10.Restart:
a. When prompted, restart the computer. Remove the USB drive when prompted.
b. And Ubuntu.
11.Post-Installation:
a. Log in with the username/password you created.
b. Update the system (e.g., sudo apt update && sudo apt upgrade in Ubuntu/Debian-based
distros).
MACOS
macOS is an operating system (OS) developed by Apple for its Mac computers. It provides a smooth,
user-friendly experience with a sleek design and powerful performance. macOS is known for its stability,
security, and deep integration with Apple’s ecosystem (iPhones, iPads, Apple Watch, etc.).
macOS is licensed only for Apple hardware. If you have a Mac and want to do a fresh installation or
reinstall macOS, follow these steps. So we cant install macOs on any machine but if you want to
experience macOs on normal PC you can install Linux and customize and for more details you can
install Hackintosh (for non-Apple Hardware)
● Prerequisites
○ Apple machine
❖What is Virtualization?
➢ Virtual Machine abstracts the hardware of our personal computer such as CPU, disk drives,
memory, NIC (Network Interface Card), etc, into many different execution environments as per
our requirements.. For example, VirtualBox.
➢ When we run different processes on an operating system, it creates an illusion that each process
is running on a different processor having its own virtual memory, with the help of CPU
scheduling and virtual-memory techniques.
➢ There are additional features of a process that cannot be provided by the hardware alone like
system calls and a file system. The virtual machine approach does not provide these additional
functionalities but it only provides an interface that is the same as basic hardware.
❖Virtual Machine
Virtualization is the method of creating a software-based, or “virtual” version of a computer with good
amounts of CPU, memory, and storage that are “borrowed” from a physical host computer (such as
your personal computer) and/or a remote server. The working of the virtual machine is very simple just
check the published article on the Working of a Virtual Machine.
e. SDD
i. Select “Create a virtual solid state drivenow” if you don’t already have a virtual
disk.
ii. Click “Create.”
40 GB, etc.).
1. Process Management: Scheduling and managing processes, ensuring smooth execution.
2. Memory Management: Allocating and deallocating memory as needed by different programs.
3. File System Management: Organizing and managing data storage and access to files.
4. Security and Access Control: Protecting the system and its data from unauthorized access.
5. User Interface: Providing an interface (command-line or graphical) for users to interact with the
system.
6. Device Management: Managing input/output devices such as printers, keyboards, and mice.
The OS is essential for the operation of any computing system, whether it’s a personal computer, a server, or
an embedded system.
Single-User Systems
A Single-User System is a type of computer system designed to be used by one user at a time. It is a
standalone system where the user has exclusive access to the system’s resources such as CPU, memory, and
storage. These systems are typically used in personal computing environments and are simple to use.
Characteristics:
● Single User Access: Only one user can interact with the system at a time.
● Personal Use: These systems are mainly designed for personal tasks like word processing, browsing
the web, playing games, and other individual uses.
● Simple Configuration: They are easy to set up and use, with minimal technical expertise required.
● Local Resources: The system uses local resources, and there is no resource sharing with other
systems.
Components:
2. Operating System: Includes systems like Windows, macOS, and Linux (in some cases), optimized
for single-user use.
3. User Interface: Typically has a Graphical User Interface (GUI) for ease of interaction. Common
examples include Windows and macOS.
4. Task Management: Allows the user to run multiple applications in sequence or concurrently, though
only one user has access at any given time.
How it Works:
● The system allocates all the resources (like CPU time and memory) to the single user.
● Users can run multiple applications concurrently through multitasking, but it’s not a multi-user
environment.
● The file system allows the user to store and manage files locally without concerns of other users’
interference.
Examples:
● Personal Computers (PCs) and Laptops used by individuals for home or office work.
A Network Operating System (NOS) is a specialized operating system designed to manage and coordinate
multiple computers in a network. It enables resource sharing, communication, and centralized management
within the network. A NOS helps connect computers and devices, allowing them to work together efficiently
over local area networks (LAN) or even wide area networks (WAN).
Characteristics:
● Resource Sharing: A NOS allows multiple computers to share resources such as printers, databases,
and files over a network.
● Centralized Management: The NOS typically runs on a central server, and it manages network
resources, user access, and permissions.
● Security and Authentication: The NOS provides features like user authentication, file permissions,
and encryption to ensure secure access to resources.
● Remote Access: Users can access shared resources remotely, often through virtual private networks
(VPNs) or other secure communication methods.
● Communication Services: The NOS offers tools for communication, such as email servers,
messaging services, and networked applications.
Components:
1. Server: The central system where resources are stored and managed.
2. Client: Other computers or devices that connect to the server to access shared resources.
3. Protocols: Network protocols such as TCP/IP, FTP, and SMB are used to manage communication
between systems.
4. Security Features: Includes tools for user authentication, authorization, and encryption.
How it Works:
● The server hosts resources like files and printers, while clients access these resources remotely.
● The NOS manages access control, ensuring that users only have access to the resources they are
authorized to use.
● File systems are shared over the network, allowing multiple users to interact with the same files
simultaneously.
Examples:
● Microsoft Windows Server: Widely used for network management and resource sharing.
● Unix servers: Used in large enterprises, offering high stability and performance.
A Multiuser System is an operating system designed to allow multiple users to access and use the system
resources simultaneously. These systems are built for environments where many users need to interact with a
central system, sharing its resources like CPU, memory, and storage. Multiuser systems are typically used in
large-scale enterprises, universities, and data centers.
Characteristics:
● Simultaneous User Access: Multiple users can log in and interact with the system at the same time,
each with their own session.
● Resource Sharing: The system allocates shared resources (CPU, memory, disk space) efficiently
among all users.
● Process Scheduling: The OS uses sophisticated scheduling algorithms to ensure fair access to system
resources. It switches between users' tasks so fast that it appears as though they are being executed
concurrently.
● Isolation and Security: Each user’s data and processes are isolated from others, preventing
unauthorized access.
● Centralized Administration: Administrators manage system resources, security, and user access from
a central location.
Components:
1. Multiple User Accounts: Each user has an individual account and home directory, with specific
permissions assigned to files and resources.
2. Operating System: The OS supports multi-user functionality, such as UNIX, Linux, or Windows
Server (with remote desktop services).
3. Scheduling Algorithms: The OS uses scheduling techniques like Round Robin, First Come, First
Served, or Priority Scheduling to allocate CPU time fairly to all users.
4. File System Management: The OS manages shared files, ensuring that multiple users can access them
without interfering with each other.
How it Works:
● The system’s resources (like CPU and memory) are divided into time slots for each user. The OS uses
time-sharing techniques to give users access to the system’s resources in rapid succession.
● Each user has their own user session, where they can run programs and store files without affecting
other users’ sessions.
● Security and access control ensure that users can only access their files or those explicitly shared
with them.
Examples:
● UNIX/Linux Systems: Used in universities, research labs, and businesses where many users need
access to a powerful central system.
● Mainframe Systems: Used by large enterprises for processing vast amounts of data and serving
multiple users simultaneously.
● Windows Server (with Remote Desktop Services): Allows multiple users to access separate virtual
desktops on the same server.
Experiment - 3
Aim- Write a program for the simulation of following CPU scheduling
algorithms to find turnaround time and waiting time.
a) FCFS b) SJF c) Round Robin d) Priority
a) FCFS
#include <iostream>
#include <vector>
using namespace std;
int noP, avgTAT = 0, avgWT = 0;
vector<int> Processes;
vector<int> BT;
vector<int> AT;
vector<int> WT;
vector<int> TAT;
void findWT()
{
WT[0] = 0;
for (int i = 1; i < noP; i++)
{
WT[i] = BT[i - 1] + WT[i - 1];
}
}
void findTAT()
{
for (int i = 0; i < noP; i++)
{
TAT[i] = BT[i] + WT[i];
}
}
void avgTime()
{
findWT();
findTAT();
cout << "Process\tBurst Time\tWaiting Time\tTurnaround Time\n";
for (int i = 0; i < noP; i++)
{
avgTAT = TAT[i] + avgTAT;
avgWT = WT[i] + avgWT;
cout << " " << i + 1 << "\t\t" << BT[i] << "\t "
<< WT[i] << "\t\t " << TAT[i] << endl;
}
cout << "Average waiting time = "
<< (float)avgWT / (float)noP;
cout << "\nAverage turn around time = "
<< (float)avgTAT / (float)noP;
}
int main()
{
cout << "Enter the no of processes -> ";
cout << "Enter the Burst Time of " << i + 1 << " Process -> ";
cin >> BT[i];
cout << "Enter the Arrival Time of " << i + 1 << " Process -> ";
cin >> AT[i];
}
avgTime();
}
Output->
b)SJF
#include <iostream>
#include <vector>
using namespace std;
int noP, avgTAT = 0, avgWT = 0;
vector<int> Processes;
vector<int> BT;
vector<int> AT;
vector<int> WT;
vector<int> TAT;
void findWT()
{
WT[0] = 0;
for (int i = 1; i < noP; i++)
{
WT[i] = BT[i - 1] + WT[i - 1];
}
}
void findTAT()
{
for (int i = 0; i < noP; i++)
{
TAT[i] = BT[i] + WT[i];
}
}
void avgTime()
{
findWT();
findTAT();
cout << "Process\tBurst Time\tWaiting Time\tTurnaround Time\n";
for (int i = 0; i < noP; i++)
{
avgTAT = TAT[i] + avgTAT;
avgWT = WT[i] + avgWT;
cout << " " << i + 1 << "\t\t" << BT[i] << "\t "
<< WT[i] << "\t\t " << TAT[i] << endl;
}
cout << "Average waiting time = "
<< (float)avgWT / (float)noP;
cout << "\nAverage turn around time = "
<< (float)avgTAT / (float)noP;
}
void sortAccordingToTheBurstTime()
{
int main()
{
cout << "Enter the no of processes -> ";
cin >> noP;
Processes.resize(noP);
BT.resize(noP);
WT.resize(noP);
TAT.resize(noP);
AT.resize(noP);
cout << "Enter the Burst Time of " << i + 1 << " Process -> ";
cin >> BT[i];
cout << "Enter the Arrival Time of " << i + 1 << " Process -> ";
cin >> AT[i];
}
sortAccordingToTheBurstTime();
}
Output->
c) Round Robin
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
struct Process
{
int id;
int burst_time; // Burst time (execution time)
int remaining_time; // Remaining burst time for the process
int arrival_time; // Arrival time
int completion_time; // Completion time
int waiting_time; // Waiting time
int turnaround_time; // Turnaround time
};
total_wt += processes[i].waiting_time;
total_tat += processes[i].turnaround_time;
}
while (!readyQueue.empty())
{
int idx = readyQueue.front();
readyQueue.pop();
inQueue[idx] = false; // Remove from the queue
// Push back the process into the queue if it's not already there
if (!inQueue[idx])
{
readyQueue.push(idx);
inQueue[idx] = true;
}
}
cout << "\nRound Robin Scheduling (Quantum = " << quantum << "):\n";
calculateTurnaroundAndWaitingTime(processes);
int main()
{
int n;
cout << "Enter the number of processes: ";
cin >> n;
vector<Process> processes(n);
cout << "\nEnter Process details (ID, Arrival Time, Burst Time):\n";
for (int i = 0; i < n; i++)
{
processes[i].id = i + 1;
cout << "\nProcess " << i + 1 << ":\n";
cout << "Arrival Time: ";
cin >> processes[i].arrival_time;
cout << "Burst Time: ";
cin >> processes[i].burst_time;
}
int quantum;
cout << "\nEnter quantum for Round Robin Scheduling: ";
cin >> quantum;
roundRobin(processes, quantum);
return 0;
}
Output->
d) Priority
#include <iostream>
#include <vector>
#include <algorithm>
struct Process
{
int id;
int burst_time; // Burst time (execution time)
int remaining_time; // Remaining burst time for the process
int arrival_time; // Arrival time
int completion_time; // Completion time
int waiting_time; // Waiting time
int turnaround_time; // Turnaround time
int priority; // Priority of the process
};
total_wt += processes[i].waiting_time;
total_tat += processes[i].turnaround_time;
}
// Sort the processes by arrival time and then by priority (lower value of priority
means higher priority)
sort(processes.begin(), processes.end(), [](Process &a, Process &b)
{
if (a.arrival_time == b.arrival_time)
return a.priority < b.priority;
return a.arrival_time < b.arrival_time; });
if (idx == -1)
{
currentTime++;
continue; // No process is ready to execute, increment time
}
// Remove the process from the ready queue (no longer needed in the original
vector)
processes.erase(processes.begin() + idx);
}
int main()
{
int n;
cout << "Enter the number of processes: ";
cin >> n;
vector<Process> processes(n);
cout << "\nEnter Process details (ID, Arrival Time, Burst Time, Priority):\n";
for (int i = 0; i < n; i++)
{
processes[i].id = i + 1;
cout << "\nProcess " << i + 1 << ":\n";
cout << "Arrival Time: ";
cin >> processes[i].arrival_time;
cout << "Burst Time: ";
cin >> processes[i].burst_time;
cout << "Priority: ";
cin >> processes[i].priority;
processes[i].remaining_time = processes[i].burst_time;
}
priorityScheduling(processes);
return 0;
}
Output->
Experiment - 5
Aim- Write a program for the simulation of producer-consumer problem
using semaphores.
#include <iostream>
#include <pthread.h>
#include <semaphore.h>
#include <vector>
#include <unistd.h>
#include <ctime>
#define BUFFER_SIZE 5
#define MAX_ITEMS 20
sem_t emptySlots;
sem_t fullSlots;
sem_t mutex;
int produced_count = 0;
int consumed_count = 0;
int random_delay()
{
return rand() % 3 + 1;
}
void print_buffer()
{
cout << "Buffer: [";
for (int i = 0; i < BUFFER_SIZE; i++)
{
cout << buffer[i] << " ";
}
cout << "]" << endl;
}
sem_wait(&emptySlots);
sem_wait(&mutex);
sem_post(&mutex);
sem_post(&fullSlots);
print_buffer();
}
return nullptr;
}
sem_post(&mutex);
sem_post(&emptySlots);
print_buffer();
sleep(random_delay());
}
return nullptr;
}
int main()
{
srand(time(0));
sem_init(&emptySlots, 0, BUFFER_SIZE);
sem_init(&fullSlots, 0, 0);
sem_init(&mutex, 0, 1);
pthread_join(producer_thread, nullptr);
pthread_join(consumer_thread, nullptr);
sem_destroy(&emptySlots);
sem_destroy(&fullSlots);
sem_destroy(&mutex);
return 0;
}
Output->
Experiment - 6
Aim- Write a program for the simulation of producer-consumer problem
using semaphores.
#include <iostream>
#include <vector>
#include <iomanip>
class BankersAlgorithm
{
private:
int numProcesses; // Number of processes
int numResources; // Number of resource types
vector<vector<int>> maxMatrix; // Maximum demand matrix
vector<vector<int>> allocationMatrix; // Allocation matrix
vector<vector<int>> needMatrix; // Need matrix
vector<int> available; // Available resources
public:
BankersAlgorithm(int processes, int resources)
{
numProcesses = processes;
numResources = resources;
void inputData()
{
cout << "Enter the available resources (space-separated): ";
for (int i = 0; i < numResources; i++)
{
cin >> available[i];
}
calculateNeed();
}
void calculateNeed()
{
for (int i = 0; i < numProcesses; i++)
{
for (int j = 0; j < numResources; j++)
{
needMatrix[i][j] = maxMatrix[i][j] - allocationMatrix[i][j];
}
}
}
bool isSafe()
{
vector<bool> finish(numProcesses, false); // Track which processes are finished
vector<int> work = available; // Work vector for checking safety
int count = 0;
while (count < numProcesses)
{
bool found = false;
for (int i = 0; i < numProcesses; i++)
{
if (!finish[i])
{
bool canFinish = true;
for (int j = 0; j < numResources; j++)
{
if (needMatrix[i][j] > work[j])
{
canFinish = false;
break;
}
}
if (canFinish)
{
for (int j = 0; j < numResources; j++)
{
work[j] += allocationMatrix[i][j];
}
finish[i] = true;
found = true;
count++;
}
}
}
if (!found)
{
return false; // No safe sequence found
}
}
return true; // Safe sequence exists
}
void displayMatrices()
{
// Header for display
cout << setw(12) << "Allocation" << setw(8) << "Max" << setw(8) << "Need" <<
setw(8) << "Available" << endl;
cout << setw(4) << " " << setw(4) << "A B C D " << setw(4) << "A B C D " <<
setw(4) << "A B C D " << setw(4) << "A B C D " << endl;
int main()
{
int numProcesses, numResources;
bankers.displayMatrices();
if (bankers.isSafe())
{
cout << "\nThe system is in a safe state." << endl;
}
else
{
cout << "\nThe system is in an unsafe state." << endl;
}
return 0;
}
Output->
Experiment - 7
Aim- Write a program for the simulation of following contiguous memory
allocation techniques
a) Worst-fit b) Best-fit c) First-fit
a) Worst-fit
#include <iostream>
#include <vector>
int main()
{
int m, n;
cout << "Enter number of memory blocks: ";
cin >> m;
cout << "Enter number of processes: ";
cin >> n;
// First-fit allocation
firstFit(memory, processes);
return 0;
}
Output->
b) Best-fit
#include <iostream>
#include <vector>
#include <climits>
return 0;
}
Output->
c) Worst-fit
#include <iostream>
#include <vector>
#include <climits>
int main()
{
int m, n;
cout << "Enter number of memory blocks: ";
cin >> m;
cout << "Enter number of processes: ";
cin >> n;
Output->
Experiment - 8
Aim- Write a program for the simulation of following page replacement
algorithms
a) FIFO b) LRU c) Optimal
a) FIFO
#include <iostream>
#include <vector>
#include <unordered_set>
return page_faults;
}
int main()
{
vector<int> page_references = {1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 9, 7, 8, 9, 5, 4,
2};
int num_frames = 4;
return 0;
}
Output->
b) LRU
#include <iostream>
#include <vector>
#include <unordered_set>
#include <algorithm>
return page_faults;
}
int main()
{
vector<int> page_references = {1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 9, 7, 8, 9, 5, 4,
2};
int num_frames = 4;
return 0;
}
Output->
c) Optimal
#include <iostream>
#include <vector>
#include <algorithm>
frames[index_to_replace] = page;
}
page_faults++;
}
return page_faults;
}
int main()
{
vector<int> page_references = {1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 9, 7, 8, 9, 5, 4,
2};
int num_frames = 4;
Experiment - 9
Aim- Write a program for the simulation of following disk scheduling
algorithms
a) FCFS b) SCAN c) C-SCAN
a) FCFS
#include <iostream>
#include <vector>
#include <cmath>
return total_seek_count;
}
int main()
{
vector<int> requests = {176, 79, 34, 60, 92, 11, 41, 114};
int initial_head_position = 50;
return 0;
}
Output->
b) SCAN
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
return total_seek_count;
}
int main()
{
vector<int> requests = {176, 79, 34, 60, 92, 11, 41, 114};
int initial_head_position = 50;
int disk_size = 200;
return 0;
}
Output->
c) C-SCAN
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
// Then move to the lowest track and serve the left part of the requests
total_seek_count += abs(current_position - (disk_size - 1));
current_position = disk_size - 1; // Move to the farthest position
cout << "Current Head: " << current_position
<< " -> Next Request: " << disk_size - 1
<< " | Seek Distance: " << abs(current_position - (disk_size - 1))
<< " | Total Seek Count: " << total_seek_count << endl;
return total_seek_count;
}
int main()
{
vector<int> requests = {176, 79, 34, 60, 92, 11, 41, 114};
int initial_head_position = 50;
int disk_size = 200;
return 0;
}
Output->
Experiment - 10
Aim- Write a program for the simulation of following file allocation strategies
a) Sequential b) Indexed c) Linked
a) Sequential
#include <iostream>
#include <vector>
int main()
{
vector<int> file_blocks = {2, 3, 4, 5}; // Contiguous blocks for the file
int block_size = 4; // Number of blocks to store the file
sequential_allocation(file_blocks, block_size);
return 0;
}
Output->
b) Indexed Allocation
#include <iostream>
#include <vector>
cout << "Total number of blocks: " << file_size << endl;
cout << "The file is scattered across the following blocks: ";
for (int i = 0; i < file_size; i++)
{
cout << file_blocks[i] << " ";
}
cout << endl;
}
int main()
{
vector<int> file_blocks = {2, 5, 8, 10};
vector<int> index_table;
indexed_allocation(file_blocks, index_table);
return 0;
}
Output->
c) Linked Allocation
#include <iostream>
#include <vector>
return 0;
}
Output->
Experiment - 11
Aim- To study the features of Windows and Linux operating system.
An Operating System (OS) is software that manages hardware and software resources on a computer or
device. It provides a user interface and manages tasks such as memory, processes, file systems, input/output
(I/O) devices, and security. The OS ensures that software applications can function by providing a stable and
consistent environment for users and hardware components.
Windows is a family of proprietary operating systems developed by Microsoft. It is one of the most widely
used operating systems in personal computers, workstations, and servers. Known for its graphical user
interface (GUI), ease of use, and compatibility with a vast array of hardware and software, Windows has
become the default OS in many professional and personal environments.
Features of Windows OS
○ Windows provides a user-friendly graphical interface with windows, icons, buttons, and
menus. This makes it easy for users to interact with the system and navigate files, programs,
and settings.
2. Multitasking:
○ Windows has an integrated file management system through File Explorer, allowing users to
manage, organize, and access files in a tree structure.
○ Windows offers various built-in security features like Windows Defender, firewall protection,
User Account Control (UAC), BitLocker encryption, and secure boot processes to protect
against malware and unauthorized access.
○ Windows supports a range of networking protocols such as TCP/IP and can easily connect to
local area networks (LANs), wide area networks (WANs), and the internet. It also supports file
sharing, remote desktop, and online services.
○ Windows provides built-in backup and recovery tools, such as the "System Restore" function,
which allows users to revert their system to a previous state in case of failure or issues.
○ Windows supports virtualization technologies like Hyper-V, allowing users to create virtual
machines to run multiple OS instances on a single physical machine.
○ Windows automatically detects and configures new hardware without the need for manual
installation of drivers. It ensures seamless integration of peripheral devices.
Components of Windows OS
1. Kernel:
○ The kernel is the core of the Windows OS. It manages system resources such as memory,
processes, and hardware communication. The kernel communicates directly with the hardware.
○ The user interface includes the graphical desktop, taskbar, start menu, and windows that allow
users to interact with the system.
○ Windows uses the NTFS (New Technology File System) as its primary file system, providing
features like file compression, encryption, and permissions.
4. Device Drivers:
○ Device drivers are small programs that allow the operating system to interact with hardware
peripherals such as printers, displays, and sound cards.
5. Services:
○ Background processes or services that run without direct user interaction. These services
handle system functions like printing, networking, and security.
○ The Control Panel and Settings app allow users to modify system configurations, install
programs, manage hardware, and configure the network.