Software
A set of programs/instructions written in a programming language performing 1 or more tasks to tell the computer what to do. It allows the computer to function.
Hardware
The physical and peripheral components of a computer.
Firmware
A software permanently stored on the hardware/ROM which contains instructions allowing the hardware to function and communicate with software.
Bootloader
A small piece of firmware containing the instructions to start up the operating system; it loads the OS onto the RAM upon startup.
How do applications access hardware resources?
Through making 'calls' to the OS and the device drivers.
System software
The manager: A variety of programs which are necessary for the computer to function and manages the operation of computer hardware and software.
Application software
The software which the user needs to perform specific tasks using the computer's resources.
Operating system
The platform in which other programs/applications are run on. Also provides the user with a human computer interface.
Allocates the hardware's resources
Utility Software (MMC)
Manages, maintains, and controls the computer's resources. It makes sure everything runs smoothly.
Interrupts
A signal sent from a device or a software to the OS which causes a temporary stop in the current instruction being processed to service the interrupt.
What are interrupts sent through?
Interrupt Request Lines (IRQ)
What are interrupts sent to?
The interrupt handler in the OS to perform the Interrupt Service Routine (ISR)
Examples of Interrupts
Dividing by 0
Hardware faults like no paper in printer
Hardware interrupts like keyboard presses
High Level Language (HLL)
Programming language written in a language (like English) that humans understand. It is a portable language which can be used on multiple platforms (machine independent).
Low-Level Language (LLL)
Programs written for a specific type of architecture and hardware. It is non-portable and machine dependent.
Advantages and Disadvantages
Debug ease
Hardware (directly manipulates or machine independent)
Ease of writing/understanding
Memory space taken up (1 line = 1 machine or many lines of abstraction?)
Speed of execution
Assembly language
A low-level language, it uses mnemonics to specifically manipulate hardware. 1 line of assembly language translates to 1 line of machine code.
Difficult to debug
Mnemonics
Directly manipulates hardware
Ex. Bootstrap in ROM
Assembler
Translates assembly language into machine code. Assembly language generally takes up less memory space than high level languages.
Advantages of Assembly language
Uses less space in memory
Faster processing speed
Therefore is more efficient overall
Directly manipulates hardware
What is a compiler?
A compiler is a software program that translates source code written in a high-level programming language into machine code that can be executed directly by a computer.
Compiles and translates the entire file at once
Produces an executable file specific to computer architecture
If a syntax error is encountered, the compiler doesn’t produce an executable file, and sends out an error report
What is an interpreter?
A software program which translates high-level language into machine code line-by-line
If a syntax error is encountered, it stops translating at that line and sends out an error report
Code must be retranslated each time it is run
Advantages of a compiler
Produces an executable file, so users can’t see or edit the source code for stealing
Only needs to be translated once, so it’s faster to run
User doesn’t need to have interpreter installed to execute the code
Advantages of an interpreter
Faster and easier to debug during the development process, as users can clearly see where the error was made
Integrated development environment (IDE)
A program which allows users to write, debug, and translate code
Consists of: Prettyprint, Run-time environments, Code editors, Autocomplete and autocorrect, Translators, and Error Diagnostics
Code editors
Used to write and edit program code
Makes the code clearer, to make editing easier for programmers
Prettyprint, Syntax highlighting, Indentation, Line numbers, Autocorrect and complete
Run-time environments
The facility of the IDE which runs programs
Allows users to test code
Gives useful reports as to errors or program crashes
Prettyprint
Applying formatting and indentation to make the code easier to read
Error Diagnostics
A list of errors and their line numbers reported after testing
Helps find mistakes made by the programmer.
Errors are identified along with the line number.
The code may be underlined or highlighted.
Auto correct
Replaces/corrects any grammatical errors or variable names which have minor typing errors
Autocomplete
Provides a drop down list of variables/possible choices to complete keywords/variables
Translators
Allows the user to run the code using compilers and interpreters
What does the system software do?
Helps maintain good working order of the computer so it runs without problems.
Provides a platform to run other software.
Controls allocation and usage of hardware resources.
Provides a Human Computer interface (HCI)