Designed to run a computer's hardware and application programs.
Examples:
Operating systems (macOS, Linux, Android, Microsoft Windows)
Game engines
Search engines (Google, Bing, Yahoo!)
Industrial automation
Computational science software
Software as a Service (SaaS) applications
Specific examples:
Operating systems (OS): Windows, Linux, macOS, etc.
Windows: Dominant OS for personal computers, known for its wide software compatibility.
Linux: Open-source OS, used in servers, embedded systems, and as desktop OS; known for stability and flexibility.
macOS: Apple's OS, known for user-friendly interface and integration with Apple hardware.
Device drivers: enable communication between hardware and OS.
Examples: Printer drivers, graphics card drivers, network adapter drivers. They facilitate proper communication and functioning of the connected devices.
Firmware: pre-installed low-level software that controls basic functions.
Examples: BIOS, UEFI. It initializes hardware during the boot process.
Utility software: tools for system maintenance and optimization.
Examples: Disk defragmenters, antivirus software, backup utilities. These ensure smooth and secure operation of the computer.
Boot loaders: initialize the OS during startup.
GRUB (Grand Unified Bootloader) is a common example, loading the OS kernel into memory.
Why use System Software?
Hardware Communication: Serves as interface between hardware and software components.
Resource Management: Manages memory, CPU usage, and storage, optimizing their utilization.
Efficiently allocates resources to prevent conflicts and ensure smooth operation.
Security: Provides security measures like firewalls, antivirus software, and encryption.
Essential for protecting the system from malware and unauthorized access.
User Interface: Provides a user interface for users to interact with the device.
Enables users to control and manage the computer.
Application Support: Supports installation and running of applications.
Ensures compatibility and proper functioning of applications.
Customization: Allows customization of system settings.
Enables users to tailor the system to their needs.
Features of System Software
Memory Management: Operating system manages primary memory, allocating it upon request.
Includes memory allocation, deallocation, and virtual memory management.
Processor Management: OS performs process management, allocating RAM to a process and de-allocating when no longer needed.
Involves scheduling processes, handling interrupts, and managing multi-core processors.
File Management: Operating system manages files, allocating and de-allocating resources and deciding resource allocation.
Includes file and directory operations, access control, and file system integrity.
Security: Prevents unauthorized access using passwords.
Incorporates authentication, authorization, and encryption to protect system resources.
Error-detecting Aids: Provides dumps, traces, error messages, and other debugging methods.
Helps in identifying and resolving system errors.
Scheduling: OS schedules processes using scheduling algorithms.
Determines the order in which processes are executed to optimize performance.
Types of System Software
Operating System
Device Drivers
Utilities
Programming Language Translators
Firmware
BIOS & UEFI
1. Operating System
Manages computer's hardware and software resources.
Provides common services for computer programs.
Acts as a link between software and hardware.
Controls and records the execution of programs, including application programs and other system software.
Important Tasks Performed by the Operating System
Resource Management: Manages and allocates memory, CPU time, and other hardware resources.
Memory allocation, CPU scheduling, and device management.
Process Management: Starts, stops, and manages processes and programs; controls scheduling and resource allocation.
Process creation, termination, and synchronization.
Memory Management: Manages computer's primary memory and optimizes memory usage.
Virtual memory, paging, and segmentation.
Security: Provides a secure environment using security policies and mechanisms like access controls and encryption.
User authentication, access control lists, and data encryption.
File Management: Organizes and manages the file system, including file and directory creation, deletion, and manipulation.
File system organization, directory management, and file access control.
Device Management: Manages input/output devices; provides necessary drivers and interfaces for communication.
Device driver management, I/O scheduling, and device communication protocols.
2. Programming Language Translator
Translates code written in one programming language into another.
Examples:
Compiler
Interpreter
Assembler
Compiler
Translates code from one language to another without changing the meaning.
Optimizes target code for time and space efficiency.
Operations performed during compilation:
Pre-processing
Lexical analysis
Parsing
Semantic analysis (syntax-directed translation)
Conversion to intermediate representation
Code optimization
Code generation
Examples: gcc (compiler), g++ (C++ Compiler), Javac (Java Compiler), etc.
Interpreter
Directly executes instructions written in a programming or scripting language without prior compilation.
Translates high-level instructions into an intermediate form, which is then executed.
Fast, as it skips the compilation stage.
Continuously translates until the first error is met, then stops, making debugging easy.
Examples: Ruby, Python, PHP, etc.
Assembler
Converts assembly language into machine code.
Takes basic commands and operations and converts them into binary code for a specific processor.
Produces executable code similar to compilers.
More simplistic since it converts low-level code to machine code.
Each assembly language is designed for a specific processor.
Simple one-to-one mapping from assembly code to machine code.
Compilers convert generic high-level source code into machine code for a specific processor.
3. Device Drivers
Minimizes the need for system troubleshooting.
Operating system communicates with hardware elements through device drivers.
Simplifies management and regulation of hardware communication.
Operating system comes with various device drivers.
Most device drivers are pre-installed (mouse, keyboard, etc.).
4. Firmware
Operational programs installed on computer motherboards.
Helps the operating system distinguish between Flash, ROM, EPROM, and memory chips.
Main purpose: managing and controlling all of a device's actions.
Uses non-volatile chips for initial installation.
Two main types:
BIOS (Basic Input/Output System) chip
Older firmware type, responsible for initializing hardware during the boot process.
UEFI (Unified Extended Firmware Interface) chips
Modern firmware, offering improved functionality, security, and graphical interfaces.
5. Utility Software
Interacts between system software and application software.
Third-party product created to lessen maintenance problems and find computer system defects.
Included with the computer's operating system.
Attributes:
Protection from threats and infections.
Examples: Antivirus software, firewalls.
WinRAR and WinZip aid in reducing disk size.
File compression and archiving tools.
Assists with disk partitioning.
Creates separate partitions to manage disk space efficiently.
Improves system security and makes backup easier.
Backup software, encryption tools.
Disk defragmenter to organize dispersed files.
Optimizes file storage for faster access.
Aids in recovering lost data.
Data recovery tools.
Uses of System Software
Operating systems: manage computer hardware and software resources; used in personal computers, servers, supercomputers, embedded systems.
Windows in PCs, Linux in servers, and embedded OS in devices like routers.
Device drivers: allow operating systems to communicate with hardware devices; without them, operating systems would be unable to interact with devices.
Printer drivers, graphics drivers, and network drivers.
Firmware: provides low-level control over hardware devices; examples include BIOS firmware, embedded systems, and network devices.
BIOS for system startup, firmware in routers to manage network traffic.
System utilities: perform routine maintenance tasks like disk cleanup, defragmentation, antivirus scanning, and system backups; ensure efficient and secure system operation.
Disk defragmenters, antivirus software, and backup utilities.
Programming tools: used by developers to create, debug, and optimize software applications; includes compilers, debuggers, IDEs, and performance analysis tools.
Compilers for code translation, debuggers for troubleshooting, and IDEs for development.
Issues in System Software
Compatibility Issues: May not be compatible with certain hardware components.
Older software may not work on newer hardware.
Security Issues: May contain vulnerabilities exploitable by hackers or malware.
Unpatched vulnerabilities can be exploited by attackers.
Performance Issues: May not be optimized or may be resource-intensive,