UNIX History Easterhegg March Bernd Wachter



Similar documents
Understanding the OS Architecture and Linux History. Zhiqiang Lin

CSE 265: System and Network Administration

Unit 10 : An Introduction to Linux OS

Components of a Computing System. What is an Operating System? Resources. Abstract Resources. Goals of an OS. System Software

Operating Systems. Study this screen display and answer these questions.

Example of Standard API

Introduction to Computer Administration. System Administration

Lecture 1: Introduction to UNIX

Operating System Structures

CSE 265: System and Network Administration. CSE 265: System and Network Administration

CSE 265: System and Network Administration. CSE 265: System and Network Administration

FAME Operating Systems

Software: Systems and Application Software

How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X

Kernel Types System Calls. Operating Systems. Autumn 2013 CS4023

Finding Aid to the Berkeley Software Distribution Records,, bulk No online items

Chapter 10 Case Study 1: LINUX

Operating System Components

(Advanced Topics in) Operating Systems

Chapter 3 Operating-System Structures

3 - Introduction to Operating Systems

OS Concepts and structure

OPERATING SYSTEM SERVICES

Chapter 3: Operating-System Structures. System Components Operating System Services System Calls System Programs System Structure Virtual Machines

The Internet Server. Hong Q. Bui Chris Zuleeg

Operating System Structure

CPS221 Lecture: Operating System Structure; Virtual Machines

Evolution of the Data Center

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

An Open Source Wide-Area Distributed File System. Jeffrey Eric Altman jaltman *at* secure-endpoints *dot* com

Fall Lecture 1. Operating Systems: Configuration & Use CIS345. Introduction to Operating Systems. Mostafa Z. Ali. mzali@just.edu.

VMware Server 2.0 Essentials. Virtualization Deployment and Management

CS420: Operating Systems OS Services & System Calls

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Open Source The Revolution

CSE 120 Principles of Operating Systems. Modules, Interfaces, Structure

CHAPTER 15: Operating Systems: An Overview

ReactOS is (not) Windows. Windows internals and why ReactOS couldn t just use a Linux kernel

Virtual Private Systems for FreeBSD

ELEC 377. Operating Systems. Week 1 Class 3

Operating Systems. Design and Implementation. Andrew S. Tanenbaum Melanie Rieback Arno Bakker. Vrije Universiteit Amsterdam

Outline. Operating Systems Design and Implementation. Chap 1 - Overview. What is an OS? 28/10/2014. Introduction

Software systems and issues

CS 103 Lab Linux and Virtual Machines

Betriebssysteme Winter Betriebssysteme. (c) Peter Sturm, Uni Trier 1

Chapter 2 System Structures

Introduction. What is an Operating System?

Tutorial 0A Programming on the command line

Operating Systems OS Architecture Models

HP-UX Essentials and Shell Programming Course Summary

Command Line Crash Course For Unix

Citrix ICA UNIX Client Quick Reference Card

IBM AIX Sun Solaris HP HP-UX Linux 1969 AT&T Bell Labs Unix Linux kernel Linus Torvalds Linux. Salus A Quarter Century of Unix Unix

Unix::Statgrab - System Monitoring

Linux Kernel Architecture

Symantec NetBackup Enterprise Server and Server 7.x OS Software Compatibility List

Computers: Tools for an Information Age

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

Operating System Compiler Bits Part Number CNL 6.0 AMD Opteron (x86-64) Windows XP x64 Intel C Microsoft Platform SDK 64 P10312

The Linux Operating System and Linux-Related Issues

Chapter 6, The Operating System Machine Level

RISC-V Software Ecosystem. Andrew Waterman UC Berkeley

Cisco Networking Academy Program Curriculum Scope & Sequence. Fundamentals of UNIX version 2.0 (July, 2002)

Operating System Structures

Computer Architecture. Secure communication and encryption.

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY Operating System Engineering: Fall 2005

Betriebssysteme. Monolithen und Mikrokerne. Way to Access OS FuncDonality. (c) Peter Sturm, Uni Trier

Introduction to Open Source. Marco Zennaro Carlo Fonda

How to Install and Run Tibia on Linux Using Wine without Windows Contents

Using Power to Improve C Programming Education

Operating System Overview. Otto J. Anshus

Lecture 22: C Programming 4 Embedded Systems

REXX-like Macro Language for UNIX and Windows

Star System Deitel & Associates, Inc. All rights reserved.

Cincom Smalltalk. Installation Guide P SIMPLIFICATION THROUGH INNOVATION

24x7 Scheduler Multi-platform Edition 5.2

The Linux Operating System

The System Monitor Handbook. Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig

Operating System Components and Services

HULFT7e for i5os(ver.7.3.0) Effective on 3 Apr HULFT7e for UNIX-M(Ver.7.3.0) HULFT7e for UNIX-L(Ver.7.3.0) Effective on 3 Apr.

JP1/IT Desktop Management 2 - Agent (For UNIX Systems)

CSC230 Getting Starting in C. Tyler Bletsch

PARALLELS SERVER 4 BARE METAL README

Operating System Software

UNISOL SysAdmin. SysAdmin helps systems administrators manage their UNIX systems and networks more effectively.

Cisco Setting Up PIX Syslog

Review from last time. CS 537 Lecture 3 OS Structure. OS structure. What you should learn from this lecture

How to use PDFlib products with PHP

* Note: A=1 Lic., B=25 Lic., C=100 Lic.

Operating Systems for Parallel Processing Assistent Lecturer Alecu Felician Economic Informatics Department Academy of Economic Studies Bucharest

Outline: Operating Systems

How To Understand The History Of An Operating System

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

The Network Backup Solution

Installing and Licensing IDL 6.0

System Structures. Services Interface Structure

Server Monitoring. AppDynamics Pro Documentation. Version Page 1

After studying this lesson, you will have a clear understanding of, what an Operating System is. functions of an Operating System

The Evolution of the Unix Time-sharing System*

Transcription:

UNIX History Easterhegg March 2005 Bernd Wachter bwachter@lart.info

Overview Introduction Part I The birth of UNIX (1969, early 1970th) Part II UNIX starts getting beautyful Part III Politically incorrect operating system (at least in the Texas): BSD Part IV Everyone does UNIX. And war is cool. 1

Part I The Birth of UNIX 2

Some People behind UNIX Ken Thompson can be blamed for writing much of the basic stuff Dennis M. Ritchie can be blamed for some userland and finishing C Doug McIllroy can be blamed for pipes Ken Thompson and Dennis Ritchie in the 1970s 3

Multics GE, AT&T and MIT were working together on Multics The AT&T team had a GE 635 for developing Multics Multics was meant for providing services for several hundred users on one machine not much more powerful than an i386 Multics seemed to become a first hurd, most efforts were stopped The Multics team was searching for alternatives and tried to aquire hardware ( Give us some $100 000 for a machine, we ll write an operating system for it ) 4

Spacetravel What is this space travel game? Thompson wrote this game on their GE 635. One game was worth $50 $75. Thompson rewrote this game for an unused PDP-7 when it became clear that they won t keep the GE 635 much longer. Thompson learned how to program the PDP-7 by rewriting his game, thus beeing able to write an operating system for it later. They needed a floating point arithmetic package, debugging subsystem, display routines Everything was written in PDP-7 assembly assembled with a crossassembler producing paper-tapes under GECOS. (Don t you ever complain about building cross-cc toolchains again...) 5

Look, it s a Filesystem! (1969) The MULTICS-group got a disk to play with. filesystem for it Thompson wrote a The filesystem was first used on the GE 635, then ported to the PDP- 7 We got the basic system calls open, read, write, creat (sic!) The filesystem gets loaded by paper-tape Input on the filesystem is controlled via paper type. Output what output? (Except rattling noise) No way to create device files or even directories after filesystem initialization Every directory contained an i-list as linear array of i-nodes 6

Adding some spice: Interaction Using a filesystem without seeing what it does is boring. They wrote some tools to load with the filesystem from paper tape, of course They had a shell, used to load the additional tools. exec() was born copy, print, delete, edit everything was working. Selfhosting, we want selfhosting! They wrote an assembler and were able to assemble future versions on itself. 7

Commands, Commands UNIX Edition 1 tm was analogous to the time command time() returned the number of sixtieth of seconds since 1/1/1971 which will make time t overflow within about 2.5 years File names were limited to 8 byte, directory names to 10 byte UserID username mappings where listed in /etc/uids The permission bits were different: 01 write, non owner 02 read, non owner 04 write, owner 10 read, owner 20 executable 40 set user id on execution 8

Even more Commands UNIX Edition 2 sort exists but has no options cc only has one option: -c switch() in C was supplied as a library function. sleep(2) sleeps for n/60 seconds. The bugs reads Due to the implementation the sleep interval is only accurate to 256/60 (4.26) seconds. Even then, the process is placed on a low priority queue and must be scheduled. 9

Part II UNIX starts getting beautyful 10

Porting UNIX to the PDP-11, or: Text processing Porting the kernel and the userland most stuff was written in PDP-7 assembly Writing roff in PDP-11 assembly (ouch. That s already pretty painful in C...) The first real use of UNIX was for writing patent documents (oh, irony...) at BTL Three reasons why UNIX was taken: roff could output line-numbered pages, UNIX supported terminals which could print most of the math symbols needed in the patents and most important taking part in an internal alpha test. 11

C Thompson thought they d need a Fortran compiler for UNIX/PDP-7. However, while doing the grammar he realized he didn t want Fortran at all He created a language called B, loosely based on BCPL Ritchie took over B-development, by adding types to B Early C did not contain stuff like structs 12

We got C, we want to use C Thompson started the rewrite in 1972, but got frustrated and abandoned it Ritchie added structs and more datatypes to C By end of summer 1973 UNIX was rewritten in C 13

Input redirection / Process control Inspired by Multics: iocall attach user_output file xx list iocall attach user_output syn user_i/o Pretty much input for a heavily used operation. UNIX syntax: ls >xx Exec on todays UNIX: read command, fork(), child exec()s while parent wait()s, child exit()s, and parent reads another command Exec on ancient UNIX: shell closed all open files and opened terminal files for input and output, read command, linked to command, open file, remove link, exec(), exit; exit causes the system to overwrite the process with a new shell 14

Pipes! Pipes were implemented because Doug McIlroy annoyed the others for month with it cat into grep into... or who into cat into grep is easy to say but how to implement without messing up options? Thompson implemented the pipe syscall in one night (and implemented support for it in the shell and most applications) The UNIX-paradigm one tool one job was born. 15

Values of will give raise to dom! error message in mv; they got this message from a cancelled print job a.out! The early PDP-11 did not contain memory protection. One was expected to jell A.OUT before trying new software... By end of 1974 Thompsen tought at UC Berkeley. A student Bill Joy was frustrated with ed and developed em. The first contribution to UNIX from an external person. 16

Part III BSD 17

Random facts 2.8BSD+ (1983) The kernel will run on any PDP-II with memory management hardware and at least 192K bytes of memory, including the 11/23, 11/24, 11/34, 11/34A, 11/40, 11/44, 11/45, 11/55, and 11/70. Process control for stopping, starting and putting processes into background Automatic reboots, after crashes or on demand (Wow.) vfork, an optimized and faster crashing fork (single data, process is not allowed to change the data; vfork may be equivalent to fork) A TCP/IP implementation is included (!) Pascal (sic!), INGRES (even more sic!), ex,... 18

BSDI to 4.4BSD (1994) Berkeley Software Design, Inc. BSD/OS based on the free BSD386 Customers paid for both sourcecode and more important support BSDI got sued by AT&T for unlicensed distribution of UNIX source in the early 90th They dropped 3 files and edited some more; details of the agreement between AT&T and BSDI are closed, but where partially opened in the SCO case BSDI released the changed source as 4.4BSD-lite. FreeBSD/NetBSD were forced to switch to the 4.4BSD-codebase BSDI did not release any other versions of BSD 19

FreeBSD (1992) Started as Unofficial 386BSD Patchkit in 1992 by Jordan Hubbard David Greenman suggested to release their own BSD Release 1.0 in December 1993 Upgraded to make use of 4.4BSD-lite, resulting in releasing FreeBSD 2.0 in November 1994 Introduced the ports collection now used by all BSDs (and even by some other UNIX clones) Meant as UNIX for non-techies 20

NetBSD (1993) Started in 1993 as a hype-free operating system build by a network community Portable?! You call Linux portable?! NetBSD supports 50+ architectures Main focus of NetBSD is portability and academic research NetBSD ist still pretty much hype-free 21

OpenBSD (1995) Theo de Raadt forked NetBSD in 1995 OpenBSD. Reason: He disagreed with the NetBSD coreteam. The first release 2.0 was made in 1996 Because Theo is resident in Canada he could include strong cryptography (which was forbidden to export by US law). OpenBSD a bit portability with NetBSD. However, many architectures have been removed 22

Darwin 5BSD? (2000?) Darwin is a microkernel which does not share much with the other BSDs The userland is pretty much ordinary BSD Apple aims to be compatible to FreeBSD, their BSD reference platform 23

Part IV Everyone does UNIX. And war is cool. 24

Commercial UNIX IBMs AIX Compaqs Tru64 on Alpha HPs HP-UX on PARISC Suns Solaris on SPARC SGIs IRIX,... 25

The Sun is raising (1982) Sun decided to use UNIX for workstations (!) in 1982 Sun tried to make SunOS a single-user operating system with a windowing system on top SunOS 2.0 got an NFS-implementation in 1984 (Sun, thanks for all the RPC-crap) SunOS 4.0 (aka Solaris 1) added support for the SPARC cpu, 4.1 added OpenWindows (X11) In 1992 Solaris 2 had SMP and threads (POSIX threads are modelled after this) Current Solaris supports 160 CPUs, SPARC64, i386 and ia64 26

Linux comes up (1991+) Linus Torvalds hacked a task switcher writing As and Bs to the terminal to get used to programming his new i368-machine The task switcher gets extended pretty soon to a stand-alone terminal application he uses to dial-in to the universities UNIX systems Minix does not allow redistribution changes; Torvalds decides to extend its terminal application to become a UNIX clone for i386 GNU userland works pretty soon, Linux can be compiled on itself By 1993 Linux can handle TCP/IP, XFree,... 27

UNIX 95 / wanna buy UNIX? AT&T sold the UNIX-rights to Novell, Novell sold it to SCO, SCO got bought by Caldera, Caldera renamed itself into SCO and provides much fun by suing everyone. Novell claims they did not sell the right to sue anybody because of UNIX. The OpenGroup got founded and released the POSIX and later SuS papers (SuS3: IEEE 1003 and ISO/IEC 9945) IBMs mainframe operating system OS/390 got certified as the first UNIX/95-system which did not originate from the AT&T-source Windows NT implements parts of the POSIX specification. Some got dropped with Windows 2000, but there are 3rd party tools 28

A minimal part of the UNIX tree 29