Ospnd
Ospnd
STUDENT NAME:
STUDENT ID:
MOBILE NUMBER:
Summative Feedback:
Internal verification:
Table of Contents
I. Introduction........................................................................................................................5
A. Memory management................................................................................................56
1. Main memory.........................................................................................................56
B. Process Schedulers....................................................................................................60
3. Medium term..........................................................................................................61
B. Commands in Linux..................................................................................................75
V. Core features modern operating systems will require to meet future needs....................82
A. Object-Oriented Design.............................................................................................82
B. Multi-threading..........................................................................................................83
C. Symmetric Multiprocessing.......................................................................................84
E. Microkernel Architecture..........................................................................................87
VII. REFERENCE................................................................................................................94
I. Introduction
a. Security
- The security functions of an operating system are crucial in protecting the system
and user data from unauthorized access, malware, and other threats. Here are
some key security functions provided by operating systems:
o User authentication: The operating system ensures that only authorized
users can access the system. It implements user authentication mechanisms
such as passwords, biometrics, or smart cards to verify the identity of users
before granting access to resources.
o Access control: The OS enforces access control policies to regulate the
actions and privileges of users or processes. It determines who can access
specific resources, sets permissions on files and directories, and manages
user roles and groups. Access control mechanisms prevent unauthorized
access and limit the impact of security breaches.
o Encryption: Operating systems offer encryption capabilities to protect
sensitive data from unauthorized access or interception. They provide
encryption algorithms and secure storage mechanisms to safeguard data at
rest and during transmission. Encryption helps ensure data privacy and
confidentiality.
o Firewall and network security: Many operating systems include built-in
firewall functionality or support third-party firewall software. Firewalls
monitor and control network traffic, filtering out potentially malicious
connections and protecting against unauthorized access. The OS also
incorporates network security protocols and services to secure network
communications.
o Malware protection: Operating systems include features to detect, prevent,
and remove malware (malicious software) such as viruses, worms, and
trojans. They offer built-in or third-party antivirus and anti-malware
software, real-time scanning, and periodic system scans to identify and
neutralize threats.
o Security patches and updates: Operating system vendors release security
patches and updates to address known vulnerabilities and protect against
emerging threats. These updates address software vulnerabilities, improve
security features, and fix bugs. Regularly applying these patches helps
maintain a secure and resilient system.
o Auditing and logging: The OS provides auditing and logging mechanisms
to monitor system activities, track security events, and generate logs for
analysis. Auditing helps detect unauthorized access attempts, suspicious
activities, and policy violations. Logs can be used for forensic analysis and
compliance auditing.
o Secure boot and firmware integrity: Operating systems support secure boot
processes to ensure the integrity of the boot sequence and prevent the
execution of unauthorized or malicious code. They verify the digital
signatures of boot components and firmware to ensure that only trusted
software is loaded during system startup.
o Sandboxing and virtualization: Some operating systems offer sandboxing
and virtualization features to isolate processes and applications from one
another. Sandboxing provides a controlled environment for running
untrusted or potentially malicious programs, limiting their access to system
resources. Virtualization allows multiple operating systems or virtual
machines to run on a single physical system, enhancing security through
isolation.
o Incident response and recovery: Operating systems facilitate incident
response by providing tools and utilities to investigate security incidents,
analyze system logs, and mitigate the impact of security breaches. They
support backup and recovery mechanisms to restore the system to a known
good state after a security incident.
- These security functions, along with user awareness and responsible computing
practices, contribute to a robust and secure operating system environment. It's
important to regularly update the operating system, use strong passwords, exercise
caution when installing software, and follow security best practices to ensure a
secure computing experience.
c. Job accounting
- Job accounting is a function of an operating system that involves tracking and
recording information about the resource usage and performance of various
processes or jobs running on the system. The primary purpose of job accounting is
to collect data for billing, system monitoring, performance evaluation, and
resource allocation purposes. Here are some key functions related to job
accounting:
o Resource usage tracking: The operating system collects data on the
resources utilized by individual processes or jobs. This includes
information such as CPU usage, memory consumption, disk I/O activity,
network utilization, and other relevant metrics. The OS tracks these
resource usage statistics over time to provide a comprehensive view of job
performance.
o Job identification and classification: The operating system assigns unique
identifiers or job numbers to different processes or jobs. This identification
helps in tracking and associating resource usage data with specific jobs.
The OS may also categorize jobs based on user accounts, job types, or
other criteria, enabling efficient organization and analysis of job
accounting data.
o Data collection and storage: The operating system captures and stores job
accounting data in a structured format. This data includes timestamps, job
identifiers, resource usage statistics, and other relevant attributes. The OS
may maintain logs or databases to store this information, allowing for later
analysis and reporting.
o Reporting and analysis: The operating system provides tools or utilities to
generate reports and analyze job accounting data. These reports may
include summaries of resource usage, job durations, peak usage periods,
and other performance-related metrics. System administrators or users can
utilize these reports to evaluate system efficiency, identify resource-
intensive jobs, and optimize resource allocation.
o Billing and accounting: Job accounting data is often used for billing
purposes in environments where resource usage is associated with costs.
The operating system may provide mechanisms for generating invoices or
usage reports based on the recorded job accounting data. This enables
organizations to allocate costs accurately and bill customers or
departments accordingly.
o Performance evaluation and optimization: Job accounting data allows
system administrators to assess the performance of individual jobs or
processes. By analyzing resource usage patterns and identifying
bottlenecks or inefficient resource utilization, administrators can make
informed decisions to optimize system performance. They can allocate
resources more effectively, tune system parameters, or identify areas
where system upgrades or modifications are required.
o Quota management: The operating system may include quota management
features to enforce resource limits for individual users or groups. Job
accounting data assists in monitoring and enforcing these quotas. The OS
tracks resource usage against defined quotas and generates alerts or takes
action when limits are exceeded, ensuring fair resource allocation and
preventing resource monopolization.
- Job accounting functions may vary depending on the specific operating system
and its configuration. Some operating systems provide built-in job accounting
features, while others rely on third-party tools or extensions for this functionality.
Job accounting is particularly important in multi-user or shared computing
environments where resource usage needs to be monitored, controlled, and billed
accurately.
g. Processor Management
- Processor management is a critical function of an operating system that involves
efficiently scheduling and utilizing the system's processors or CPU (Central
Processing Unit). The operating system manages the execution of processes and
threads, allocates CPU time, and ensures fair and effective utilization of
processing resources. Here are the key functions related to processor management
in an operating system:
o Process scheduling: The operating system implements process scheduling
algorithms to determine which processes should be assigned CPU time and
in what order. Scheduling policies can be based on factors such as priority,
fairness, response time, throughput, or resource requirements. The OS
ensures that processes are scheduled and dispatched in a manner that
optimizes CPU utilization and meets desired performance objectives.
o Thread management: Operating systems that support multithreading
manage the execution of threads within processes. Thread management
includes creating, scheduling, and synchronizing threads. The OS
coordinates the execution of multiple threads, ensuring efficient utilization
of CPU resources and providing concurrency and parallelism in program
execution.
o Context switching: The operating system performs context switching,
which involves saving and restoring the execution context of processes or
threads when they are interrupted or when a scheduling decision is made.
Context switching allows the operating system to switch between different
processes or threads, enabling multitasking and time-sharing of CPU
resources.
o CPU allocation and utilization: The operating system manages the
allocation of CPU resources to different processes or threads based on
their priority, resource requirements, and scheduling policies. It ensures
that each process or thread receives a fair share of CPU time while
maximizing CPU utilization and system throughput.
o CPU scheduling policies: The operating system implements various CPU
scheduling policies or algorithms, such as First-Come-First-Served
(FCFS), Round Robin, Shortest Job Next (SJN), Priority Scheduling, or
Multilevel Queue Scheduling. These policies determine how CPU time is
allocated to processes or threads, aiming to optimize system performance,
response time, throughput, fairness, or other objectives.
o Process synchronization and coordination: The operating system provides
mechanisms for interprocess communication (IPC), synchronization, and
coordination. These mechanisms allow processes or threads to
communicate, share data, and coordinate their activities. Examples include
semaphores, mutexes, condition variables, and message passing. Process
synchronization ensures that concurrent processes or threads do not
interfere with each other's execution.
o Interrupt handling: The operating system manages interrupts, which are
signals generated by hardware devices or software events that require
immediate attention. Interrupt handling involves suspending the current
execution, saving the context, and transferring control to the appropriate
interrupt handler or service routine. The OS ensures that interrupts are
handled promptly and efficiently, minimizing system latency and
responding to events in a timely manner.
o Load balancing: In a multiprocessor or multi-core system, the operating
system may perform load balancing to distribute the workload evenly
across available processors. Load balancing helps optimize CPU
utilization, reduces resource bottlenecks, and improves overall system
performance. The OS may migrate processes or threads between
processors to achieve load balancing.
o Power management: The operating system incorporates power
management techniques to optimize CPU power consumption and extend
battery life in mobile devices or reduce energy consumption in desktop
systems. Power management strategies include dynamic frequency scaling,
CPU idle states, and scheduling policies that take into account power-
saving considerations.
- These functions collectively enable the operating system to efficiently manage the
system's processors, ensuring fair allocation of CPU time, optimizing system
performance, and providing a responsive and efficient computing environment.
Effective processor management is crucial for achieving multitasking,
concurrency, and parallelism, and for meeting the performance requirements of
various applications and users.
h. Device management
- Device management is an essential function of an operating system that involves
handling and coordinating the interaction between software applications and
hardware devices connected to the system. The operating system manages device
drivers, device access, and provides an interface for software to communicate with
devices. Here are the key functions related to device management in an operating
system:
o Device driver management: The operating system manages device drivers,
which are software components that facilitate communication between the
operating system and hardware devices. It includes loading, initializing,
and unloading device drivers, ensuring compatibility between devices and
the operating system. The OS provides a driver interface and abstraction
layer for device drivers to interact with the system.
o Device enumeration and configuration: The operating system detects and
enumerates hardware devices connected to the system during the boot
process or when devices are hot-plugged. It identifies device capabilities,
resources, and configuration parameters. The OS assigns unique identifiers
(device IDs) to devices and manages device configuration settings.
o Device allocation and access control: The operating system allocates
hardware devices to software applications or processes that require access
to them. It ensures exclusive or shared access to devices, depending on
device characteristics and application requirements. Access control
mechanisms and device locking prevent conflicts and ensure safe and
coordinated device usage.
o Device I/O operations: The operating system provides an interface for
software applications to perform input and output operations on devices. It
offers system calls, APIs (Application Programming Interfaces), or device-
specific libraries for applications to interact with devices. The OS manages
device input (e.g., keyboard, mouse) and output (e.g., display, printer)
operations, including data transfer, error handling, and buffering.
o Device scheduling and prioritization: In systems with multiple devices or
concurrent access requests, the operating system manages device
scheduling and prioritization. It ensures fair and efficient device utilization
by coordinating access requests from different processes or applications.
Device scheduling algorithms determine the order in which requests are
serviced, optimizing performance, fairness, or meeting specific criteria.
o Device interrupt handling: Hardware devices generate interrupts to signal
events or completion of operations. The operating system manages
interrupt handling, which involves interrupt request (IRQ) management,
interrupt vectoring, and interrupt service routines (ISRs). The OS
coordinates and prioritizes interrupt handling to ensure timely response to
device events and efficient utilization of system resources.
o Plug and Play support: The operating system provides Plug and Play (PnP)
support to enable automatic detection, configuration, and installation of
new hardware devices without manual intervention. It manages device
recognition, driver installation, and resource allocation for newly
connected devices. PnP support simplifies device management and
enhances system usability.
o Device power management: The operating system incorporates power
management features to control the power state of devices and conserve
energy. It enables device power saving modes, such as sleep or standby
states, and manages device power transitions. Power management policies
balance power consumption, performance requirements, and user
preferences.
o Device monitoring and diagnostics: The operating system monitors device
status, performance, and error conditions. It provides diagnostic tools and
logging facilities to track device-related events, detect errors, and
troubleshoot device issues. Device monitoring and diagnostics aid in
identifying hardware problems, optimizing device performance, and
ensuring reliable device operation.
o Device virtualization: In virtualized environments, the operating system
supports device virtualization, allowing virtual machines or containers to
access virtualized devices. It manages the mapping and emulation of
virtual devices onto physical devices, enabling efficient and secure sharing
of hardware resources among multiple virtual instances.
- These functions collectively enable the operating system to efficiently manage
hardware devices, facilitate device access and control, and provide a standardized
interface for software applications to interact with devices. Effective device
management ensures proper utilization, coordination, and reliability of hardware
resources in a computing system.
i. File management
- File management is a fundamental function of an operating system that involves
the creation, organization, manipulation, and access control of files and directories
on storage devices. The operating system provides a file system that acts as an
interface between applications and the physical storage media. Here are the key
functions related to file management in an operating system:
o File creation and deletion: The operating system enables the creation and
deletion of files and directories. It provides system calls or APIs for
applications to create new files, specify their attributes (such as name, size,
and permissions), and organize them within directories. Similarly, the OS
facilitates the deletion of files and directories, reclaiming the associated
storage space.
o File naming and directory structure: The operating system manages file
naming conventions and organizes files into a hierarchical directory
structure. It provides mechanisms for creating, renaming, and moving files
within directories. The OS ensures uniqueness of file names within a
directory and supports path-based addressing for locating files in the file
system.
o File access and permissions: The operating system controls file access and
enforces file permissions to protect data integrity and security. It manages
permissions such as read, write, and execute, and provides mechanisms for
user authentication and authorization. The OS ensures that only authorized
users or processes can access files and directories according to the
specified permissions.
o File reading and writing: The operating system enables applications to read
data from files and write data to files. It provides system calls or APIs for
opening files, reading data from specific positions within a file, and
writing data to files. The OS handles buffering, caching, and disk I/O
operations to optimize file read and write operations.
o File organization and storage allocation: The operating system manages
the organization and storage allocation of files on physical storage devices.
It determines how files are stored, divided into blocks or clusters, and
mapped to physical disk locations. The OS utilizes file allocation methods,
such as contiguous allocation, linked allocation, or indexed allocation, to
efficiently manage file storage.
o File metadata management: The operating system maintains metadata
associated with files, which includes information such as file size, creation
date, modification date, ownership, and file permissions. The OS updates
and manages file metadata to support file operations, access control, and
file system integrity.
o File sharing and concurrency control: The operating system handles file
sharing and provides mechanisms for concurrent access to files by multiple
processes or users. It manages file locks, synchronization, and
coordination to prevent conflicts when multiple processes or users attempt
to access or modify the same file simultaneously. The OS ensures data
consistency and prevents data corruption in shared file environments.
o File backup and recovery: The operating system supports file backup and
recovery mechanisms to protect data from accidental loss or system
failures. It provides utilities or tools for creating file backups, restoring
files from backups, and managing file versioning. The OS ensures data
integrity and offers options for data recovery in case of file system errors
or hardware failures.
o File system maintenance and optimization: The operating system performs
file system maintenance tasks to optimize file system performance and
ensure its integrity. This includes tasks like disk defragmentation, error
checking, and repair, garbage collection, and disk space management. The
OS maintains file system consistency, improves performance, and
enhances overall system reliability.
o File compression and encryption: The operating system may include
features for file compression and encryption. It provides utilities or APIs
for compressing files to reduce storage space requirements and
decompressing files for access. Additionally, the OS may offer encryption
capabilities to secure file contents, protecting sensitive data from
unauthorized access.
- These functions collectively enable the operating system to effectively manage
files and directories, providing a structured and secure storage environment for
applications and users. Proper file management ensures efficient data
organization, controlled access, data integrity, and reliable storage operations in a
computing system.
- During the 1940s and 1950s, computers were in their early stages of development,
and operating systems as we know them today did not exist. Here's an overview of
the serial processing systems that were used during this period:
a. Manual Operation:
o Computers were large and complex machines that required manual
operation by highly skilled operators.
o Programs were manually entered into the computer using punch cards or
switches, and each program had to be loaded and executed separately.
d. Lack of Multitasking:
o The concept of multitasking, where multiple programs can run
concurrently, did not exist in serial processing systems.
o Users had to wait for the completion of one program before they could
start another.
h. No File Systems:
o Serial processing systems did not have file systems or the concept of
persistent storage.
o Programs and data were stored on punch cards or magnetic tapes, and
operators had to load and unload the appropriate media for each program.
- During the 1950s and 1960s, computers and their usage evolved, leading to the
development of simple operating systems. These operating systems introduced
several key features that improved resource management and user interaction.
Here's an overview of simple operating systems during this period:
a. Resource Management:
o Simple operating systems provided basic resource management
capabilities, including memory allocation and I/O device handling.
o They allowed multiple programs to be loaded into memory simultaneously
and provided mechanisms to allocate memory segments to each program.
b. Job Scheduling:
o These operating systems introduced job scheduling algorithms to manage
the execution order of programs.
o Jobs were typically prioritized based on factors such as deadlines,
importance, or user-defined criteria.
o The operating system would allocate CPU time to different jobs, allowing
them to execute in a sequential manner.
c. Input/Output Handling:
o Simple operating systems facilitated I/O operations by providing interfaces
for devices such as printers, keyboards, and storage media.
o They managed I/O requests from programs and coordinated the transfer of
data between the CPU and devices.
d. Batch Processing:
o Batch processing continued to be a common mode of operation during this
period.
o Simple operating systems allowed users to submit batches of jobs that
would be executed sequentially without user intervention.
o They provided job control languages or scripts to specify job requirements
and dependencies.
g. Limited Multitasking:
o While simple operating systems supported the execution of multiple
programs, they still lacked true multitasking capabilities.
o Programs were executed in a sequential manner, and only one program
could run at a time.
o However, the operating system facilitated the illusion of concurrent
execution by rapidly switching between programs, giving the appearance
of multitasking.
- During the 1960s and 1970s, time-sharing operating systems revolutionized the
way users interacted with computers. Time-sharing systems introduced the
concept of interactive computing, allowing multiple users to simultaneously share
a computer's resources. Here's an overview of time-sharing systems during this
period:
c. Terminal Handling:
o Time-sharing systems supported a variety of terminals or terminal
emulators for user interaction.
o Terminals were connected to the central computer via communication
lines, enabling remote access to the system.
o The system managed terminal input and output, handling terminal-specific
protocols and translating user actions into system commands.
e. CPU Scheduling:
o Time-sharing systems implemented sophisticated CPU scheduling
algorithms to allocate CPU time among multiple users and programs.
o Scheduling algorithms, such as round-robin or priority-based scheduling,
ensured fair distribution of CPU resources and efficient task switching.
f. Virtual Memory:
o Time-sharing systems introduced virtual memory, which allowed
programs to use more memory than physically available.
o Virtual memory used techniques such as paging or segmentation to store
parts of programs in secondary storage (disk) when not actively in use,
swapping them back into memory when needed.
f. Transaction Processing:
o Mainframe operating systems introduced transaction processing
capabilities for handling large-scale business transactions.
o Transaction processing systems facilitated reliable and efficient processing
of concurrent database operations, ensuring data integrity and consistency.
h. Security Features:
o Mainframe operating systems placed strong emphasis on security.
o They provided comprehensive access control mechanisms, authentication,
and encryption to protect sensitive data and resources.
- During the 1970s and 1980s, the personal computer (PC) revolution took place,
leading to the development of operating systems specifically designed for personal
computers. Here's an overview of personal computer operating systems during this
period:
e. File Systems:
o Personal computer operating systems introduced file systems tailored to
the needs of individual users.
o File systems provided hierarchical organization of files and directories,
with support for file attributes, access permissions, and file extensions.
o Common file systems during this period included FAT (File Allocation
Table) for MS-DOS and HFS (Hierarchical File System) for Apple
computers.
f. Software Development:
o Personal computer operating systems provided development tools and
software libraries to support software development for the platform.
o Integrated development environments (IDEs) and programming languages,
such as Turbo Pascal, BASIC, and C, became popular for PC
programming.
h. Gaming Support:
o Personal computer operating systems started to support gaming, with
improved graphics and sound capabilities.
o Gaming-specific APIs and libraries were developed to facilitate game
development and enhance the gaming experience.
- During the 1980s and 1990s, the graphical user interface (GUI) became the
standard for personal computer operating systems. Graphical user interface
operating systems introduced visual elements, such as windows, icons, and menus,
making computers more user-friendly and accessible. Here's an overview of GUI
operating systems during this period:
b. Microsoft Windows:
o Microsoft Windows became a dominant GUI operating system during this
period.
o Windows 1.0 was released in 1985, followed by subsequent versions like
Windows 2.0, Windows 3.0, Windows 95, and Windows 98.
o Windows offered a graphical interface built on top of MS-DOS, providing
a multitasking environment and compatibility with a wide range of
hardware.
c. X Window System:
o The X Window System, developed at MIT, became popular as a GUI
framework for Unix and Unix-like operating systems.
o X Window System allowed graphical applications to run on networked
computers, providing a consistent GUI experience across different
platforms.
d. OS/2:
o OS/2, jointly developed by IBM and Microsoft, was an advanced GUI
operating system released in the late 1980s.
o It provided preemptive multitasking, multithreading, and a 32-bit protected
mode, offering enhanced stability and performance compared to previous
operating systems.
e. AmigaOS:
o AmigaOS, used in Commodore Amiga computers, featured a highly
innovative GUI and multimedia capabilities.
o It offered features like multitasking, preemptive multitasking, and a unique
graphical interface known as the Workbench.
f. NeXTSTEP:
o NeXTSTEP, developed by NeXT Inc., was a GUI operating system known
for its advanced capabilities and object-oriented design.
o It provided a highly intuitive user interface, development tools, and
networking features, and it laid the foundation for macOS, the successor to
Macintosh System Software.
g. Desktop Environments:
o GUI operating systems often included desktop environments that provided
a cohesive user experience.
o Examples include the Apple Macintosh Finder, the Windows shell, the
Common Desktop Environment (CDE) for Unix systems, and the GNOME
and KDE environments for Linux.
h. Multimedia Support:
o GUI operating systems began incorporating multimedia capabilities,
enabling users to play audio and video files, view images, and create
multimedia content.
o Sound cards, CD-ROM drives, and multimedia applications became
increasingly prevalent during this period.
i. Internet Integration:
o GUI operating systems started integrating internet connectivity and web
browsing capabilities.
o Web browsers, such as Netscape Navigator and Internet Explorer, were
developed, allowing users to access the World Wide Web.
j. Software Applications:
o The popularity of GUI operating systems led to the development of a wide
range of software applications, including word processors, spreadsheets,
graphic design tools, and multimedia software.
o Software developers focused on creating user-friendly applications with
graphical interfaces that leveraged the capabilities of GUI operating
systems.
- The introduction of GUI operating systems in the 1980s and 1990s transformed
the computing experience, making computers more accessible to a broader range
of users. The concepts and features introduced during this period laid the
foundation for modern operating systems, where graphical interfaces are now the
standard across various computing platforms.
7. Networked Operating Systems (1990s-Present)
- The advent of networked computing in the 1990s brought about a significant shift
in the design and capabilities of operating systems. Networked operating systems
are designed to facilitate communication, resource sharing, and collaboration
among multiple computers connected over a network. Here's an overview of
networked operating systems from the 1990s to the present:
a. Novell NetWare:
o NetWare, developed by Novell, was one of the earliest networked
operating systems widely used in the 1990s.
o It provided robust networking capabilities, file and print services, and
centralized user management, making it popular in business environments.
d. Client-Server Architecture:
o Networked operating systems adopted the client-server model, where
client machines request services or resources from server machines.
o Clients typically run user applications, while servers provide specialized
services like file sharing, email, databases, and web services.
g. Internet Integration:
o Networked operating systems incorporated native support for internet
connectivity and internet protocols.
o Web browsers, email clients, and other internet applications were
integrated into the operating systems, allowing seamless internet access.
h. Cloud Computing and Virtualization:
o Networked operating systems played a crucial role in the rise of cloud
computing and virtualization.
o Virtualization technologies, such as VMware and Xen, enabled the
creation of virtual machines (VMs) that could run multiple operating
systems simultaneously on a single physical server.
- The 2000s marked a significant shift towards mobile computing, leading to the
development of specialized operating systems for mobile devices. Mobile
operating systems are designed to run on smartphones, tablets, and other portable
devices, offering optimized user experiences and providing features specific to
mobile usage. Here's an overview of mobile operating systems from the 2000s to
the present:
a. Symbian OS:
o Symbian OS was one of the earliest mobile operating systems, widely used
in the early 2000s.
o It powered many Nokia smartphones and featured a customizable user
interface, support for multitasking, and a range of applications.
b. BlackBerry OS:
o iOS, developed by Apple Inc., powers iPhones, iPads, and iPod Touch
devices.
o It features a sleek and intuitive interface, robust security, and a curated
App Store offering a vast range of applications.
o iOS is known for its seamless integration with other Apple devices and
services, creating a cohesive ecosystem.
e. Android:
o Android, developed by Google, has become the most widely used mobile
operating system globally.
o It is an open-source platform based on the Linux kernel and offers
extensive customization options for device manufacturers.
o Android provides a rich set of features, a diverse range of apps from the
Google Play Store, and deep integration with Google services.
f. Windows 10 Mobile:
o Windows 10 Mobile was Microsoft's attempt to bring a unified operating
system across PCs, tablets, and smartphones.
o It aimed to provide a consistent user experience and app compatibility with
Windows desktop applications.
g. BlackBerry 10:
o BlackBerry 10 was a modern mobile operating system developed by
BlackBerry Limited, featuring a gesture-based interface and strong
security measures.
o It aimed to compete with iOS and Android but struggled to gain significant
market share.
h. Tizen:
o Tizen, backed by the Linux Foundation and major technology companies,
is an open-source operating system designed for a range of devices,
including smartphones, smart TVs, wearables, and IoT devices.
i. KaiOS:
o KaiOS is a lightweight operating system optimized for feature phones,
targeting users who require basic smartphone functionalities at an
affordable price point.
o It provides access to popular apps like WhatsApp, YouTube, and Google
Maps.
j. HarmonyOS:
o HarmonyOS, developed by Huawei, is a cross-device operating system
aimed at providing a unified experience across smartphones, tablets,
wearables, and IoT devices.
o It focuses on seamless connectivity and efficient resource management.
- Mobile operating systems have evolved rapidly, driven by advancements in
hardware, mobile applications, and user demands. They offer extensive app
ecosystems, innovative user interfaces, enhanced security measures, and
integration with cloud services. These operating systems have revolutionized the
way people use mobile devices, transforming them into powerful tools for
communication, productivity, entertainment, and more.
a. Xen:
c. KVM:
e. OpenStack:
f. Docker:
g. CoreOS:
h. Kubernetes:
B. Process Schedulers
1. Long term or job scheduler
- The long-term scheduler, also known as the job scheduler, is responsible for
selecting processes from the job queue and admitting them into the system for
execution. Its primary role is to control the degree of multiprogramming, ensuring
that the system doesn't get overwhelmed with too many processes at once. The
long-term scheduler determines which processes are suitable for execution based
on various criteria like system resource availability, process priority, and system
load. Once a process is selected, it moves from the job queue to the ready state,
becoming eligible for execution by the CPU.
3. Medium term
- The medium-term scheduler, sometimes referred to as the swapping scheduler,
exists in some operating systems, but not all. It operates at an intermediate time
scale, between the long-term and short-term schedulers. The medium-term
scheduler decides which processes should be temporarily removed from main
memory (RAM) and placed into secondary storage (such as the hard disk) to free
up memory resources. This process is known as swapping. By swapping out
processes, the medium-term scheduler can prevent memory congestion, optimize
memory utilization, and improve overall system performance. When a process is
swapped back into main memory, it typically transitions from the suspended state
to the ready state.
B. Commands in Linux
- ls: Lists files and directories in the current directory.
- mkdir: Creates a new directory.
V. Core features modern operating systems will require to meet future needs
A.
B. Object-Oriented Design
- Object-Oriented Design (OOD) is a software design paradigm that focuses on
organizing software systems around objects, which are instances of classes. It
promotes modular design, code reusability, and encapsulation of data and
behavior within objects. OOD is widely used in the development of modern
operating systems and offers several benefits:
o Modularity: OOD promotes breaking down complex systems into smaller,
self-contained modules (objects) that can be developed and tested
independently. This modular approach enhances code organization,
maintainability, and scalability.
o Code Reusability: OOD enables the creation of reusable software
components. Objects and classes can be designed in a way that allows
them to be easily reused in different parts of the operating system or in
other software projects. This saves development time, promotes
consistency, and reduces the likelihood of errors.
o Encapsulation: OOD emphasizes encapsulating data and behavior within
objects. Objects hide their internal state and implementation details,
exposing only the necessary interfaces for interacting with them. This
encapsulation provides data protection, promotes information hiding, and
facilitates better control over access and modifications to the system's
components.
o Inheritance: OOD supports inheritance, which allows the creation of new
classes based on existing classes. Inheritance enables code reuse by
inheriting properties and behaviors from a base class and extending or
modifying them in derived classes. This promotes the organization of
related classes, simplifies code maintenance, and enhances flexibility in
system design.
o Polymorphism: OOD incorporates polymorphism, which allows objects of
different classes to be treated interchangeably through a common interface.
Polymorphism enables dynamic binding of methods at runtime, facilitating
flexibility, extensibility, and the ability to handle varying types of objects
efficiently.
o Collaboration and Communication: OOD encourages designing systems
that reflect real-world entities and their relationships. It enables better
communication and collaboration among development teams as system
components can be represented and discussed using familiar object-
oriented concepts, such as classes, objects, and interactions.
- By employing Object-Oriented Design principles and practices, operating systems
can achieve greater modularity, maintainability, reusability, and flexibility. OOD
facilitates the development of robust and scalable software systems that can adapt
to changing requirements and technological advancements.
C. Multi-threading
- Multi-threading is indeed a core feature that modern operating systems require to
meet future needs. Multi-threading refers to the ability of an operating system to
execute multiple threads concurrently within a single process. Here are some
reasons why multi-threading is essential:
o Improved Performance: Multi-threading allows for the parallel execution
of multiple tasks or threads, thereby utilizing the available processor cores
efficiently. This leads to improved performance, as different threads can
perform independent or concurrent tasks simultaneously.
o Responsiveness: Multi-threading enhances the responsiveness of an
operating system by enabling it to handle multiple user interactions or
events concurrently. For example, while one thread is processing a user
input, another thread can handle background tasks or respond to other user
inputs.
o Resource Utilization: Multi-threading helps optimize resource utilization
within the operating system. By efficiently distributing tasks among
threads, it ensures that processor time, memory, and other system
resources are utilized effectively, maximizing the overall system
efficiency.
o Concurrency and Asynchronous Operations: Multi-threading enables the
execution of concurrent and asynchronous operations. Different threads
can perform independent tasks simultaneously, allowing for efficient
handling of background processes, I/O operations, and parallel
computations.
o Scalability: Multi-threading provides scalability, as the operating system
can dynamically allocate and manage threads based on the workload. This
allows the system to adapt to changing demands, such as increased user
interactions or resource-intensive tasks.
o Responsiveness to I/O Operations: Multi-threading is crucial for efficient
handling of I/O operations, such as reading from or writing to storage
devices or network communications. By using separate threads for I/O
operations, the operating system can overlap I/O with other tasks, reducing
overall latency and improving system performance.
o Fault Isolation: Multi-threading helps isolate faults and failures within the
operating system. If one thread encounters an error or crashes, other
threads can continue their execution without affecting the entire system,
ensuring stability and fault tolerance.
o Parallel Processing: Multi-threading enables parallel processing of
computationally intensive tasks, making it well-suited for tasks like
multimedia processing, data analysis, scientific simulations, and other
performance-critical applications.
- Overall, multi-threading is a crucial feature for modern operating systems to
efficiently utilize hardware resources, improve responsiveness, handle concurrent
tasks, and meet the increasing demands of future computing needs.
D. Symmetric Multiprocessing
- Symmetric Multiprocessing (SMP) is a core feature that modern operating
systems require to meet future needs. SMP refers to a multiprocessing architecture
in which two or more identical processors are connected to a single shared main
memory and are controlled by a single operating system. Here are some reasons
why SMP is essential:
o Increased Performance: SMP allows for parallel execution of tasks across
multiple processors. This enables the operating system to distribute the
workload among the processors, resulting in improved overall system
performance and faster task execution times.
o Load Balancing: SMP enables load balancing, where the operating system
dynamically distributes tasks across available processors to ensure optimal
utilization of resources. This helps prevent processor bottlenecks and
ensures that each processor is utilized efficiently.
o Scalability: SMP provides scalability by allowing the addition of more
processors to the system. As the demands on the system increase,
additional processors can be added to handle the increased workload,
thereby scaling the system's performance.
o Enhanced Responsiveness: With SMP, the operating system can allocate
different tasks to different processors, enabling concurrent execution. This
improves the system's responsiveness by allowing it to handle multiple
tasks simultaneously, such as running multiple applications or processing
multiple user requests concurrently.
o Fault Tolerance: SMP systems can provide fault tolerance by utilizing
redundant processors. If one processor fails, the remaining processors can
continue the system's operation, ensuring system availability and
reliability.
o Improved Throughput: SMP enables higher throughput by allowing
multiple processes or threads to execute simultaneously on different
processors. This is especially beneficial for multitasking environments
where multiple applications or processes need to run concurrently without
significant performance degradation.
o Efficient Resource Sharing: SMP facilitates efficient sharing of system
resources among multiple processors. Since all processors have access to
the shared memory, they can easily communicate and share data, reducing
the need for complex inter-processor communication mechanisms.
o Simplified Programming: SMP provides a simplified programming model
for developers. With SMP, developers can design and write parallel code
that can take advantage of multiple processors, resulting in improved
application performance and responsiveness.
- SMP is widely used in modern operating systems to harness the power of multiple
processors, improve system performance, scalability, and responsiveness. It plays
a critical role in meeting the increasing demands of resource-intensive
applications, multitasking environments, and future computing needs.
F. Microkernel Architecture
- Microkernel architecture is a design approach used in operating systems where the
kernel is kept minimalistic and only essential services are implemented in the
kernel space. The primary idea behind the microkernel architecture is to minimize
the kernel's size and complexity, while moving non-essential services and device
drivers to the user space. Here are some key features and benefits of the
microkernel architecture:
o Modularity: The microkernel architecture promotes modularity by
separating the core functionality of the operating system, such as process
management and memory management, into the kernel space. Non-
essential services, such as device drivers, file systems, and networking
protocols, are implemented as user-space processes. This modular design
enhances system flexibility, ease of maintenance, and extensibility.
o Minimized Kernel: The microkernel itself provides only the essential
services, such as inter-process communication (IPC), thread scheduling,
and basic memory management. By keeping the kernel minimal, it reduces
the trusted computing base, which improves security and helps isolate
faults within the kernel. This makes the system more robust and less prone
to crashes or failures.
o Fault Isolation: In a microkernel architecture, device drivers and non-
essential services run in the user space as separate processes. If a device
driver or service crashes or encounters an error, it does not affect the
stability or availability of the entire system. The fault is isolated to that
specific process, and other processes and services can continue to function
normally.
o Portability: The microkernel architecture promotes portability by
abstracting hardware-specific functionality from the kernel. Most device
drivers and hardware-related services run in user space, making it easier to
port the operating system to different hardware platforms with minimal
modifications to the kernel. This enables greater hardware compatibility
and flexibility.
o Extensibility: Adding new services or features to the operating system is
easier in a microkernel architecture. Since non-essential services run in
user space, new services can be developed and added without modifying
the kernel. This facilitates the development of specialized or custom
services tailored to specific requirements.
o Security: Due to its minimized kernel and modular design, the microkernel
architecture enhances security. By reducing the trusted code running in the
kernel, the attack surface for potential security vulnerabilities is
minimized. Additionally, the isolation between kernel and user space
processes adds an extra layer of protection, preventing unauthorized access
or malicious actions from affecting critical system components.
o Reliability and Maintainability: The separation of services into user space
processes makes it easier to isolate and debug issues. By decoupling
services from the kernel, the impact of changes or updates to a particular
service is limited, improving system reliability and ease of maintenance.
o Performance: While the microkernel architecture may introduce some
overhead due to inter-process communication and context switches,
advancements in hardware and optimization techniques have significantly
reduced these performance impacts. Additionally, the modular design
allows for efficient resource allocation and optimization for specific
workloads.
- Microkernel architecture has been successfully employed in various operating
systems, such as GNU Hurd, MINIX, and QNX. It offers flexibility, security, fault
tolerance, and ease of extensibility, making it suitable for various computing
environments and applications.
- Mapping page#
o If the page number is in the TLB (: hit, hit) => get the frame number
immediately => save the main memory access time to get the frame
number in the paging table.
o Otherwise (: miss, miss), must get the frame number from the paging table
as usual.
VII. REFERENCE
- https://www.digitalocean.com/community/tutorials/linux-commands
- https://quantrimang.com/cong-nghe/huong-dan-su-dung-command-prompt-85301
- https://www.computerworld.com/article/2580106/future-of-operating-systems--
simplicity.html
- https://www.tutorialspoint.com/operating_system/
os_process_scheduling_algorithms.htm