Foundations of Computer Systems Flashcards

1
Q

Hardware

A

The physical components that make up a computer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Software

A

The programs and applications used in the running of the computer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Application Software

A

Software that allows users to perform non-computer or real-world tasks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Types of application software

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Systems Software

A

Software that performs the tasks needed to operate the hardware and ensure that the computer works as efficiently as possible

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Types of system software

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Benefits of library programs

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Translators

A

Translators convert a computer program into a form that can be run and processed by a computer (ex: binary machine code)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Compiler

A

A compiler translates the whole of a high-level language program into a machine code object program which can be run independently of compilers

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Assembler

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Interpreter

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Operating System Roles

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Low-Level Languages

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

High-Level Languages

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Benefits and downsides to high level programming languages

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Benefits and downsides of low-level languages

A

Benefits:

  • Execution is quick; machine code is executed directly by the processor and assembly language is translated quickly by an assembler since each instruction has an equivalent machine code equivalent

Downsides:

  • Programs are processor specific and aren’t portable, unlike high level language programs
  • Code is difficult to understand
  • Debugging is difficult because low level language code is difficult to understand
17
Q

Intermediate languages

A

Some compilers don’t convert source programs into machine code object programs but instead into an intermediate code program

  • This intermediate code program can’t be executed directly but needs to be interpreted by a virtual machine or be compiled before it is executed

A compiler that uses an intermediate language will first translate high-level code into an intermediate language, then it will use a virtual machine to execute the intermediate code on different processors

  • Each processor instruction set will have its own virtual machine
  • Using an intermediate language allows the interpreter to translate the source code just
    once, while still being able to execute the translated code with a variety of different
    processors
18
Q

Source code vs. Object code

A

Source code is the name given to the input to a translator.
For an assembler, this is assembly language code and for compilers and interpreters, this will be code written in a high-level language.

A translator’s output is called object code and is produced from source code.

19
Q

Logic gates

A
  • NOT gate = Reverses the input
  • AND gate = Outputs 1 if both inputs are 1, else it outputs 0
  • OR gate = Outputs 1 if at least one of the inputs is 1, else it outputs 0
  • XOR gate = Outputs 1 if both inputs are different, else it outputs 0
  • NOR gate = Outputs 1 if both inputs are 0, else it outputs 0
  • NAND gate = Outputs 1 if at least 1 input is 0, else it outputs 0
20
Q

Adders

A

An adder is a logic circuit that is used to add Boolean values

Half-adder = A logic circuit with two inputs, two outputs and two logic gates - this circuit can be used to add two Boolean values

  • Formed with an XOR gate and an AND gate

Full-adder = A logic circuit with three inputs and two outputs, enabling it to input two Boolean values and a carry bit from a previous, less significant operation.

  • Combines 2 half-adders and an OR gate to create a full-adder
21
Q

Edge-triggered D-type Flip Flop

A

An edge-triggered D-type flip flop is a logic circuit that can store 1 bit and flip it between 0 and 1

  • Has two inputs; a data input and a clock signal

The clock signal is provided by another circuit in the computer - this signal changes state at pulses

The output of the flip flop is only changed when the clock pulse is at a rising edge from low voltage to high voltage
- It doesn’t change on a falling edge from high voltage to low voltage

These circuits are used in RAM to store bits as memory units

22
Q

Boolean algebra

A

AND rules:
- A ∧ 0 = 0
- A ∧ 1 = A
- A ∧ A = A
- A ∧ ¬A = 0

OR rules:
- A + 0 = A
- A + 1 = 1
- A + A = A
- A + ¬A = 1