Operating System
Software that manages computer hardware and provides services for application programs. It acts as an intermediary between users and the computer hardware.
Functions of Operating System
Functions include process management, memory management, file system management, and device management.
Memory Management
The process of coordinating and handling computer memory, including allocation, tracking, and deallocation of memory resources.
Paging
Memory is divided into fixed size blocks, allowing for efficient memory management and elimination of fragmentation. They may be stored in non-contiguous physical memory locations.
Segmentation
Memory management technique that divides memory into variable-sized segments, each representing a logical unit such as a function or data structure.
Virtual Memory
A memory management capability that allows a computer to use hard disk space as an extension of RAM, enabling larger applications to run on limited physical memory. Can lead to a deterioration in performance due to increased access times.
Interrupts
Signals that alert the CPU to immediate attention needs for example when an I/O operation is complete or an error occurs, allowing it to pause current tasks and execute interrupt service routines.
Interrupt Service Routine
A special function that the CPU executes in response to an interrupt, allowing the system to handle events such as I/O operations or errors efficiently. Current processes are suspended and moved onto a stackto ensure that they can be resumed after the interrupt is handled.
Multi-tasking
The ability of an operating system to execute multiple tasks or processes simultaneously, improving efficiency and responsiveness by sharing CPU time among them.
Scheduling
The method by which an operating system decides which tasks or processes to run at any given time, optimizing CPU usage and ensuring that all processes receive adequate attention.
Round Robin
A scheduling algorithm that assigns a fixed time slice to each process in a cyclic order, ensuring fair CPU time distribution among all active processes.
First Come, First Served
A scheduling algorithm that processes tasks in the order they arrive, ensuring that the first task submitted is the first to be executed, which can lead to inefficiencies and increased waiting time for subsequent tasks. This method can result in longer wait times for processes that arrive later, especially if a long task is executed first.
Shortest Remaining Time
A preemptive scheduling algorithm that selects the process with the smallest remaining time until completion. It aims to minimize the average waiting time for processes in the system.
Shortest Job First
A non-preemptive scheduling algorithm that selects the process with the smallest total estimated run time for execution next, minimizing the average waiting time for all processes.
Multi-Level Feedback Queue
A scheduling algorithm that allows processes to move between different priority queues based on their behavior and requirements. It aims to optimize turnaround time and responsiveness by dynamically adjusting the priority of processes.
Backing Store Management
The method of managing secondary storage to hold data and programs that are not currently in use by the main memory, ensuring efficient retrieval and storage.
Peripheral Management
The process of controlling and coordinating the input and output devices connected to a computer system, ensuring proper communication and functionality. It involves managing device drivers, buffering, and spooling to optimize performance and resource allocation.
Distributed Operating System
A type of operating system that manages a collection of independent computers and makes them appear to the users as a single coherent system. It facilitates resource sharing, communication, and coordination among the distributed components.
Multi-tasking Operating System
An operating system that allows multiple processes to run simultaneously by managing the CPU time and resources efficiently, enabling users to perform several tasks at once.
Mutli-user Operating System
An operating system that supports multiple users accessing the system simultaneously, allowing each user to have their own environment and resources while maintaining security and privacy.
Mobile Operating System
A type of operating system designed specifically for mobile devices, such as smartphones and tablets. It manages hardware and software resources while providing a user-friendly interface for mobile applications.
Real-time Operating System
An operating system designed to process data as it comes in, typically without buffering delays, ensuring that the system can respond to inputs instantly. It is commonly used in embedded systems and critical applications where timing is crucial e.g. flight control systems.
Embedded Operating System
An operating system specifically designed for embedded systems, optimizing resource usage and performance for dedicated tasks. It often operates with limited hardware capabilities and is tailored for specific applications.
BIOS
Basic Input/Output System, a firmware interface that initializes and tests hardware components during the booting process and provides runtime services for operating systems and programs.
Device Drivers
Software components that allow the operating system to communicate with hardware devices, facilitating their operation and management.
Virtual Machine
A software emulation of a physical computer that runs an operating system and applications as if it were a separate physical machine, allowing for multiple operating systems to operate simultaneously on a single hardware platform.
Systems Software
Software designed to manage and control hardware components, enabling the operation of application software and providing essential services for the computer's functioning.
User Interface
The means by which a user interacts with a computer or software, typically through graphical elements, commands, and input devices.
Utility Programs
Software tools that perform maintenance tasks, manage system resources, and enhance the functionality of the operating system. They include file management, disk cleanup, backup, encryption, compression, firewall and antivirus programs.
Disk Defragmentation
The process of reorganizing fragmented data on a hard drive to improve efficiency and speed of data access.
Automatic Backup
A process that automatically saves copies of data at scheduled intervals to prevent data loss and facilitate recovery in case of system failure.
Automatic Updating
A feature that automatically downloads and installs updates for software and operating systems, ensuring that the system is secure and up to date.
Virus Checker
Software designed to detect, prevent, and remove malicious software (viruses) from a computer system.
Compression Software
Software that reduces the size of files or data to save storage space and facilitate faster transmission.
Applications Software
Programs designed to perform specific tasks for users, such as word processing, spreadsheets, and graphic design.
General-purpose Software
Software designed to perform a wide range of tasks, rather than specialized functions, allowing users to accomplish various activities such as productivity, communication, and entertainment.
Special-purpose Software
Software designed for specific tasks or functions, often tailored to meet particular user needs, such as accounting or inventory management.
Off-the-shelf software
Commercially available software that is ready-made for general use, such as Microsoft Office or Adobe Creative Suite.
Bespoke software
Custom software developed to meet the unique requirements of a specific user or organization, often tailored for specialized functions.
Open Source Software
Software whose source code is freely available for modification and distribution, allowing users to collaborate and improve the software.
Closed Source Software
Software that is not made available to the public for modification or inspection, with its source code kept confidential by the developer.
Selecting an Application
The process of evaluating and choosing software applications based on specific needs, cost, features, and compatibility.
Assembler
A type of software that translates assembly language into machine code for execution by a computer's processor.
Low-level Language
A programming language that provides little or no abstraction from a computer's instruction set architecture, typically including assembly languages and machine code.
Instruction Set
A set of commands that a processor can execute, defining the operations, data types, and addressing modes available to a programmer.
Assembler
A software tool that converts assembly language code into machine code, allowing the processor to execute it.
Bytecode
An intermediate form of code generated by an assembler or compiler, which can be executed by a virtual machine or further compiled into machine code.
Source Code
The human-readable instructions written in a programming language, which are compiled or interpreted into machine code for execution by a computer.
Object Code
The machine code output generated by a compiler or assembler, which is ready for execution by a computer's processor.
Compiler
A program that translates source code written in a high-level programming language into object code or machine code, enabling execution by a computer.
Interpreter
A program that translates source code into machine code line-by-line, executing it directly without producing an intermediate object file.
Platform Independence
The ability of software to run on various operating systems or hardware without modification, often achieved through the use of virtual machines or interpreters.
Bytecode Interpreter
A program that executes bytecode, which is an intermediate representation of code compiled from a high-level language, typically allowing for platform independence.
Advantages of Compiler
Compilers translate the entire source code into machine code before execution, resulting in faster runtime performance and optimization opportunities compared to interpreters.
Advantages of Interpreters
Interpreters execute source code line-by-line, allowing for immediate execution and easier debugging, but generally result in slower performance compared to compiled programs.
Lexical Analysis
The first phase of a compiler where source code is converted into tokens, identifying keywords, operators, and identifiers for further processing.
Syntax Analysis
The second phase of a compiler that checks the source code's grammatical structure, ensuring that the sequence of tokens follows the rules of the programming language.
Code Generation
The phase in a compiler where the intermediate representation is translated into machine code or target code, producing an executable program.
Optimisation
The process of improving the efficiency and performance of the generated code by reducing its size and execution time, often involving transformations that preserve the program's semantics.
Symbol Table
A data structure used by a compiler to store information about variables, functions, and other identifiers, including their types, scopes, and memory locations.
Semantic Analysis
The phase in a compiler where the source code is checked for semantic consistency and correctness, ensuring that the statements and expressions conform to the language's rules.
Backus-Naur form
A notation used to express the grammar of a language, providing a formal way to describe its syntax through rules and symbols.
Hash Table
A data structure that implements an associative array, allowing for efficient data retrieval based on a computed hash value.
Reverse Polish Notation
A mathematical notation in which every operator follows all of its operands, eliminating the need for parentheses to denote operation order.
Parsing
The process of analyzing a sequence of symbols, typically in programming languages, to determine its grammatical structure according to a given formal grammar.
Linkers
Software tools that combine multiple object files into a single executable program, resolving references between them.
Loaders
Programs that handle loading executable files into memory for execution, resolving addresses and linking necessary libraries.
Libraries
Collections of precompiled routines that programs can use to perform specific tasks, thereby promoting code reuse.