Systems Software Flashcards
Open source software (governed by open source initiative)
Software is LICENSED for use but there’s no charge for the license
Software should be distributed with the source code so anyone can modify
Any software created from open source must also be open. Should be distributed/sold in a way that others can read and edit it
Developers can sell software created
How is open source different from freeware
Restrictions on use and no access to source code
Closed software (proprietary)
Sold in the form of a license to use it.
Restrictions on how software can be used e.g. Only allows one concurrent user or permit 50 users on one site
Company or person who wrote it holds copyright. No access to source code or modify and sell it on as infringes CDPA
How to select application
Provide necessary functionality? Run on available hardware? Available off the shelf or need to be specially written? Cost? Is it well tried used and tested?
Assembly code
Low level language thats ARCHITECTURE dependent and usually one instruction is equivalent to one machine code instruction . They’re 2-4 character mnemonics representing all machine code instructions and representing operation codes and addresses. (opcodes and operands)
Machine code and assembly code in different machines
Completely dependent on hardware- different PROCESSORS have different machine code instruction set and different architectures have different assembly codes
Assembler
Translates assembly code (aka source code) to corresponding machine code (object code). Each line is converted to corresponding 0 and 1s
Compiler
Different compilers for hardware specific object code.
Translates high level language to machine code. The source code is INPUTTED AS DATA and compiler scans through it several times, performing different checks and building up tables of information needed to build final object code as a whole.
This object code can then be SAVED and run whenever without the compiler
Interpreters
Translates high level language to machine code. Written and saved program, interpreter looks at each individual line and analyses, translates and executes it if no syntax errors
Bytecode
An intermediate representation, simplified code, combining compiling and interpreting- executed by a bytecode interpreter
It can be compiled into bytecode once and for all e.g. Java or each time a change in the source code is detected e.g. Python
What’s so good about bytecode
Achieve platform independence: any computer which can run java programs will have a java VM ( a piece of software) which a) understands bytecode and converts it to machine code for a particular computer b)is a software masking inherent differences between computer architectures and OS
Acts a an extra security layer between computer and program: java bytecode interpreter is executed instead of program, guarding against malicious programs
Secure: can distribute whilst protecting intellectual property
Error free when interpreted
Original code can be written in different languages by different programmers
Java interpreter for python
Compile python to java bytecode via jython compiler and using Java interpreter to interpret and execute
When use compiler
When program to be run regularly with only occasional changes.
When object code produced is going to be distributed and sold outside software company bc software code not present so can’t be amended or copied
Advantages of compiler vs interpreter
Errors presented all in one go at start
Can save object code on disk so can run whenever with no need to recompile (unless one error found then recompile all)
Object code can be distributed and executed without compiler present
More secure and protects intellectual property as can’t be read without great deal of reverse engineering
Executes faster than interpreted code
Advantages interpreter vs compiler
Platform independence: source code can be run on any machine with appropriate interpreter available
Useful for program development where no lengthy recompilation each time error discovered
More secure byte code rather than source code
Interpreter disadv
Compiler disadv
Much slower than compiled because each statement translated to machine code each time encountered
errors not presented at start altogether
compiler- diff versions for diff hardware
slow recompilation if error found
e.g. C++ where compiled
Can save compiled code and run whenever
Protected intellectual property- don’t need to give away source code just object code
Need different versions for different hardware
(lengthy recompilation if one error during development)
e.g. Java where interpreted
Can be run one any hardware w VM, platform independence
Security: gives intermediate code rather than source code bc java
(no lengthy recompilation during development)
Longer time to interpret line by line
E.g. Javascript interpreted using browser
Any access to internet can interpret
Takes longer to interpret: pure interpreting
Not really closed because source code available
systems software
software needed to run computer’s HARDWARE and APPLICATION PROGRAMS and to be able to perform TASKS as requested by the user e.g. OS, utility programs, libraries and programming language translators
OS function e.g. UI
enables users to perform tasks e.g. running application software, changing settings and downloading new software
utility programs
system software designed to optimise the performance of a computer by e.g. compressing/decompressing, firewall, backing up files and restoring backup-ed files
UP: backup
several free for COMMERCIAL or personal use. specify what (source) to backup, where (destination) to backup, when (schedule auto/manual), how (zip or mirror backup). done INCREMENTALLY, at regular intervals