Please enable JavaScript.
Coggle requires JavaScript to display documents.
1.2 Software and software development (1.2.2 Applications Generation…
1.2 Software and software development
1.2.1 Systems Software
Memory Management
Paging
: Memory is divided into fixed size pages and a process currently in memory may be held in non-contiguous pages.
Segmentation:
Logical division of address space into varying length segments which can relate to different parts of a program.
Virtual memory:
The OS may swap pages of temporarily inactive jobs out of RAM into virtual memory. It can noticeably slow down the computer
Processor scheduling
Interrupts:
Can be sent by software, hardware or the CPU's internal clock. When an interrupt is sent the processor stops and pushes the current contents of its registers onto a stack.
Priority
different interrupts have different priorities and will be processed in order of priority.
Processing Types:
First come, first served:
The first job to arrive is completed first.
Shorted remaining time:
The job with the shortest remaining time to completion is executed, meaning a shorter new job can over take a current process.
Round robin:
Processing time is shared, each job is allocated a time slice during which it can use the CPU's resources.
Shortest job first:
The time of each job is estimated by the user, the job with the smallest execution time will be carried out after the current one.
Pre-emptive:
Where job is allowed to be moved from running state to the queue
Non-Pre-emptive:
Job can only be moved from running state once it's complete.
Multi-level feedback:
Multiple queues are created with different priorities.
E.g. If a job uses too much CPU time it is moved to a lower priority.
Makes sure processor is used as efficiently as possible, and allows for multitasking
Provide a user interface
GUI, Menu driven, command line, form based
Backing store management:
It is where the OS has a directory of where files are stored so they can be quickly accessed. Similarly, it needs to know which areas of storage are free so new files and applications can be stored.
Manage all input and output devices / Peripheral management:
The OS will need to communicate with devices to check it is switched on and online. A memory
Buffer
is needed to compensate for the difference in speed between the computer and the hardware device.
Types of operating system:
Distributed OS:
Can coordinate the processing of a single job across multiple computers. Resources are shared include processor time and memory. However the programmer has no control over task distribution.
Multi-user OS:
Lot's of users with their own terminals access the mainframe's CPU and each get a time slice.
Mobile OS:
Has a multi-tasking system. Mobile OS are however linked to specific hardware. e.g. Android and IOS have different hardware.
Open Source OS:
Android is an open OS based on Linux and owned by google. This allows for customisation between devices.
Embedded OS:
Devices that have an OS to run simple programs. However, it has limited RAM and applications are held in ROM.
Real Time OS:
Often seen in safety-critical environments. Used if a hardware component fails, the OS must have a fail safe to detect and respond. Crucial components are duplicated in case one fails.
BIOS:
Stands for basic input output system. It is stored in ROM and is used to boot up the computer at start-up. It loads the OS from ROM to RAM. It also tests if hardware works during start-up.
Device Drivers:
A program that provides an interface for the OS to interact with a device. Drivers are hardware dependant and OS specific.
Virtual Machine:
Software used to emulate a machine. Can be used for running one OS inside another. Can be used to emulate different hardware. Can execute intermediate code.
1.2.2 Applications Generation
Software
System Software:
Includes the OS, utility programs, library programs and translators.
Application Software:
Includes, Off the shelf, Custom written, proprietary and open source.
Utility Programs
: Used to maintain the computer. Includes: Disk defragmentation, Backup, updates, virus checker and compression.
Automatic Backup:
Allows user to specify the storage destination, the time of day at which it is backed up, what data should be backed up and if they should be compressed or not.
Anti-Virus:
Uses heuristics. It knows what types of behaviour are likely used by malicious programs.
Off the shelf:
Ready made software made available for anyone to purchase.
Bespoke:
Software that is custom created for a specific user.
Open Source:
Allows anyone to access code, often free to use, anyone can modify and sell the code.
Closed Source:
Code is closed so on one can access source code. Mostly purchased in a subscription or one time purchase.
1.2.2 Applications Generation
Assembly code
: instructions are equivalent to machine code but are easier for humans to work with.
E.g. LDA 5
Assembler
: Translates assembly code into machine code.
Machine code:
Code that only machines can understand, written in binary.
Compiler:
Translates a whole program written in a high level language into executable machine code, then the code is executed.
Interpreter
: Translates high level to machine code. It does it line by line rather than the whole program before any of it can be executed.
It is faster to execute, and doesn't need interpreter to run. However it cannot be copied easily by others.
Source code can run on any machine with the interpreter. If a small error is found there is no need to recompile the whole program. Saving time.
Stages of compilation
:
1) Lexical analysis:
Removes all unnecessary spacing and comments.
2) Symbol table:
The lexer will build up a symbol table for every keyword and identifier.
3) Syntax analysis:
Makes sure the sequence of input characters, symbols, items or tokens follow the code's language rules.
4) Semantic analysis:
Determines the meaning rather than the grammar. Otherwise it is possible to create a sequence of tokens which are valid syntax but is not a valid program.
5) Code generation:
The compiler generates the machine cod.
Code optimisation
also takes place.
Bytecode:
Most languages used both compilers and interpreters. This is good as the program can be platform-independent. It is written in bytecode and is executed by a bytecode interpeter.
Code optimisation:
Removes redundant instructions, replaces inefficient code with code that achieves the same result but in a more efficient way.
Libraries:
A set of pre-written and pre-compiled functions.
Linker:
Puts the appropriate memory addresses in the place so that the program can call and return from a library function.
Loader:
Copies the program into main memory to run.
1.2.3 Software Development