OCR A Level Computer Science

1.2: Software and software development

Revision tools
You can print this page for a quick reference guide or you can use the tools below to create printable test sheets
1.2.1a: The need for, function and purpose of operating systems.
Software and software development
KeywordDefinition
Device managementThe OS needs to control access to input, output and storage devices
Memory managementThe OS has to allocate sections of RAM to each process and reuse it after it's no longer needed
ProcessSoftware task with memory allocated for instructions and data
Processor managementThe OS needs to share CPU resources by scheduling time slots for each process
User interfaceThe OS needs to provide a user with the ability to control and view hardware and software resources
User managementThe OS needs to provide security and authentication to provide the right level of physical or remote access
1.2.1b: Memory Management (paging, segmentation and virtual memory).
Software and software development
KeywordDefinition
Memory managementThe process of allocating sections of memory to each process and freeing / redistributing memory when it's no longer needed
Pagea fixed size section of memory which can be allocated to store part of the instructions and data for a program
Paging and segmentationthe process of allocating sections of memory to parts of a program so that they can be loaded into RAM when needed
Segmenta variable sized section of memory which can be allocated to store a logical section of either instructions or data for a program
Virtual MemoryAllocating sections of secondary storage to extend the capacity of RAM to store instructions or data which is not being used by the current process
1.2.1c: Interrupts, the role of interrupts and Interrupt Service Routines (ISR), role within the Fetch-Decode-Execute Cycle.
Software and software development
KeywordDefinition
Fetch-Decode-Execute CycleThe sequence of steps that the CPU follows to execute a program. The cycle consists of three stages: fetching the next instruction from memory, decoding the instruction to determine its meaning, and executing the instruction. Interrupts can occur at any point in the fetch-decode-execute cycle and cause the CPU to execute an ISR instead of the next instruction in the program.
InterruptA signal that interrupts the normal flow of a computer's operations and causes the CPU to execute a special routine called an interrupt service routine (ISR).
Interrupt Service Routine (ISR)A special routine that is executed by the CPU when an interrupt is received. The ISR typically performs some necessary action and then returns control to the main program.
1.2.1d: Scheduling: round robin, first come first served, multi-level feedback queues, shortest job first and shortest remaining time.
Software and software development
KeywordDefinition
First Come First Served (FCFS)A scheduling algorithm that assigns tasks to the CPU in the order in which they arrive. This ensures that tasks are executed in the order in which they are submitted, but can lead to long wait times for tasks that arrive later in the queue.
Multi-Level Feedback Queues (MLFQ)A scheduling algorithm that uses multiple queues to organize tasks, with each queue having a different priority level. Tasks are assigned to the queue based on their priority, and the CPU executes the tasks in each queue in turn. This allows the CPU to prioritize tasks with higher priority and improve the overall performance of the system.
Round RobinA scheduling algorithm that assigns tasks to the CPU in a circular fashion, giving each task a fixed amount of time to execute before moving on to the next task. This ensures that each task gets a fair share of the CPU's time, but can lead to poor performance if some tasks take longer to execute than the time slice allocated to them.
SchedulingThe process of determining which tasks should be executed by a computer's CPU and in what order. Scheduling algorithms aim to optimize the use of the CPU and other resources to ensure that tasks are completed efficiently and in a timely manner.
Shortest Job First (SJF)A scheduling algorithm that assigns tasks to the CPU based on their estimated execution time. Tasks with shorter estimated execution times are given higher priority and executed before tasks with longer estimated execution times. This can improve the overall performance of the system, but can be difficult to implement in practice because it requires accurate estimates of task execution times.
Shortest Remaining Time (SRT)A scheduling algorithm that is similar to SJF, but takes into account the remaining execution time of each task rather than the estimated execution time. This allows the CPU to adjust its scheduling decisions as a task is executing, and can improve the overall performance of the system. However, like SJF, it requires accurate estimates of task execution times and can be difficult to implement in practice.
1.2.1e: Distributed, embedded, multi-tasking, multi-user and Real Time operating systems.
Software and software development
KeywordDefinition
Distributed Operating SystemAn operating system that is distributed across multiple computers and allows them to work together as a single system. Distributed operating systems provide services such as file sharing and communication between computers, and can improve the performance and reliability of a system by allowing tasks to be distributed across multiple CPUs.
Embedded Operating SystemAn operating system that is designed for use in embedded devices, such as smartphones, tablets, and other small computing devices. Embedded operating systems are typically compact and efficient, and are designed to support the specific functions and features of the device they are running on.
Multi-tasking Operating SystemAn operating system that allows multiple tasks to be executed concurrently, or at the same time. Multi-tasking operating systems provide mechanisms such as preemptive scheduling and multitasking support to allow multiple programs to run concurrently on a single CPU.
Multi-user Operating SystemAn operating system that allows multiple users to use the same computer simultaneously. Multi-user operating systems provide mechanisms such as user accounts and permissions to control access to the system and ensure that users can work independently without interfering with each other.
Non-preemptive schedulinga type of scheduling algorithm that does not allow tasks to be interrupted once they have started executing.
Preemptive schedulinga type of scheduling algorithm that allows a higher-priority task to interrupt and temporarily suspend the execution of a lower-priority task.
Real Time Operating System (RTOS)An operating system that is designed for real-time applications, which require quick and deterministic responses to events. RTOSs provide mechanisms such as real-time scheduling and fast interrupt handling to ensure that critical tasks are executed promptly and reliably.
1.2.1f: BIOS.
Software and software development
KeywordDefinition
BIOS (Basic Input Output System)is a software program that is stored in a computer's non-volatile memory (usually ROM or flash memory) and is responsible for booting the computer and providing basic services to the operating system.
Non-volatile memoryMemory that retains its contents when the power is turned off.
POST (Power On Self Test)a series of checks which is carried out on computer hardware after it is switched on
User interfaceA means of interacting with a computer, such as a graphical user interface (GUI) or command-line interface (CLI).
1.2.1g: Device drivers.
Software and software development
KeywordDefinition
BusA communication channel that connects the various components of a computer, allowing them to send and receive data. Buses can be internal or external, and can use different technologies such as USB, PCI, or Ethernet.
Device driverA software program that allows a computer's operating system to communicate with a specific hardware device. Device drivers provide a standardized interface between the operating system and the device, allowing the operating system to send commands to the device and receive data from it.
Hardware deviceA physical component of a computer, such as a keyboard, mouse, or disk drive. Hardware devices are typically connected to the computer via a bus or other interface, and are controlled by device drivers to perform specific functions.
InterfaceA standardized way of communicating between two systems, such as a hardware device and an operating system. Interfaces define the protocols and rules for exchanging data and commands between the two systems, allowing them to work together seamlessly.
Operating systemThe software that manages the hardware and software resources of a computer, and provides a platform for running applications. Operating systems provide a number of services to applications and users, including managing memory, scheduling tasks, and providing access to hardware devices.
1.2.1h: Virtual machines, any instance where software is used to take on the function of a machine, including executing intermediate code or running an operating system within another.
Software and software development
KeywordDefinition
HardwareThe physical components of a computer, such as the CPU, memory, and storage devices. Hardware is the tangible part of a computer, and is responsible for performing the actual computation and data processing tasks.
Intermediate codeA representation of a program that is not in the native machine code of a particular processor, but can be executed by a virtual machine or other interpreter. Intermediate code is often used in just-in-time (JIT) compilers and other systems that need to execute code quickly, but do not have access to the native machine code of the target platform.
Operating systemThe software that manages the hardware and software resources of a computer, and provides a platform for running applications. Operating systems provide a number of services to applications and users, including managing memory, scheduling tasks, and providing access to hardware devices.
Virtual machineA software program that simulates the hardware and software of a physical computer, allowing multiple operating systems or applications to run on the same physical hardware. Virtual machines provide a way to run multiple operating systems or applications on a single computer, and can be used for testing, development, or isolation purposes.
VirtualizationThe process of using software to simulate the hardware and software of a physical computer, allowing multiple operating systems or applications to run on the same physical hardware. Virtualization allows a single physical computer to be divided into multiple virtual machines, each with its own operating system and applications.
1.2.2a: The nature of applications, justifying suitable applications for a specific purpose.
Software and software development
KeywordDefinition
ApplicationsPrograms or software that are designed to perform specific tasks or functions for the user. Applications can be standalone programs or can be integrated into larger systems, and can be used for a wide variety of purposes such as productivity, entertainment, or communication.
JustifyingProviding a rationale or explanation for the use of a particular application or system. Justifying the use of an application involves evaluating its suitability for the specific purpose at hand, and explaining why it is the best choice given the available options.
PurposeThe intended use or goal of a particular application or system. Different applications are designed for different purposes, and the suitability of an application for a specific purpose depends on its features, capabilities, and performance.
SuitabilityThe extent to which an application or system is appropriate or well-suited for a specific purpose. The suitability of an application depends on its capabilities, performance, and other factors, and can vary depending on the specific requirements and context of the situation.
1.2.2b: Utilities.
Software and software development
KeywordDefinition
AdministrationThe process of managing a computer or system, including tasks such as configuring settings, managing users and permissions, and monitoring system performance. Administration tasks are typically performed by system administrators or other IT professionals who are responsible for the overall operation and management of a computer or network.
Disk cleanupThe process of removing unnecessary files and data from a computer's storage devices, such as hard drives or solid-state drives. Disk cleanup can free up space on the storage device, improve performance, and reduce the risk of errors or corruption.
MaintenanceThe process of keeping a computer or system in good working order and ensuring that it is running efficiently and reliably. Maintenance tasks can include cleaning up temporary files, checking for system errors, and updating software and drivers.
System monitoringThe process of monitoring the performance and operation of a computer or system, including tasks such as checking resource usage, identifying potential problems, and generating reports. System monitoring can help identify issues before they become serious problems, and can provide valuable data for troubleshooting and optimization.
UtilitiesPrograms or software that are designed to perform specific tasks or functions that are related to the maintenance or administration of a computer or operating system. Utilities are typically small, specialized programs that are used for tasks such as disk cleanup, system monitoring, or data backup and recovery.
1.2.2c: Open source vs closed source.
Software and software development
KeywordDefinition
Closed sourceA type of software that is not distributed with its source code, and is typically protected by copyright and other intellectual property laws. Typically developed and maintained by a single entity, and is often sold or licensed to users who are not allowed to view or modify the source code.
CommunityA group of people who share a common interest or goal, and who work together to achieve that goal. In the context of open source software, the community is the group of volunteers who contribute to the development and maintenance of the software.
LicenseA legal agreement that specifies the terms and conditions under which a piece of software can be used, modified, and distributed. Open source licenses typically allow users to access and modify the source code of the software, and may also have other provisions such as requiring that any modifications be released under the same license.
Open sourceA type of software that is distributed with its source code, and allows users to view, modify, and distribute the code freely. Typically developed and maintained by a community of volunteers, and is often released under a license that allows users to access and modify the source code.
Source codeThe human-readable version of a program or software, written in a programming language such as C, Java, or Python. Source code is the original form of a program, and is typically compiled or interpreted into machine code that can be executed by a computer.
1.2.2d: Translators:Interpreters, compilers and assemblers.
Software and software development
KeywordDefinition
AssemblersPrograms that convert assembly language code, which is a low-level language that is closer to machine code, into machine code that can be executed by a computer. They are typically used to write system-level code or to optimize performance, and are able to generate machine code that is more efficient than code generated by a compiler.
CompilersPrograms that translate source code written in a high-level programming language into machine code that can be executed by a computer. They convert the entire source code into machine code at once, and generate a standalone executable file that can be run without the need for an interpreter.
Intermediate codea representation of a program that is not in the native machine code of a particular processor, but can be executed by a virtual machine or other interpreter.
InterpretersPrograms that execute instructions written in a high-level programming language by converting them into machine code at runtime. They read and execute instructions in the source code one at a time, without the need for a separate compilation step.
Machine codeThe native language of a computer, consisting of binary instructions that can be directly executed by the computer's CPU.
TranslatorsPrograms or software that convert high-level source code into machine code, or to convert code written in one programming language into another.
1.2.2e: Stages of compilation (lexical analysis, syntax analysis, code generation and optimisation).
Software and software development
KeywordDefinition
Code generationThe process of converting the intermediate code or abstract syntax tree of a program into machine code that can be executed by a computer.
Lexical analysisThe process of scanning the source code of a program, removing whitespace and comments and dividing it into small units called tokens, which represent the basic elements of the language such as keywords, operators, and identifiers.
OptimizationThe process of improving the performance, efficiency, or other characteristics of a program by modifying its code or representation.
Syntax analysisThe process of examining the source code of a program and checking it for proper structure and adherence to the rules of the programming language.
1.2.2f: Linkers and loaders and use of libraries.
Software and software development
KeywordDefinition
DependenciesThe relationships between different object files or libraries that need to be resolved by the linker in order to create a complete and correct executable file.
Dynamic linkingThe process of linking object files or libraries at runtime, instead of at compile time. Static linking: The process of linking object files or libraries at compile time, instead of at runtime.
External referencesReferences to symbols or entities that are defined in another object file or library, and need to be resolved by the linker in order to create a complete and correct executable file.
LibrariesCollections of pre-compiled code and data that can be linked into an executable file or loaded at runtime by a program.
LinkersPrograms that combine multiple object files or libraries into a single executable file that can be run on a computer.
LoadersPrograms that load executable files or libraries into memory and prepare them for execution by a computer.
Static linkingproduces a standalone executable that contains all of the code and data from the linked object files and libraries, and does not require any additional files or libraries to be present in order to run.
1.2.3a: Understand the waterfall lifecycle, agile methodologies, extreme programming, the spiral model and rapid application development.
Software and software development
KeywordDefinition
Agile methodologiesA set of software development methodologies that emphasize collaboration, flexibility, and iterative development. These methodologies include Scrum, Kanban, and Lean, and are designed to be responsive to changing requirements and to allow for rapid, iterative development of software.
Extreme programmingA software development methodology that emphasizes collaboration, simplicity, and frequent feedback in order to produce high-quality software quickly and efficiently.
Rapid application developmentA software development methodology that is based on the idea of quickly and iteratively developing a working prototype of a software application, and then refining and improving it based on feedback from users and stakeholders. It is designed to be fast, flexible, and responsive to changing requirements
Spiral modelA software development methodology that is based on the idea of incrementally building and refining a product through multiple cycles of development. Each cycle involves a series of phases such as planning, risk analysis, engineering, and evaluation, and the product is gradually refined and improved through each cycle.
Waterfall lifecycleA software development methodology that involves a sequential, linear process in which each phase of development must be completed before the next phase can begin.
1.2.3b: The relative merits and drawbacks of different methodologies and when they might be used.
Software and software development
KeywordDefinition
Agile methodologiesA set of software development methodologies that are based on the principles of agile software development, and that emphasize collaboration, flexibility, and iterative development.
Extreme programmingA software development methodology that emphasizes collaboration, simplicity, and frequent feedback in order to produce high-quality software quickly and efficiently.
Rapid application developmentA software development methodology that is based on the idea of quickly and iteratively developing a working prototype of a software application, and then refining and improving it based on feedback from users and stakeholders.
Spiral modelA software development methodology that combines elements of the waterfall model and the iterative model, and that is based on the idea of incrementally building and refining a product through multiple cycles or "spirals" of development.
Waterfall modelA software development methodology that involves a sequential, linear process in which each phase of development must be completed before the next phase can begin.
1.2.3c: Writing and following algorithms.
Software and software development
KeywordDefinition
AlgorithmA sequence of well-defined, step-by-step instructions for solving a problem or performing a task. An algorithm is a systematic, repeatable process for achieving a desired outcome, and is typically expressed in a notation that is precise, unambiguous, and easy to understand and implement.
Control structuresThe basic building blocks of an algorithm, such as conditional statements, loops, and subroutines, that are used to control the flow of execution and to make decisions based on the input or state of the algorithm.
FlowchartA diagram that uses standardized symbols and notation to represent the steps of an algorithm or process, and to show the flow of control and the relationships between different steps.
PseudocodeA notation for expressing algorithms that is similar to a programming language, but is more generic and abstract, and is not tied to any particular programming language or implementation.
Trace tableA table that is used to trace the execution of an algorithm, and to track the values of variables and other data as the algorithm progresses.
1.2.4a: Need for and characteristics of a variety of programming paradigms.
Software and software development
KeywordDefinition
Low-level programming languagesProgramming languages that are designed to be close to the hardware and to provide an efficient representation of a computer program.
Object-oriented programmingA programming paradigm that is based on the idea of using objects and classes to represent data and behaviour, and of using inheritance and polymorphism to reuse and extend code.
Procedural programmingA programming paradigm that is based on the idea of using procedures or subroutines to modularize a program, and of using control structures such as loops and conditional statements to specify the order in which the procedures should be executed.
Programming paradigmThe style or approach to programming that is based on different assumptions, concepts, and principles used to solve different types of problems using a programming language
1.2.4b: Procedural languages.
Software and software development
KeywordDefinition
Conditional statementA control structure that is used to make decisions and to execute different statements or instructions based on the value of a conditional expression.
Control structureA fundamental building block of an algorithm or a program, such as a conditional statement or a loop, that is used to control the flow of execution and to make decisions based on the input or state of the program.
FunctionA named block of code that returns a value to the caller when it has finished executing.
Procedural programmingA programming paradigm that is based on the idea of using procedures or subroutines to modularize a program, and of using control structures such as loops and conditional statements to specify the order in which the procedures should be executed.
ProcedureA named block of code that performs a specific task or function, and that can be called from other parts of a program.
1.2.4c: Assembly language (including following and writing simple programs with the Little Man Computer instruction set).
Software and software development
KeywordDefinition
ADDAdds the value in a specified memory location to the value in the accumulator, and stores the result in the accumulator.
BRAUnconditionally jumps to a specified memory location.
BRPConditionally jumps to a specified memory location if the value in the accumulator is positive.
BRZConditionally jumps to a specified memory location if the value in the accumulator is zero.
HLTHalts the execution of the program.
INPReads a value from the input device and stores it in the accumulator.
LDALoads the value from a specified memory location into the accumulator.
OUTWrites the value in the accumulator to the output device.
STAStores the value in the accumulator in a specified memory location.
SUBSubtracts the value in a specified memory location from the value in the accumulator, and stores the result in the accumulator.
1.2.4d: Modes of addressing memory (immediate, direct, indirect and indexed).
Software and software development
KeywordDefinition
Direct addressingA mode in which the operand is specified using a memory address or a memory location, and the value of the operand is accessed directly from that location.
Immediate addressingA mode in which the operand is specified directly in the instruction, as a constant or literal value.
Indexed addressingA mode in which the operand is specified using a memory address or a memory location, and an index or offset, and the value of the operand is accessed by adding the index or offset to the memory address to form the actual memory address of the operand.
Indirect addressingA mode in which the operand is specified using a memory address or a memory location, but the value of the operand is accessed indirectly, by using the value stored at that location as a pointer or reference to the actual operand.
1.2.4e: Object-oriented languages with an understanding of classes, objects, methods, attributes, inheritance, encapsulation and polymorphism.
Software and software development
KeywordDefinition
AttributesVariables or data fields that are associated with a class or an object, and that represent the state or the properties of the class or the object.
ClassesBlueprints or templates that define the structure and behaviour of objects, and that specify the attributes, methods, and inheritance relationships of objects.
EncapsulationThe process of hiding the implementation details or the internal structure of a class or an object, and of control access to a private attribute using a public method
MethodsFunctions or procedures that are associated with a class or an object, and that define the behaviour of the class or the object.
ObjectsInstances of classes, which are the basic building blocks of object-oriented languages, and which represent the data and behaviour of a program.
PolymorphismThe ability of an object to behave differently depending on its type, its class, or its context, and of a method to operate on objects of different classes without knowing their specific type or class.