Foundations of Computer Systems Flashcards
Hardware
The physical components that make up a computer
Software
The programs and applications used in the running of the computer
Application Software
Software that allows users to perform non-computer or real-world tasks
Types of application software
- General purpose software = Software that can be used to perform a wide variety of tasks
- Special purpose software = Software that has been desgined to do one particular task
- Bespoke software = Software made for a specific user and made to meet the user’s needs
Systems Software
Software that performs the tasks needed to operate the hardware and ensure that the computer works as efficiently as possible
Types of system software
- Operating system = A program or suite of programs that controls the entire operation of the computer - links together the hardware, the application programs and the user
- Library program = A prewritten and precompiled program that can be added into another program
- Program library = A collection of compiled routines that other programs can use
- Utility program = A systems program designed to perform a very specific task related to working with computers
(ex: disk formatting, backup programs)
Benefits of library programs
Library programs save the programmer time and cut down on how much code needs to be written since the code has already been written and tested
Translators
Translators convert a computer program into a form that can be run and processed by a computer (ex: binary machine code)
Compiler
A compiler translates the whole of a high-level language program into a machine code object program which can be run independently of compilers
Assembler
An assembler translates an assembly language source program into a machine code object program for execution
It takes each assembly mnemonic instruction and converts them into their binary code equivalents
They are platform specific - a different assembler must exist for each processor instruction set
Interpreter
An interpreter converts a high-level source program one statement at a time - it executes each statement and moves on to the next
No object code is generated
Operating System Roles
The OS has two essential roles - managing hardware resources and hiding the complexity of the hardware from the user
- Processors; The OS has to allocate processor time to each of the processes (running programs)
- Storage; The OS has to allocate space in the main memory for each process and has to keep track of which parts of the main memory are being used
- Input/Output devices; The OS has to communicate with the various peripherals to ensure that data is transferred successfully
- Data/File management = The OS is responsible for storing and retrieving data onto secondary storage
Low-Level Languages
Machine code is the only program code that the computer can process - instructions and data are written in binary code
- Each processor has its own machine code since different processors have different components and registers
- Hexadecimal is often used since instructions can be displayed in fewer digits and is easier to read and understand
Assembly languages use mnemonics instead of numbers to represent instructions and can use symbolic names to represent memory addresses
- Assembly language programs need to be translated with an assembler before it can be executed
- Each processor has its own assembly language since they have their own machine code
- Assembly language is still used since it can perform operations that can’t be done by high-level languages, such as directly addressing registers
High-Level Languages
These languages are imperative, meaning that the instructions in the program are executed in the order determined by the programmer
They use English-like keywords and have structures for assignments, selection and iteration. This makes them easier to read and understand
One high level language statement is translated into several machine code instructions, which makes high level language programs shorter than low level language programs
Benefits and downsides to high level programming languages
Benefits:
- Usually shorter than low level language programs since one high level language statement is translated into multiple low level language instructions
- Easier to read and understand due to English-like keywords
- Machine independent; a program written be executed on any computer with a suitable compiler or interpreter
Downsides:
- A compiler or interpreter must be used to translate high level language programs into machine code objects, which can take time