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 ;