Firmware is a type of software that is embedded directly in a piece of hardware to make the hardware work as intended. Firmware is programmed by the manufacturer and is installed on a digital device right in the factory. All computing devices have firmware. E.g. BIOS (Basic Input/Output System)
Types of Software
System Software
Manages Hardware/Software
Allows Communication
Types
Operating System
Providing Interface
Graphical User Interface
Command Line Interface
File Management
Peripherals & drivers Management
Memory Management
Multitasking Management
Interrupts Management
User Accounts Management
Utility Programs
System Cleanups
Defragmentation
Antivirus
Firewall
Application Software
Performs a specific task
Example
Word processor
Spreadsheets
Database
Web Browser
System Vs. Application Software [2024]
System software manages/maintains the hardware/software
Applications software allows the user to perform tasks
Interrupts
Signal to the processor
Has priority levels
Managed by Interrupt Handlers (IH)
Software-based
Division by zero
Two processes accessing the same memory location
Null value
Output/Data required
Hardware-based
Data Input (Key presses- Keyboard/Mouse)
Hardware Errors
Hardware Failures
New hardware connected/plugged in
Paper jam in printer
Printer out of paper
More examples
Keyboard (key pressed/released)
Mouse (movement/click)
Touchscreen (touch/gesture)
Camera (image capture)
Card Reader (swipe detected)
Sensor (motion/sound/pressure detected)
Process
Interrupt generated
Interrupt given a priority
Interrupt is sent to CPU
Interrupt is placed in a queue
Processor checks the interrupt queue
CPU stops current task to check the queue/service the interrupt (using an interrupt service routine)
If highest priority the interrupt is processed
Types of programming languages
High level
Easier to understand, read, write & amend
Easier to debug errors
Machine independent
Portable
Low level
Difficult to understand, read, write & amend
Difficult to debug errors
Machine dependent
Non-portable
Types
Machine
1s and 0s
E.g. 011010101010
non-portable
Assembly (uses mnemonics)
represents code like STO, LDD, ADD, etc.
Translators
Assembly and HIgh-level programs to machine code
Types
Assembler
assembly language to machine language
executables produced
Interpreters
high level to low
translates line by line
Checks/translates one line of code and then executes it before moving on to the next line
Stops when an error is found
when corrected the program can be run from the same position // allows error correction in real time
useful during program writing/development
No executables produced
Compilers
high level to low
Checks all code before executing any code
Produces error report with all errors found for the whole code (before translating/running any of the code)
Produces executable file
Compiled programs no longer need the compiler
Compiling may be slow, but the resulting program code will run quickly (directly on the processor)
One high-level language statement may be several lines of machine code when compiled
Integrated Development Environment (IDE) (2024)
Software that includes an editor to enter/amend code
Include
Built-in interpreter
Debugging and error diagnostic features
Code editor … … that allows the user to enter and amend code in their program
Run-time environment … that allows a program to be run and see the outputs of their program
Debugging and Error-diagnostic … to show the programmer where there are errors in the program
Auto-completion … to give the user options/suggestions of key commands to select
Auto-correction … to correct a command that has a minor misspelling
Prettyprint … changes the colour of key commands do they are easy to identify