Computer Systems Flashcards
Define Hardware
- Physical components of the computer system (you can touch it)
Define Software
- Program code, sequences of instructions which are executed in order to perform a task (non-physical)
Hardware examples
- Monitor
- Processor
- Graphics
- Webcam
Software examples
- Word Processor
- Web Browser
- Image editor
- Video editor
Examples of both software and hardware
- Wireless router
- Wireless keyboard
Application Software
- programs that run to complete a specific task for the user e.g. Word, Powerpoint
What does a device driver do?
- Allows the device to communicate with the OS
Operating system role
- System software that allows control of the computer while hiding complexities using a virtual machine
- Manages/controls resources, memory, processor scheduling and interrupts
e.g. Windows, Ios, Linux
Translators role
- Translate between different programming languages (high/low)
e.g. VS(Compiler), Python(Interpreter)
Utility Programs role
- System software to complete housekeeping tasks
-Data backup, defragmenting, compression and encryption
e.g. Disk clean-up, antivirus, firewall, task manager
Library programs role
- Useful functions frequently used by a program, programmers import them within their code to simplify the process
e.g. NetCore, NetFramework, OpenSSL
What is the purpose of the operating system? (In reference to the user?
- The purpose of an operating system is to hide the complexities of hardware from the user (providing a VM), and manage said hardware.
What types of management can the operating system perform?
(detail explain these if a question comes up)
- Memory management
- Resource management
- Security management
- Command Interpreter
- File management
- Input/Output management
What types of resource management can the OS perform?
- Allocates space on a storage device
- Moves data into/out of RAM
- Allocates memory/RAM to processes
- Install + Manage users on a network
What are Low level languages?
- Languages directly manipulated by the processor
- Require a lot of work to code and – Very error prone.
e.g. Machine Code and Assembly language
What are High-level languages?
- Allow for instructions to be communicated much easier
- Have to be translated before the computer can read them.
What is Assembly Language, and what are the key mnemonics?
hash .# denotes a denary number
- Uses mnemonics to simplify the process of computer programming and make it easier
LDR - Load
STR - Store
ADD - Add
INP - Input
HALT - End - Read backwards to indicate where objects are stored
Machine Code
- Language the computer directly reads, e.g. binary
High vs Low Level Languages
(Machine Code, Assembly and HL languages)
LL Machine Code;
- Not portable
- difficult for humans to understand
- difficult to spot errors
- directly executed by processors
LL Assembly Language;
- Processor specific
- Mnemonics slightly easier, debugging slightly easier than MC but harder than HL Languages,
- Assembler must be used, quick translation due to 1 to 1 correlation
HL Languages;
- Portable, non specific, easy for humans to understand and debug (named variables + indentation).
- A compiler or interpreter must be used to translate source code into object code before it can be executed. This can be time consuming
Machine code positives and negatives?
Positives;
- Programmers are not restricted
- No translator is needed
- Useful for embedded systems as it is faster
Negatives;
- Difficult to read, work with and understand
- Operation codes and memory addresses must be remembered
- Very difficult to amend/locate errors
What are assemblers?
translation
Assembly to machine code;
- Quick and straightforward, due to 1 to 1 relationship;
- Platform specific, each processor instruction set requires its own assembler;
What are compilers?
translation
High level language to machine code;
- Taken as source code, checked for errors;
- Translated all at once, once compiled, can run without any other software (not the case for interpreters);
What are interpreters?
translation
High level language to machine code;
- line by line error checking
- Stops if error is found
- SC and interpreter must be present, making this method vulnerable
Compilers versus Interpreters
Compiler;
- Translation begins immediately;
- Entire source code is translated at once;
- No need for source code or compiler to be present when translated code is executed;
- Protects the source code from extraction
Interpreter;
- Checks source code for errors line-by-line before translating;
- Each line is translated sequentially (after error checking);
- source code + Interpreter must be present when the program is executed (vulnerable);
- Offers little protection of the source code ;
What is an intermediate language?
- Some compilers first translate into an intermediate language commonly known as byte code.
- Byte Code allows the code to be used on a variety of processors due to being independent (working on any system)
truth table
- shows every possible combination of inputs and corresponding outputs for a logic gate or circuit
NOT gate Boolean Logic Symbol
¯A
over the A
AND gate Boolean Logic Symbol
A.B
OR gate Boolean Logic Symbol
A + B
XOR gate boolean logic symbol
A ⊕ B
Why should you try to use as few gates as possible in a circuit?
- Less power used by the processor
- Faster
- Less heat and lower cost
Adders
- A logic circuit that can be used to add Boolean values together
Half Adder
- 2 inputs, 2 outputs, 2 logic gates (XOR, AND)
Full Adder
- 3 inputs, 2 outputs, Used in most digital circuits
Boolean Algebra
order of precedence:
- ()
- NOT
- AND
- OR
De Morgan’s Law
—> Break the line, change the sign
Boolean Identities
A.0 = 0 Any value and 0 is 0
B.1 = B Any value and 1 is itself
C.C = C Any value and itself is itself
D+0 = D Any value or 0 is itself
E + 1 = 1 Any value or 1 is 1