Hardware refers to the physical components of a computer. This includes both internal and external features
Software refers to program code that carries out a task - it is non-physical. Can be split into system software and application software
System software operates and maintains the computer. Includes the operating system, utility programs, libraries and translators
Application software completes tasks for the user, not the computer - such as browsers, word processors and games.
Application software relies on system software to keep the computer functional, but without application software, system software would have no purpose!
Some applications are cloud-based, meaning it doesn't need to be downloaded or installed and can be used anywhere with an internet connection
Utility software is often small and concerned with the maintenance of the computer - 'housekeeping'. Includes anti-virus software, defragmentation software, and compression software. Ensures the computer continues to run smoothly
A disk defragmenter is a program that reorganises a hard disk so that files which have been split up are recombined into continuous blocks, increasing the speed at which it can be read
Translators convert source code into machine code (more in SLR15)
Assemblers covert low-level languages into machine code
Interpreters directly covert a high-level language into machine code line by line.
Compilers convert an entire program into object code which can be distributed to any compatible system
Libraries contain pre-written code that can be imported into your own to save time as you do not need to solve a problem that has already been solved.
An operating system hides the complexities of the hardware from the user, so that they can use a computer without needing to know how it works
Memory management - the OS manages everything that is stored in RAM. If more space is needed than available, it decides what to move into virtual memory, and retrieves it as necessary
Processor scheduling - the OS schedules the tasks the processor must carry out. This is important when multiple apps are running at the same time. A single-core processor can only run one at a time, but by performing different tasks in sequence, it gives the impression that they are running simultaneously. This is called multi-tasking
The scheduler is the part of the OS that handles scheduling. It aims to maximise throughput, be fair to all users on multi-user systems, provide acceptable response time, and ensure hardware resources are kept as busy as possible
Backing store management - the OS must know where files are stored so they can be loaded quickly when requested. Equally it must know what parts of storage are free when new files must be saved
Peripheral management - the OS handles communication with peripherals and ensures they do not conflict with other processes in the computer
Interrupt handling - the OS is responsible for handling interrupts and, in the event of errors, displaying the relevant message for the user. This process is what makes multi-tasking possible