CP1300 Software Layers
Last modified Wednesday, 09-Aug-2000 03:59:50 UTC.
Software Generation
- Software follows a software life cycle.
- Problem Analysis and Specification
- Solution Design
- Algorithm
- Implementation
- Compilation
- Execution
- Compilation
- Translates source code into machine code
- Produces an executable binary file (of machine code instructions)
- Execution
- Executable binary is loaded into main memory, and then run
- Hardware follows the Fetch Decode Execute Cycle to run a
program
Software Layers
(Jason's Notes)
- The Layers
- Application software
- System software
- Operating system
- Device drivers
- Microcode
- Hardware
- Application actions pass through the layers to the hardware
- Application Software
- Uppermost software layer
- Where normal computer/user interaction occurs
- Word processing, email, internet, and so on...
- Designed to be powerful but easy to use
- Most have GUI or simple command-line interfaces
- System Software
- Common activities that high level applications need to do,
e.g., printing
- Library routines and common tools that hide the operating
system from applications
- Operating System
- Programs and routines that control all accesses to hardware
- Higher levels are protected from any issues
- Multiple users
- Multiple requests for the same resource
- Access control
- When the OS determines its safe to proceed, direct calls
to device drivers and microcode are performed
- Device Drivers
- Device drivers are very low level instructions to a device
(e.g., the printer, or the hard drive)
- Microcode
- Microcode are very low level, and very specialised
instructions to the computer (the CPU, memory)
- Have nearly one-to-one relationships with the hardware
- Hardware
- Digital logic components (gates, ICs, and so on)
- Physical devices
- ICs (e.g., CPU) are typically 'programmed' during mass
manufacturing
Self assessments
Tutorial Questions
Exam style questions
- What are the stages in software generation?
- What does a compiler do?
- Are compilers machine specific? If so, why?
- What is executable code?
- How is an executable 'executed' on a computer?
- What are software layers for?
- Draw a diagram of the software layers and hardware.
- True/False: does each layer depend on the one(s) below it?
- State the layer that directly handles the following:
- a word processing application
- a routine that controls exactly what a particular device does
- a generic routine to print data to a printer
- routines to resolve access to a system resource
- Make a list of all the input-only, output-only, and input&output device
that you can think of.