Please enable JavaScript.
Coggle requires JavaScript to display documents.
1.2: Software and software development - Coggle Diagram
1.2: Software and software development
Operating Systems (OS)
The OS manages the hardware and provides an interface for the user and the application software
multi-tasking
can appear to do more than one task simultaneously by scheduling processor time
embedded
does a limited number of functions, normally used in home appliances
multi-user
uses a mainframe, lots of users can use their terminals to access the mainframe's CPU and each get a time slice
distributed
can coordinate the processing of a single job across multiple computers
real-time
used for safety-critical processes, responds very quickly to inputs, needs to respond to inputs in a guaranteed time, must have fail safes and redundancies
scheduling
multi-level feedback queues
processes are assigned to a queue but can be moved to a higher or lower priority queue
shortest job first
first come first served
shortest remaining time
round robin
time slices are assigned to each process and it processes a bit of one then a bit of the next and so on until it loops
device drivers
translates instructions from the computer into instructions that hardware can understand (or vice-versa)
open source vs closed source
open source software means that you can access and edit the source code, closed source software means you can't
stages of compilation
syntax analysis
The stream of tokens from the lexing stage is split up into phrases
Each phrase is parsed which means it is checked against the rules of the language
If the phrase isn’t valid, an error will be recorded
semantic analysis
It’s possible to create a sequence of tokens which is valid syntax but is not a valid program (logic errors)
Semantic analysis checks for this kind of error
symbol table
The lexer will build up a symbol table for every keyword and identifier
The symbol table helps to keep track of the run-time memory addresses for each identifier
code generation
lexical analysis
All unnecessary spaces and all comments are removed
Keywords, constants and identifiers are replaced with tokens
linkers, loaders and libraries
loaders
The job of the loader is to copy the program and any linked subroutines into main memory to run
linkers
The linker needs to put the appropriate memory addresses in place so that they program can call and return from a library function
libraries
Most languages have sets of pre-written and pre-compiled functions called libraries
interrupts
It’s vital that the CPU can be interrupted when necessary
Interrupts can be sent to the CPU by software, hardware devices or the CPU’s internal clock
examples of interrupts
An input or output device sends an interrupt signal
The printer runs out of paper
An error occurs in a program
A scheduled interrupt from the internal clock
Power failure
The CPU checks at the end of each clock cycle (FDE cycle) whether there are any interrupts to be processed
Interrupts have different priorities, and will be processed in order of priority
Interrupts can themselves be interrupted if the new interrupt is of a higher priority
BIOS (Basic Input Output System)
stored in ROM because it is needed for the computer to run and so the computer won’t work if it’s deleted. Therefore it needs to be stored in ROM because it is non-volatile and won’t be deleted when the computer is turned off
memory management
paging
Paging is when available memory is divided into fixed chunks, known as “pages”
Each page has an address
A process loaded into RAM is allocated sufficient pages, but they might not be contiguous (next to each other) in physical terms
segmentation
Segmentation is when memory is divided into segments, which can be different lengths
Segments can relate to parts of a program, for example a particular function or subroutine man occupy a segment
virtual memory
Virtual memory is used when RAM is full
To access data in virtual memory, it has to be moved back to RAM
Data being frequently switched between virtual memory and RAM can cause disk thrashing