430 likes | 799 Views
The Unix Time-sharing System. Chuck Davin Software Design & Engineering 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), 1905-1929. K. Thompson. Unix implementation.
E N D
The Unix Time-sharing System Chuck Davin Software Design & Engineering 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), 1905-1929. • K. Thompson. Unix implementation. BSTJ, 57:6 (July-August, 1978), 1931-1946.
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
Unix History • First version (ca. 1969-70) 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.
Economics of the 1970s • Hardware cost: $40,000 • Software cost: two man-years • Cost recovery for disk space
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
A Unix System in 1978 • User population: 125 • Maximum simultaneous users: 33 • Directories: 1630 • Files: 28300 • Disk blocks (512-byte) used: 301,700 • Daily command invocations: 13500 • Daily (non-idle) CPU hours: 9.6 • Daily connect hours: 230
The C Programming Language • System re-coded in C in summer, 1973 • 1/3 bigger than assembler language version
Observation "The most important role of the system is to provide a file system." (Page 1907)
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
File Types • Ordinary • Directory • Special • Character • Block
Filesystem Representation • i-Number • i-List • i-Node
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
File Protection • User (owner) read, write, execute • Group read, write, execute • Others read, write, execute • Set-user-id --drwxwrxrwx • "Execute" permission on directories
Filesystem API • filep = open (name, flag) • filep = create (name) • n = read (filep, buffer, count) • n = write (filep, buffer, count) • location = lseek (filep, offset, base)
File Space Management • Blocks 0 through 9 indicated in i-Node • Blocks 10 through 137 indicated indirectly • Blocks 138 through 16521 indicated doubly indirectly • Blocks 16522 and higher indicated triply indirectly Performance Techniques: caching and read-ahead
Special File Naming • Example Name: /dev/foo • Major Device Number: selects driver code • Minor Device Number: selects device instance within class
Process Management API • processid = fork () • execute (file, arg1, ..., argN) • processid = wait (& status) • exit (status) • filep = pipe () • Traps, Signals • Minimalist, integrated process synchronization
The Shell and Reusability • Redirection • Stdin, stdout, stderr • Pipes and filters • Argument parsing and globbing • Multitasking • Basic control structures
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.
Retrospective Design Considerations • Easy to write, test, run programs • Interactive use • Constraints on size • Self-maintenance • Available source code
Easy Programming • Device-independent file abstraction • No "access methods" • Few system constraints on program
Influences • fork () from GENIE time-sharing system • I/O API from Multics • Shell concept from Multics • Implementing "system" code as user primitives from Multics
Unix Implementation • 10,000 lines of C code • 1,000 lines of assembler code • 800 lines not possible in C • 200 lines for efficiency
Observation "Throughout, simplicity has been substituted for efficiency." (Page 1932)
Observation "The UNIX kernel is an I/O multiplexer more than a complete operating system. This is as it should be." (Page 1945)
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