Compilation source code translated to machine code
Execution executable binary loaded into main memory and then run. Hardware follows the fetch decode execute cycle to run a program.
Software Layers
Hardware is not enough for a CS software is needed.
The software is split into layers (highest to lowest):
High level applications Where normal user interaction occurs. Most have GUI or cmd-line interfaces user requests are performed by routines at next layer down.
Tools & libraries high level apps use common activities (eg: printing) this layer exists as a collection of routines & common tools, hiding the app from details of the OS.
Operating System a program contolling all other programs & routines accessing computer resources (ie: handles I/O requests) protects upper levels from conflicts (eg: OS waits for another program to stop using a file before it is overwitten). When the OS determines it’s safe to proceed, direct calls to device drivers are performed.
Microcode & device drivers microcode directly controls CPU (note: 1 machine code instruction = many microcode instructions). Device drivers are very low level instruction to a device & have a nearly 1-to-1 relationships with device hardware. note: Mainframes use programmable microcode, PC typically has fixed microcode
Hardware Consists of digital logic components (gates, ICs, etc) and the physical devices.
1961: CTSS (Compatible TimeSharing System) one of the first machines (30 users with remote access via modem)
Research projects were competing Multics (Multiplexed Information and Computing Service) was one, but it ran into problems (was eventually completed, but it faced much opposition)
1969: Ken Thompson wrote UNICS (Uniplexed Operating and Computing System) name then changed to UNIX
1973: Ken Thompson & Dennis Ritchie rewrote UNIX using C
Present day: many version of UNIX exist Minix, Xenix, Linux etc.
File Systems:
UNIX is designed for: group-oriented research & general purpose programming
Users have: a user name, user groups & a password
The UNIX file system consists of: ASCII files (eg: source code), binary files(eg: executables) & dirs (containing files & subdirs)