OS and system software

operating system

is software that manages the computer

purposes of OS

managing external devices

managing the memory

managing the processor

which process to execute next

handling interrupts

allocating and managing memory

using paging and segmentation

managing virtual memory

using device drivers

translate OS instructions into those understood by specific models

provides a platform for software and utility programs

framework for application to run

allowing them to open and close files easily

user can interact with OS to manage files and use range of utilities

providing networking

communication through protocols to other machines and devices

managing security

servicing and denying requests to access the resources connecting to the coputer

proves user interface

user interacts with applications through

graphical user interface

windows icons menus pointers

command line

memory managment

paging and segmentation

both pages and segments are stored on disk (virtual memory)

paging

segmentation

how it works

advantages

segments are different sizes

fixed size memory locations

physical devisions

disadvantages

doesn't take into account what each page is doing

virtual memory

stores idle programs to the hard disc

disc thrashing is when too much time is spent on moving memory in and out of memory

keeps complete sections of programs

allow programs to run despite insufficient memory

divide memory into sections

made to fit sections of memory

segments are logical divisions

allows programs to run with insufficient memory

interrupts

a device sends a signal to the CPU along the control bus

interrupt service routine

a stack is used to hold contents of the registers

stack holds the contents of the PC which can then be popped when interrupt is resolved

interrupts have priorities

types

hardware

software

input/output

power/reset button is pressed

memory parity error(corrupt memory)

illegal instruction encountered

arithmetic

new log-on request

buffer nearly empty

signal the completion of a data transfer to/from a device

scheduling

first in first served

runs the first program until completion

if jobs behind are quicker then they will have to wait

shortest job first

the shortest job is run first

long processes can end up not being processed for a long time

round robin

each process is allocated a fixed amount of time

quanta/time slice

if program is incomplete it goes to the back of the ready queue

fair but not always efficient

shortest remaining time

similar to shortest job first but this algorithm is pre-emptive

process can be suspended if a higher priority process joins the queue

multilevel feedback queues

number of queues increase each with different priorities

scheduler can move jobs between the queues

types of operating systems

distributed

embedded

multi-tasking

multi-user

real time

one processor can run more than one program at any one time

the processor schedules the programs

each program receives a very small time slice of processor

allows more than one user to use a computer at any time managing each users preferences

could be a server operating system managing the requests of multiple users on different computers

using multiple computers over a connected network to process a single instruction

processors exist on dedicated hardware, to run with the best efficency

guaranteed to run a process within a given time frame

redundancy is built to handle abnormal increases in inputs

never run at maximum capacity

bios

first checks to see if hardware is working power on self test

setting can be changed in the bios

sequence

boot loader (bootstrap) program to load operating system kernel before giving control to the OS

initial start up sequence is stored in ROM

bios parts that can be altered are stored in flash memory

drivers

software which tells OS how to communicate with the hardware

example: Printer

OS doesn't need to concern how to physically print a document

virtual machines

same functionality of a physical computer without it's native hardware

emulators

old arcade games can be run on emulators which use modern hardware.

games can be developed on PC and emulated for other types of hardware e.g. Xbox or PS3

server

virtual servers can be used on a small number of physical servers this is to have multiple servers

vertualization

this is when a physical server brakes and the other servers on the network can take up the slack so that the servers can carry on as if it never broke

intermediate code

virtual machines can interpret intermediate code for example java

means code can work on many different platforms

saves time

code would need to be written for each platform

or a suitable compiler would need to be used