JMS 1 CSE 350, Spring 2001 The Unix Time-sharing System Chuck Davin Software Design & Engineering CSE 350 Spring 2001
JMS 2 CSE 350, Spring 2001 The Unix Time-sharing System D. M. Ritchie and K. Thompson. The Unix time-sharing system. BSTJ, 57:6 (July-August, 1978), K. Thompson. Unix implementation. BSTJ, 57:6 (July-August, 1978),
JMS 3 CSE 350, Spring 2001 Features A hierarchical filesystem incorporating demountable volumes Compatible file, device, interprocess communication The ability to initiate asynchronous processes System command language selectable on a per-user basis Over 100 subsystems including a dozen languages High degree of portability
JMS 4 CSE 350, Spring 2001 Unix History First version (ca ) on DEC PDP-7 and PDP-9. Second version on unprotected DEC PDP- 11/20. Third version with multiprogramming on PDP- 11/34, 40, 45, 60, 70. Fourth version on DEC PDP-11/70 and Interdata 8/32. February, 1971: PDP-11 Unix first operational. Familiar epoch: midnight, January 1, 1970.
JMS 5 CSE 350, Spring 2001 Economics of the 1970s Hardware cost: $40,000 Software cost: two man-years Cost recovery for disk space
JMS 6 CSE 350, Spring 2001 PDP-11/70 Platform 16-bit word (8-bit byte) 768 KBytes core memory System kernel 90 KBytes Minimal system 96 Kbytes Two 200 MByte moving-head disks 20 variable speed (300 to 1200 baud) communication interfaces 12 communication lines (9600 baud) Synchronous interfaces (2400 and 4800 baud) for inter- machine file transfer Nine-track tape, line printer, phototypesetter Voice synthesizer, digital switching network, chess machine
JMS 7 CSE 350, Spring 2001 A Unix System in 1978 User population: 125 Maximum simultaneous users: 33 Directories: 1630 Files: Disk blocks (512-byte) used: 301,700 Daily command invocations: Daily (non-idle) CPU hours: 9.6 Daily connect hours: 230
JMS 8 CSE 350, Spring 2001 The C Programming Language System re-coded in C in summer, /3 bigger than assembler language version
JMS 9 CSE 350, Spring 2001 Observation "The most important role of the system is to provide a file system." (Page 1907)
JMS 10 CSE 350, Spring 2001 Filesystem Properties Internal file structure controlled by application programs Internal file structure not imposed by system Hierarchy Directories as files "." and ".." convention Links Restrictions on namespace topology Mountable volumes
JMS 11 CSE 350, Spring 2001 File Types Ordinary Directory Special –Character –Block
JMS 12 CSE 350, Spring 2001 Filesystem Representation i-Number i-List i-Node
JMS 13 CSE 350, Spring 2001 File Properties Owner user-id Owner group-id Protection bits Physical disk (or tape) address of contents Size Time of creation Time of last use Time of last modification Number of links File type
JMS 14 CSE 350, Spring 2001 File Protection User (owner) read, write, execute Group read, write, execute Others read, write, execute Set-user-id --drwxwrxrwx "Execute" permission on directories
JMS 15 CSE 350, Spring 2001 Filesystem API filep = open (name, flag) filep = create (name) n = read (filep, buffer, count) n = write (filep, buffer, count) location = lseek (filep, offset, base)
JMS 16 CSE 350, Spring 2001 File Space Management Blocks 0 through 9 indicated in i-Node Blocks 10 through 137 indicated indirectly Blocks 138 through indicated doubly indirectly Blocks and higher indicated triply indirectly Performance Techniques: caching and read- ahead
JMS 17 CSE 350, Spring 2001 Special File Naming Example Name: /dev/foo Major Device Number: selects driver code Minor Device Number: selects device instance within class
JMS 18 CSE 350, Spring 2001 File System Data Structure
JMS 19 CSE 350, Spring 2001 Process Management API processid = fork () execute (file, arg1,..., argN) processid = wait (& status) exit (status) filep = pipe () Traps, Signals Minimalist, integrated process synchronization
JMS 20 CSE 350, Spring 2001 Process Control Data Structure
JMS 21 CSE 350, Spring 2001 The Shell and Reusability Redirection Stdin, stdout, stderr Pipes and filters Argument parsing and globbing Multitasking Basic control structures
JMS 22 CSE 350, Spring 2001 Perspective "The success of the Unix system is largely due to the fact that it was not designed to meet any predefined objectives.“ (Page 1926) Motivation: dissatisfaction with existing facilities.
JMS 23 CSE 350, Spring 2001 Retrospective Design Considerations Easy to write, test, run programs –Interactive use Constraints on size Self-maintenance –Available source code
JMS 24 CSE 350, Spring 2001 Easy Programming Device-independent file abstraction No "access methods" Few system constraints on program
JMS 25 CSE 350, Spring 2001 Influences fork () from GENIE time-sharing system I/O API from Multics Shell concept from Multics Implementing "system" code as user primitives from Multics
JMS 26 CSE 350, Spring 2001 Unix Implementation 10,000 lines of C code 1,000 lines of assembler code –800 lines not possible in C –200 lines for efficiency
JMS 27 CSE 350, Spring 2001 Observation "Throughout, simplicity has been substituted for efficiency." (Page 1932)
JMS 28 CSE 350, Spring 2001 Observation "The UNIX kernel is an I/O multiplexer more than a complete operating system. This is as it should be." (Page 1945)
JMS 29 CSE 350, Spring 2001 Unsupported Features File access methods File disposition File formats File maximum size Spooling Command language Logical records Physical records Logical file names Multiple character sets Operator and operator console Login and logout