2. Software and Software Development Flashcards

1
Q

What is Hardware?

A

Hardware is the physical components of the computer.

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

What is Software?

A

Software is the computer programs which run on the computer.

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

What is the purpose of the Operating System?

A

The Operating System provides a software interface for the user and Applications to work with the Hardware of the computer. The Operating System will:
- manage system resources, e.g. CPU (Process Scheduling), and Memory Management.
- manage users and security.
- provide an interface for interacting with the computer.

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

What are Paging and Segmentation?

A

Paging and Segmentation are techniques for managing memory. Paging splits memory into fixed size Pages, and a process may be allocated multiple non-contiguous Pages for its data and instructions. A virtual addressing system will be used to make these Pages appear as contiguous to the program. Segmentation is where contiguous Segments of memory are allocated to processes depending upon their requirements.

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

What is Virtual Memory?

A

When there is not enough available RAM to allocate to a process, the Operating System will move an idle process to Secondary Storage. This makes available the memory required for allocation. This is called Virtual Memory because it effectively increases the available memory by using Secondary Storage to increase capacity. However, swapping processes in and out of Secondary Storage takes time, and this can reduce the efficiency of the computer.

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

What is Memory Management?

A

Memory Management is where the Operating System allocates space in RAM to a program whilst it is running. A program needs to store both its Instructions and Data in RAM whilst executing as a process. If there is not enough RAM to store all the currently executing processes then an idle process may be moved to Secondary Storage to make space. This process is called Virtual Memory and can slow the computer because it is swapping data between RAM and Secondary Storage which takes clock cycles.

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

What is Process Scheduling?

A

Process Scheduling is where the Operating System allocates time on the CPU for a process to execute instructions. A process usually does not run on the CPU until it is finished, instead it will execute a number of instructions and then be saved in an idle state until the CPU becomes available again. This allows a computer with a single core CPU to perform Multi-tasking by switching between running processes. Scheduling is organised such that all processes should get a fair amount of time on the CPU and are not starved of resources.

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

Compare Round Robin, First Come First Served, Shortest Remaining Time, Shortest Job First, and Multi-Level Feedback Queues for Process Scheduling.

A

Round Robin - a queue of processes is maintained, each process is given a short period on the CPU before being returned to the back of the queue.

First Come First Served - processes are executed in the order that they are received.

Shortest Remaining Time - processes with the fewest remaining instructions are executed first.

Shortest Job First - processes with the shortest total execution time are executed first.

Multi-Level Feedback Queues - a more complicated algorithm which schedules processes according to several factors such as: length of process, whether it is I/O bound, and their individual requirements of the processor.

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

What is Backing Storage Management?

A

Backing Storage is the hardware on the computer which is used for persistent storage of data. This will be Secondary Storage devices such as Hard Drives which contains Files and Folders. The Operating System will manage this storage.

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

What is Peripheral Management?

A

A Peripheral is a device which is connected to the computer. The Operating System will have Device Drivers which are software which enable Applications to communicate with the Peripheral. The Operating System will also allow configuration of the Peripherals.

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

What is an Interrupt, what is Interrupt Handling?

A

An Interrupt is an event which must be handled immediately, interrupting the current process. When this occurs the state of the current process will be moved into an idle state, and stored into RAM. Then an Interrupt Service Routine will be loaded into the CPU and executed to handle the Interrupt (Interrupt Handling). When this is finished the original process is restored and resumed.

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

What is a Distributed Operating System?

A

An Operating System which splits jobs into tasks which are performed on multiple connected Servers which operate in parallel.

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

What is a Multi-Tasking Operating System?

A

A Multi-Tasking Operating System can run many jobs at the same time on a single computer by switching between them (Process Scheduling). It will appear to a user as though the jobs are executing simultaneously even when run on a single core processor.

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

What is a Multi-User Operating System?

A

A Multi-User Operating System shares system resources on a Server/Mainframe between multiple Client terminals.

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

What is a Real-Time Operating System?

A

A Real-Time Operating System is used in time critical environments such as the Operating System for an aircraft. It must respond quickly, be able to handle many simultaneous inputs, be robust to failure of components, and incorporate redundancy.

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

What is the BIOS?

A

The Basic Input Output System is used to initialise the computer on start up, it interacts with the Hardware components of the system and tests that they are working correctly.

17
Q

What is a Device Driver?

A

A Device Driver is a software interface which allows Applications to interact with connected Hardware. Device Drivers are specific to and are managed by the Operating System.

18
Q

What is a Virtual Machine?

A

A Virtual Machine is Software which allows the emulation of another computer system. For example a Virtual Machine can be used to run the Windows Operating System from within OSX on a Mac. The Java Virtual Machine is used to execute intermediate bytecode files, which are the output of compiling Java code, on different computers with different Operating Systems.

19
Q

What is the difference between System Software and Application Software?

A

System Software is used to interact with and maintain the Hardware of the computer. Application Software is designed for a specific purpose, such as a word processor or web browser.

20
Q

What is Utility Software? Give an example.

A

Utility Software is used to maintain and optimise the performance of the computer. An example would be Defragmentation Software which re-orders data on a Hard Drive to improve performance.

21
Q

What does it mean for a program to be Open Source?

A

An Open Source program is distributed with its source code. This means that the code can be read, understood, and potentially changed by the people who use the Software. This does not mean that the software is free (Freeware). If the source code of a program is not disclosed it is considered Closed Source or Proprietary Software.

22
Q

What is a Translator? What kinds of Translators are there?

A

A Translator converts a computer programs into (usually) Machine Code. The three types of Translator are:
Compilers
Interpreters
Assemblers

23
Q

What is a Low Level Language?

A

A Low Level Language consists of instructions which correspond to the Instructions of the CPU Instruction Set for the computer on which it will be run.

24
Q

What is Machine Code?

A

Machine Code is a Low Level Language. Machine Code is the native language of the CPU. A CPU will have an Instruction Set which contains all of the executable Instructions for the chipset. Machine Code will be stored in binary, and may not be compatible between computers which have different types of CPU.

25
Q

What is Assembly Language?

A

Assembly Language is a Low Level Language. Assembly Language is a human-readable version of Machine Code and will be specific to the Instruction Set for a particular chipset. Assembly Language uses mnemonics, short text codes, to represent the operations available on the CPU.

26
Q

How does an Assembler work?

A

An Assembler translates a program written in Assembly Language into Machine Code. Because each line in an Assembly Language Program translates to a single Machine Code Instruction the translation is relatively simple. However, Assemblers may need to handle symbolic variables and other convenient features, such as branch labels, which means it may need multiple passes to perform the translation.

27
Q

What is a High Level Language?

A

A High Level Language is a Programming Language which is closer to a mathematical language to make it easier for humans to program computers. They are not fixed to the Instruction Set of a particular CPU, and so are more portable than Low Level Languages. They need a Translator to execute on a computer.

28
Q

What are the main differences between a Compiler and an Interpreter?

A

A Compiler will run on the Source Code of the program, performing several steps (such as Lexical Analysis and Linking) before generating an Executable File. The Executable File contains the Machine Code of the program. Once the Executable File has been created, no further translation is required - however, it will only work on the Computer Architecture (CPU + Operating System) on which it was compiled. The program can then be loaded into RAM and executed.

An Interpreter translates the Source Code of the program into Machine Code, and Executes it in the same process. Every time the program is executed it is translated again. For this reason Interpreted languages, such as Python or Javascript, tend to be slower than compiled languages. However, they are more portable so long as there is an Interpreter available on the machine where it is to be run.

29
Q

What are the stages of Compilation?

A

Lexical Analysis - removes unnecessary text (spaces and comments), identifies the keywords used in the program, constructs a symbol table containing all the identifiers (Variables, Functions, Classes etc) in the program.

Syntactic and Semantic Analysis - checks whether the program conforms to the rules of the language.

Code Generation - the program is translated into Machine Code.

Optimisation - various optimisation strategies are used to remove unnecessary instructions from the program.

Linking - each of the Object Files which are the output of Code Generation are linked together in a single executable, and these in turn are linked to any required Software Libraries.

30
Q

What is a Library?

A

A Library contains software which can be used by Applications. A Library is linked to a program when it is compiled.