Accumulator
A register in the CPU that stores data currently being used by the CPU.
Address bus
Used to transfer information about where data should reside in memory
Arithmetic Logic Unit
The part of the CPU that performs arithmetic computations and logical operations.
Buses
A physical set of parallel wires connecting and carrying groups of bits between several components of a computer.
Cache
A small and fast but expensive memory in the CPU used to stores instructions and data that are accessed regularly.
Clock speed
The frequency at which the internal clock generates signals switching between 0 and 1. It controls how often instructions are executed and data is fetched.
Contemporary processor architecture
A modern computer architecture combining elements of both Von Neumann and Harvard architectures.
Control Bus
This bus carries command and control signals to and from every other component of a computer.
Control Unit
Component of a processor that directs and coordinates most of the operations in the computer.
Current Instruction Register (CIR)
A register inside the CPU which holds the current instruction (not the data)
Data bus
The bus used to transfer actual data between main memory and the MDR
FDE cycle
Fetching an instruction from memory, decoding what the machine code means, then running the instruction with the result stored in the accumulator
Harvard Architecture
A computer architecture with physically separate storage and signal pathways for instructions and data. These early machines had data storage entirely contained within the central processing unit, and provided no access to the instruction storage as data.
Memory Address Register (MAR)
Holds the address in memory of the instruction currently being executed.
Memory Data Register (MDR)
A register that contains the data value being fetched or stored
Cores
A unit that handles instructions with its own FDE cycle. Multi-core processors have multiple cores that can run simultaneously.
Pipelining
The simultaneous decoding of several instructions by decoding the next instruction and fetching the one after while the current one is being decoded.
Program Counter (PC)
A special purpose register that stores the address of the next instruction to execute.
Registers
Small, high-speed storage locations that temporarily hold data and instructions.
Von Neumann Architecture
A computer architecture with a single control unit, using the FDE cycle and with data and instructions stored together.
Complex Instruction Set Computer (CISC)
A design that produces a complicated and expensive integrated circuit capable of performing a large variety of complex instructions. Complex instructions can be executed with few machine cycles.
Graphics Processing Unit (GPU)
A specialised processor optimized to perform graphics calculations with a huge number of small cores that allows for efficient parallel computation (SIMD).
Multicore systems
Several CPU cores are incorporated into a single processor chip to help distribute workload
Parallel processing system
Splitting a job into several subtasks which are simultaneously carried out by each core in the system.
Reduced Instruction Set Computer (RISC)
A simpler processor design that can only execute a single simple instruction each clock cycle. This uses more RAM but allows pipelining.
Flash Storage
A solid state technology that stores data on a collection of memory chips. No moving parts as data is accessed by software.
Input devices
Peripheral devices that allow the user to communicate and to pass readable data into a computer, decode it and send it to the CPU.
Magnetic storage
Relies on the polarisation of magnetic particles to store bits on a magnetic material which is typically moved mechanically. A high capacity and low cost means of storage.
Optical storage
Data is stored in the reflectivity (pits and lands) of a surface, and is read and written to by a laser.
Output devices
Peripheral devices that convert signals from a computer into a human-readable form.
Random Access Memory
Memory used to store programs and data in use by the computer. Quick access times but all data is lost when power to the computer is lost (volatile)
Read Only Memory
Memory used to store programs or data that is permanently required to boot up and run the computer. Can only be read and is non-volatile
Storage device
Any medium on which data can be stored even when powered off
Virtual storage
Using the hard disk as though it were an extension of memory to free up more RAM for current programs.
BIOS
A program that initialises and tests whether system hardware is functional and then loads the operating system from the hard disk into RAM when the computer is turned on.
Device drivers
A program supplied with a peripheral device that allows the OS to control and communicate with the device.
Distributed Operating System
The operating system is spread over multiple computer servers on a network, acting as a single system to parallel process a job
Embedded Operating System
A specialised operating system with limited resources and functionality, built in to control a single machine.
first come first served (FCFS)
A scheduling algorithms where processes are dealt with in the order they arrive (a queue)
Intermediate code
Code partly translated between high-level and machine language produced by a compiler.
Interrupts
A signal from hardware, software or the clock to alert the CPU. If the interrupt is a higher priority than the current task, the current routine pauses and resumes after the interrupt is executed.
Interrupt Service Routine (ISR)
If an interrupt is of higher priority that the current task, register contents are temporarily transferred onto the system stack at the end of the current FDE cycle and the interrupt is handled.
Memory management
The efficient organisation and allocation of main memory to the programs in use
Multi-Level Feedback Queue (MLFQ)
A complex scheduling algorithm that deals with tasks based on a set of priorities and rules across different league tables, jobs in a certain table get promoted up or down their table based on these rules and can then end up in totally different tables if they relegated.
Multi-tasking operating systems
An operating system capable of running multiple tasks simultaneously
Multi-user operating systems
An operating system consisting of one mainframe computer with multiple terminals that allow multiple users to access the computer's resources. Each user is given a time slice of the mainframe processor
Operating system
A set of programs managing the operating of the computer that is loaded into RAM every time the computer is turned on. It allows the user connection to the hardware.
Paging
Partitioning memory into fixed sized physical divisions called pages. Processes in memory are assigned an appropriate number of pages.
Real-Time Operating System
An operating system where data is processed as it comes in, with responses generated in real time
Round robin
A scheduling algorithms where each process is given an equal time slice and is dealt with on a first in first out basis. If a process doesn't finish in the allotted time then it is moved to the end of the queue
Scheduling
Allocating processor time to each application to ensure processor time is used as efficiently as possible when multitasking
Segmentation
Partitioning memory into variable size, logical divisions called segments. A large programs can be executed by consecutively running its segments
Shortest job first
A scheduling algorithm that picks the process with shortest estimated running time and runs it until it finishes.
Shortest remaining time
A scheduling algorithm that picks the process with shortest estimated time remaining to finish. If a process with a shorter time is added, the scheduler switches processes
Virtual machines
Any instance where software is used to take on the function of a machine, including intermediate code or running an operating system within another
Virtual memory
An allocated area of secondary storage where pages of inactive jobs are swapped in to free up enough RAM for the current job
Applications
A program that can be run on a computer, allowing the user to carry out specific tasks
Assembler
A translator in a low level language which converts assembly language into machine code
Closed source
Proprietary software sold with a license and restrictions on how users can use it. The source code isn't available to users.
Code generation
The third and final of compilation, where an equivalent machine code program is produced
Compilation
The process of analysing high level language source code and converting it into machine code
Compilers
A translator that converts source code into object code that cannot be easily converted back into a human-readable format. The code is translated all at the same time rather than line by line.
Interpreters
A translator which checks a source program for errors line by line, translates it to machine code and executes the file.
Lexical analysis
The first stage of compilation, where extra spaces and comments are removed from the source code and it is searched for simple errors. Keywords, constants and variables are replaced by tokens. Variable names are loaded into the symbol table
Libraries
A collection of pre-compiled routines which can be incorporated into a program.
Linkers
A program which places the appropriate machine addresses in the call and returns instructions of a compiled program so all the other required object code files and modules are linked together
Loaders
A program that loads the executable object program and its associated libraries into memory before it is run.
Open source
Software which has code that is readily available to view, redistribute or modify
Optimisation
During code generation, the object code is made as efficient as possible by removing redundancies to produce code that gives the same result
Syntax analysis
The second stage of compilation, the object code is made as efficient as possible by removing code redundancies (repeated code) to produce code that gives the same result
Translator
A program which converts code from one computer language to another
Utilities
System software with a specific purpose, usually maintenance such as backing up files, diagnosing issues or setting up firewalls
Agile Methodology
An iterative process that aims to improve the flexibility of the programmer and meet the requirements of the end-user. Prototypes are developed in parallel so that it can adapt to changes in user requirements quickly.
Extreme programming
Type of agile methodology intended to improve software quality and responsiveness to changing customer requirements. Programmers work in pairs with the focus being on high quality code.
Rapid Application Development (RAD)
Prototypes developed and evaluated against user requirements until the prototype can become the final product.
Spiral model
An iterative version of the Waterfall model where stages are refined and repeated until the final product is complete. The first cycle works towards an initial prototype, and each successive cycle produces a refined prototype
Waterfall lifecycle
Sequential stages, each stage must be completed for the next to follow, previous stages can be returned to if the full cycle is repeated again.
Assembly language
A low level language closely related to (but more advanced than) machine code. It uses mnemonics for instructions.
Attributes
Data recorded as a variable associated with an object.
Classes
A template defining the attributes and methods that can be used to create an object.
Direct addressing
The operand stores the memory address of the value to be operated on by the operator. (The most simple addressing mode in assembly language).
Encapsulation
A method of maintaining data integrity by only allowing class methods to access data in an object's attributes.
Immediate addressing
An addressing mode in assembly language in which the instruction holds the value of the operand rather than its address.
Indexed addressing
An addressing mode in assembly language where the address of the operand required is calculated by adding a constant from the index register to the absolute address in the instruction.
Indirect addressing
An addressing mode in assembly language where the operand stores the address of the location holding the memory address of the required data.
Inheritance
The concept of subclasses inheriting the methods and attributes of its parent class
Object-oriented language
Programming languages where the code is made of units called objects which are instances of a class. Objects have their own attributes and behaviours and can interact with each other.
Objects
An instance of a class. The behaviour of an object depends on how its attributes were defined.
Polymorphism
Objects of different classes can use the same method to perform an action
Procedural languages
A high level language where statements are grouped into self-contained blocks called functions and procedures. They have built in data types and data structures.
Programming paradigms
A style of computation and programming, chosen according the problem at hand.
Asymmetric encryption
An encryption technique where a public key is used to encrypt the data and a private key is used to decrypt.
Dictionary coding
A type of lossless compression where text is searched for entries that match the entries present in the dictionary. Entries are substituted by a unique code which can then be translated
Hashing
A one-way transformation of data into a hash value. The hash value cannot be returned into the original value.
Lossless compression
A compression algorithm that allows the original full sized file to be decompressed
Lossy compression
A compression algorithm that removes non-essential data from a file leading to a considerable decrease in file size. The original file is unrecoverable.
Run length encoding
A type of lossless compression where repeated occurrences of the same data are stored as a single data value alongside their counts
Symmetric encryption
An encryption technique where the same key is used to both encrypt and decrypt the data.
Atomicity
All transactions must succeed or fail, no inbetween
Consistency
Each transaction must obey the defined validation rules of the database to main referential integrity.