4a - Computer systems - software Flashcards
What is a computer system?
a collection of inputs, processors, outputs, and storage that work together to achieve a common goal
What is the difference between hardware and software?
-hardware is the electronic and physical components that make up a computer system and its peripherals
-software are the programs that run on the hardware
What is an XOR gate? Draw its symbol and corresponding Boolean algebra symbol:
-exclusively OR
-on if the inputs are different, off if the outputs are the same
⊕
How do you make an XOR gate using only the basic logic gates?
A.B̅+B.A̅
Draw a NOT gate and its corresponding Boolean algebra symbol:
overbar, eg C̅
Draw an OR gate and its corresponding Boolean algebra symbol:
+
Draw an AND gate and its corresponding Boolean algebra symbol:
.
What is the order of precedence with Boolean algebra?
Brackets
NOT
AND
OR
What is the difference between application and system software?
-application software is a program with a specific end user task (eg word processing/database/spreadsheet software)
-system software (comprised of the OS and utility programs) supports the operation of the computer system, controlling the hardware, and providing a platform for running application software
What are utility programs? Give some examples:
a type of system software that assists the computer system to run smoothly (eg anti-virus, disk defragmentation, data compression)
Disk defragmentation works with a HDD and moves files closer together on the disk allowing for faster read speeds, freeing up space simaltaneously
What is the operating system (OS)?
a type of system software that enables the computer hardware to be usable, by providing a graphical user interface (GUI) to hide its complex nature
It is an example of abstraction
What does the OS manage?
-input/output devices
-security (user accounts with credentials, organising access rights)
-allocation of memory
-application software
-processor(s) (eg allocating time for tasks)
(I, SAAP)
How is a high level programming language different to a low level language?
-high level uses more human-readable commands, which often correspond to several low level commands
-low level languages are much closer to the processor and have little to no abstraction, where the commands have a 1:1 correspondence with the machine code
The terms high and low refer to the amount of abstraction that is used in that class of programming language
What are the advantages of using a high level programming language? Name one drawback too:
-allows for faster development
-easier to find errors in code
-has built in functions/libraries
-hardware-independent so code is portable/shareable
-however it takes longer to test because it must be translated into machine code before use
What code does a processor use to execute instructions? Can one type of processor understand another processor’s code?
-machine code, as it can only read binary
-no, as each type of processor will have its own specific machine code instruction set (hardware-dependent)
What is assembly language, and how is it understood by the processor?
-a low level programming language that uses 1:1 corresponding mnemonics to simplify machine code, and is specific to a certain type of processor
-requires an assembler to translate the mnemonics into an executable machine code file
What is assembly language used for?
-controlling specific hardware components
-developing software for embedded systems
Name the 3 types of program translators, and give the general purpose of a translator:
-they all translate a higher level language to machine code (lower level language) so it can be understood by the processor
-assemblers
-compilers
-interpreters
What does a compiler do?
translates the entire program into a separate executable machine code file that can be ran by the processor directly
The file it makes is a .exe file
What does an interpreter do, and how is it different to a compiler?
-translates the program into something which the interpreter software can execute using its own machine code subroutines
-the CPU executes one instruction before the next is translated
-it doesn’t create any machine code like a compiler
Give some advantages of using an interpreter:
-easier to test and debug, as the program stops when it finds a syntax error
-doesn’t require compiling each time, which is faster
Give some advantages of using a compiler:
-quicker to run after the machine code file is compiled, as the processor runs the machine code directly without the need of a translator
-users can’t access/edit the source code from the executable file