Computer Systems: Hardware, Software, Logic Gates, Languages (AQA)
Hardware and Software
Definitions
Hardware: The physical components of a computer system, such as the CPU, memory, storage devices, and input/output devices.
Software: The programs and operating information used by a computer. Software can be divided into system software and application software.
Relationship Between Hardware and Software
Hardware requires software to perform tasks. Software provides the instructions that tell the hardware what to do. Without software, hardware is non-functional; without hardware, software cannot run.
System Software and Application Software
System Software
Software designed to manage and control the hardware components and provide a platform for running application software.
Examples: Operating systems (e.g., Windows, macOS, Linux), utility programs (e.g., antivirus software, disk management tools).
Application Software
Software designed to help users perform specific tasks.
Examples: Word processors (e.g., Microsoft Word), web browsers (e.g., Google Chrome), games, and business applications.
Operating System (OS) and Utility Programs
Need for OS
Manages hardware resources, provides a user interface, and serves as a platform for running application software.
Process management, memory management, file system management, device management, and security.
Utility Programs
Function: Perform maintenance tasks to ensure the smooth operation of the computer system.
Examples: Disk cleanup, backup software, antivirus programs, file compression tools.
Logic Gates and Truth Tables
Basic Logic Gates
NOT Gate: Inverts the input.
AND Gate: Outputs true if both inputs are true.
OR Gate: Outputs true if at least one input is true.
XOR Gate: Outputs true if exactly one input is true.
Constructing Truth Tables
NOT Gate:
A
NOT A
0
1
1
0
AND Gate:
A
B
A AND B
0
0
0
0
1
0
1
0
0
1
1
1
OR Gate:
A
B
A OR B
0
0
0
0
1
1
1
0
1
1
1
1
XOR Gate:
A
B
A XOR B
0
0
0
0
1
1
1
0
1
1
1
0
Constructing and Interpreting Logic Circuits
Simple Logic Circuits: Combine multiple gates to perform complex operations. Construct truth tables for these circuits to understand their behavior.
Example:
Circuit: (A AND B) OR (NOT C)
Truth Table:
A | B | C | NOT C | A AND B | (A AND B) OR (NOT C) |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 1 |
Boolean Expressions and Logic Circuits
Creating Boolean Expressions: Write expressions using NOT, AND, OR, and XOR to represent logic circuits.
Example: For the circuit above, the Boolean expression is (A AND B) OR (NOT C) (A AND B) OR (NOT C) (A AND B) OR (NOT C).
Converting Boolean Expressions to Circuits: Draw the logic gates that represent the Boolean expression.
Low-Level and High-Level Languages
Differences
High-Level Languages: Easier for humans to read and write (e.g., Python, Java). Abstracted from hardware details.
Low-Level Languages: Closer to machine code, more control over hardware (e.g., assembly language).
Low-Level Languages
Assembly Language: Human-readable form of machine code, uses mnemonics.
Machine Code: Binary code specific to a processor.
Translation of Languages
High-level and assembly languages must be translated into machine code for the CPU to execute.
Methods:
Compilers: Translate high-level code into machine code before execution.
Interpreters: Translate and execute high-level code line by line.
Assemblers: Translate assembly language into machine code.
Machine Code
Expressed in Binary: Uses binary (0s and 1s) to represent instructions and data.
Processor-Specific: Different processors have different machine code instructions.
Advantages and Disadvantages
High-Level Languages:
Advantages: Easier to learn, write, and maintain; portable across different systems.
Disadvantages: Less control over hardware, may be less efficient.
Low-Level Languages:
Advantages: Greater control over hardware, can be more efficient.
Disadvantages: Harder to learn, write, and maintain; specific to a processor family.
Interpreters, Compilers, and Assemblers
Interpreters
Function: Translate and execute code line by line.
When to Use: During development for quick testing and debugging.
Advantages: Immediate error detection, no need for recompilation.
Disadvantages: Slower execution speed compared to compiled code.
Compilers
Function: Translate the entire program into machine code before execution.
When to Use: For production code to achieve faster execution.
Advantages: Optimized code, faster execution.
Disadvantages: Compilation can be time-consuming, harder to debug.
Assemblers
Function: Translate assembly language into machine code.
When to Use: When low-level programming and hardware control are required.
Advantages: Efficient, gives control over hardware.
Disadvantages: Assembly language is complex and time-consuming to write.