- Created by: Freddie Frame
- Created on: 13-01-20 09:17
Unit 1.2.1 T1 - Function of an OS
Boot loader in ROM loads OS into RAM when PC is first switched on, OS manages hardware and provides an interface for the user and application software
Functions - UI, Memory management, Interrupt handling, Processor scheduling
UI - Hides complexity of hardware from user, used in OS' such as Windows, OSX, Linux, IOS, etc.
Memory management - Programs and data loaded into RAM, OS allocates RAM to different programs, when there is insufficient RAM Virtual memory is used instead
Paging - Memory is divided into fixed size chunks (pages) which each have an address, process loading into RAM is allocated sufficient pages (may not be continuous physically)
Segmentation - Instead of paging, RAM is divided into segments of different lengths, can relate to parts of a program e.g. particular functions/subroutines may occupy a segment
Virtual Memory (VM) - When demand exceeds RAM capacity, an area of a hard disk is designated as VM, pages of a current proccess are placed in VM until, needed and placed back into RAM. Doing a lot this can slow down the computer alot - This is known as disk thrashing
Unit 1.2.1 T1 - Interrupts and Processor Schedulin
Interrupts - Vital that the CPU can be interrupted when necessary, can be sent by software, hardware devices or CPU's internal clock, e.g. Printer runs out of paper.
Using the stack - Wen an interrupt is detected, processor stops fetching instructions and pushes current contents of registers onto a stack, stack is a First in - Last Out system (FILO). CPU uses an Interrupt service routine to proccess interrupts, after processing values can be propped from the stack and reloaded into the CPU.
Priorities - Interrupts can have different priorities, can cascade, if an interrupt of a higher prority is detected the current interrupt is interrupted.
Proccessor Scheduling - Single CPU can only process one application at a time, OS must schedule CPU time to applications (Multi-tasking), used to provide acceptable response times, maximise CPU engagement time, ensure fairness on multi-user systems.
Unit 1.2.1 T1 - Types of Processor Scheduling
Round Robin - allocated (by first in, first out) a time slice when it can use the CPU, if the next job is not completed by end of timer, the next job is allocated a time slice
First come, First Served - First job is excecuted until completed, can cause issues if it is a long time that may waste system resources
Shortest Remaining Time - Time to complete is estimated of arriving jobs, shortest job is excecuted, shorter new jobs can take over, can starve CPU when a process is denied necessary resources to process its work (Caused by errors in scheduling/algorithm)
Shortest Job First - Time to excecute is estimated, waiting job with smallest time is executed when current job is finished
Multi-level Feedback Queues - Multiple queues of different priority levels, if a job uses too much CPU time it is moved to a lower priority queue, proccesses can be moved to higher priority queues if they have been waiting a long time
Unit 1.2.1 T2 - Types of OS
Distributed - Coordinates processing (by OS) of a single job over multiple computers, programs can be run from a user that uses data from other computers, user accesses more computational power with the illusition of a single processor
Multi-tasking system - One CPU can appear to multi-taks by scheduling processor time
Multi-user, Multi-tasking System - Some systems use mainframes (very powerful central computer), Users have their own terminal to access mainframe's CPU and get a time slice, each terminal alo multi-tasks.
Mobile - Some are linked to specific hardware e.g. IOS runs of apple devices, low-level proprietary OS is used for handling hardware and special features e.g. cellular and Wi-fi, main OS handles UI and running applicaitons
Open Source - Android is an open-source OS which uses Linux and is run by google, used by most major non-apple device manufactures, allows for much more customisation, manufacturer can fine-tune OS to suit their device and add features
Unit 1.2.1 T2 - Types of OS, BIOS, Drivers, VM's
Embedded - Devices in homes have simple OS' to run simple processes, system in a system e.g. sat-nav in a car, camera in a phone, has minimal features, application programs are held in ROM, limited RAM, simple and limited UI
Real-time - Some system must be able to respond extremely quickly to (simultaneous) inputs, used in safety-critical environments e.g. medical applicaitons, if hardware fails the OS must have a failsafe to detect this, cruicial components are duplicated incase of failure
BIOS (Basic Input Output System) - stored in ROM, boots the computer up at start-up, initialises and tests hardware, loads the OS into RAM, stored in ROM as it is non-volatile
Device Drivers - They are programs that provide and interface for the OS to interect with a device, hardware dependent and OS specific, needed to allow OS to control hardware devices (OS doesn't need to know hardware specifics to interact with it
Virtual Machines - Software use to emulate a machine, can be used to run one OS insude another to emulate different hardware, can execute intermediate code (Java VM execute Java byte code, some VM's can emulate old arcade machines o play their games on modern PC's
Unit 1.2.1 T3 - Software Categories + Utilities
Applicaitons Software - Off-the-Shelf, Cutstom Written, Proprietary, Open Source
Systems Software - needed to control hardware and run applications such as: Operating system, Utilitiy programs, Library programs, Translators
Disk Defragmenter - files stored on magnetic hard drives may be split up, recognises the hard drive so files are in sequential blocks, used to files can be read more quickly and with faster speeds
Automatic Backup- automates backup so users don't have to remember, can be in a portable drive, cloud/local server, done when PC is not in use, specifies data that should be backed up, how data should be compressed
Auto-Updates - runs in background detecting software releases and automatically instals them such as patches, security fixes, user can set when to check for updates
Virus Scanner - scan storage for viruses by comparing known virus definitions, scan files 'on access', also check for day-one viruses, must be kept up to date with new virus definitions
Compression Software - Used to reduce file sizes when sending them across the internet, some files can be compressed mre then others if they use lossy compression versus lossless (photo vs video game)
Unit 1.2.3 - Systems analysis methods Wfall + Spir
Waterfall - Eaach stage is completed and documented before next is begun, customer only sees end product, any changes means cycle needs to be restarted
Advantages - Simple and easy, seperate and self-contained stages, well defined stages with written documentation, straightforward to manage, good for smaller projects, good for novice programmers.
Disadvantages - Not much client involvment, no working software is produced until late in dev cycle, user given final product, too late to make changes if not what required
Uses: Clear and justified requirements, no anbiguous requirements, technology is well understood, short-term projects
Spiral - Different versions are made each time, continuous dev cycle (constant work), follows 4 basic steps of analysis, design, implementation, evaluation, each looop generates a newer and more refined version.
Advantages - Well-defined stages, software can be released early to identify issues, user feedback allow changes early in process, end result is closer to user requirements.
Disdvantages - Long dev cycle, more costly, unsuitiable for smaller projects
Uses - Medium to high-risk projects, users are unsure of needs, complex requirements, projects over several years where technologies change
Unit 1.2.3 - Systems analysis methods (2)
Agile - rapid incremental cycles, versions build upon previsios functionality, thorougly tested, limited planning is needed to stary
Advantages - rapid + continuous delivery, customers, developers and testers interact constantly, frequent delivery of working software, software can be adapted, late changes can be added
Disadvantages - Lack of emphasis on design and documentation, project can fail if no clear desired outcome, unsuitiable for novice programmers
Uses - Small, time-critical prjects, changes needs to be constantly implemented, when user needs are constantly developing
Rapid Agile Development - Frequent releases made in short dev cycles, improve productivity and responsiveness to changes requirements, workshops and focus groups gather requirements, prototyping refines system constantly, each part is produced within strict time limits, components designed to be reused.
Advantages - Flexible, good for low-risk projects, code can be reused, multiple phases allow for fast delivery, small teams can increase productivity
Disadvantages - Unsuitable for smaller, high-risk projects, not all applications are compatiable, high-skilled developers needed, hard to track progress
Problems with larger projects are that: Personel and requirements change, technology advances, costs spiral, project can get cancelled
Unit 1.2.3 - Writing,following+sorting algorithms
Algorithms (instructions to solve a problem in a finite number of steps) solve problems such as: Routing Problems - routing packets of data by taking the shortest route | Timetabling (e.g. logging pilot flight hours so they dont exceed the limit) | Searching | Encryping | Sorting - Sorting large amounts of data | Writing a compiler - translate high-level language to machine code.
Good algorithm - efficient, solves problem quickly, simplistic, clear + precise steps, allows and manages invalid inputs, terminates at a point. easy for others to edit and understand
Pseudocode - Halfway between english and code, largely independednt of other languages, rules are that indentation is a must, endif statements, for i in word.... next i
Sorting algorithms - Many different types exist, some are simple and slow (insertion) to complex and fast (merge)
Bubble Sort - Very simple, unsorted, start with first item in list and if it larger than the next, swap it, at the end of the first pass the largest item bubbles to the end
Unit 1.2.3 - Searching+Evaluating programs
Linear Search - Starts at beginning of list and examines every item
Binary Search - List must be sorted first, uses 'Divide and Conquer', list halves every time until item is found
Writing Good Programs - Comments to document code, identifiers (case used such as CamelCase) is standard, code is properly indented, doesn't contain unneeded statrements, modular structure, 1 module is no longer than a page (lego-like structure)
Trace Table - Used to follow through the algorithm for each line, identifies waht each line + variable does.
Unit 1.2.3 - Software Development Stages
Analysis - System Analyst gather information on current system and what the new one needs, Analyst may do interviews, questionairs, look at other systems + existing documentation. Will produce a document called User Requirements, defines what the system will do, not how, used to create the design and evaluate the final product
Design - Data description, database design, Input/Output screens + reports, how data will be processed + software tested (Note: Verification is a manual human check, cannnot be done by computers)
Implementation - Coding and (stress) testing, Writing user (simplified) and techincal (advanced, all information) documentation, installing software for user
Testing Strategies - Black Box - independednt of program code, looks at specification and creates set of test data that covers all inputs, outputs + functions | White Box - tests all possibilities | Alpha - carried out in-house by team and user, errors and omissions discovered, discover if system does not do what intended | Beta - Open to select group of users that report back issue, users agree to testing, used for commercial software (games, etc.) users may try things devs didnt anticipate so risk vs likelihood of bug has to be weighed
Evaluation - Does it work?, Everything is tested, evaluated against original document, aka acceptance testing
Maintenance - Corrective - Bugs will be found when software is in action | Adaptive - Adapting software to meet user requirements | Perfective - Ways of making software better, faster, easier, adding functionality