An operating system is a set of programs that creates a 'virtual machine', ties together the bits of hardware, motherboard, processor, memory, disc, etc. that make up a computer and makes it work.
| Wikipedia | Chrome | Operating System Lecture |
Batch - no interaction with user
Interactive - user can interact with program, e.g. enter data, open and save files.
Real Time - for processing data as it arrives, e.g. in process control systems where reaction to data is critical e.g. fly-by-wire.
Network - facilities to communicate with other computers and share peripherals.
| Computer Basics | Multi-touch OS 10GUI | UCB CS10 HCI |
JCL (Job Control Language) - for control of batch jobs, a sequence of instructions (like a macro).
CLI (Command Line Interpreter) - issue commands, need to know them all by heart, including complex parameters. Easy with common ones such as COPY, DELETE, FORMAT, etc. but not so easy with less common ones. No visual clues as to what commands are available or what to use (though there will be on-line help). For specialists only.
GUI (Graphical User Interface) - pioneering work at XEROX PARC in 1970s, adapted by Apple then by Microsoft. Heavy on processing power due to graphical nature.
Each program when in execution calls on resources such as memory and I/O devices, all of which have to be managed. Multi-programming, the execution of more than one program at a time, developed in the 1970s and is still used in modern microcomputers, where there may be only one user but the operating system is simultaneously monitoring and allocating a wide range of resources - memory, discs, graphics, sound, to name but a few.
Key terms: single-user, multi-user, time-slicing, multiplexing, multi-tasking.
Operating system provides means to organise files in directories, and also names and file endings such as .exe., .doc, .xls, etc.
Utilities are useful programs: they do something for the machine rather than the user, though they may also improve the machine's performance for the user.
Separate programs for: print spooling, device drivers, disc controllers, monitoring performance, networking, anti-virus, editing, compiling.
Utility program: does something useful, e.g. format, copy, delete, change attributes, defragment, compress, editor ('edit' in DOS, 'VI' in Unix).
Library program: routines brought in on demand for any user.
A compiler creates code that can be executed or run directly on a computer e.g. C, C++, Delphi Pascal. Programs are written in a 'high level' language, the instructions of which are a step removed from the level of the machine and consist of logical structures such as sequence, repetition and control. Compilers produce code that is specific to a particular CPU e.g. Intel family.
An interpreter runs code one instruction at a time, either on the processor or in a simulation of a processor within the software. Its language is similar to that of a compiler.
An assembler creates an executable program in a 'low level' language whose instructions manipulate the hardware of the central processor unit directly - registers, memory locations, bit-level instructions.
Some languages generate an intermediate code that cannot be run directly on a CPU but can be interpreted more quickly and efficiently by a software interpreter - Java is a popular example of this where bytecode is run on the Java Virtual Machine. The advantage of this approach is that Java code need only be written once and can then be run anywhere on a JVM designed for a particular platform (Write Once Run Anywhere = WORA).
| Wikipedia | History of Java | What is Java? |