1 / 32

Plan 9

Plan 9. Worst movie ever made (by Ed Wood) An operating system and associated utilities (by the people who made Unix and C) Three design principles: Resources are represented as file trees Resources are privately assembled by processes Resources are accessed by a standard protocol

shalin
Download Presentation

Plan 9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Plan 9 • Worst movie ever made (by Ed Wood) • An operating system and associated utilities (by the people who made Unix and C) • Three design principles: • Resources are represented as file trees • Resources are privately assembled by processes • Resources are accessed by a standard protocol • Inferno is a light version of Plan 9

  2. Outline • A typical Plan 9 installation • A traditional file server • Some unusual file servers • Namespace • Overview of the 9P protocol • User interface • Programming under Plan9 • The Inferno operating system • The Limbo programming language

  3. A Typical Plan 9 Installation Fiber Network CPU server CPU server File server Ethernet Gateway Terminal Terminal Terminal

  4. The File System Emelie WORM media SCSI disks

  5. The Backup Service % grep ‘mouse bug fix’ 2000/*/sys/src/cmd/rio/file.c … % bind /n/dump/2000/0416/sys/include /sys/include … /n /dump /2001 50 0416 0417 0418 60 70 usr usr usr 80 90 glenda glenda glenda 100 foo foo foo

  6. The File Metaphor • Unix: most things are files ○ /dev/tty × network interfaces ○ /proc × X Windows • Plan 9: everything is a file ○emelie○ window system ○backup○ text editor ○/dev/cons ○ ftp ○/prog ○ tar ○ network interfaces○ …

  7. Console Device:/devor#c • Keyboard input/output, miscellaneous information • /dev/consis the equivalent of/dev/tty • /dev/time: current date • /dev/cputime: process computation time • /dev/pid: process’ id • /dev/user: process’ owner • % echo newtime > /tmp/newtime • % bind /tmp/newtime /dev/time

  8. Environment Device:/envor#e • Environment variables and their values • /env/prompt: user’s prompt • % cd ‘#e’ • % echo newprompt > prompt

  9. Network Protocols over IP:/netor#I • /net/dns: domain name lookup • A machine with a Datakit interface can use the TCP interface of another machine % echo www.yahoo.co.jp!http > /net/dns • % import harp /net • % telnet tcp!www.yahoo.co.jp

  10. Network Protocols over IP:/netor#I • /net contains one directory per protocol % cd /net/tcp % cat clone % cd 0 % echo connect ip_address!port_number > ctl #I udp tcp clone 0 ctl status data local remote listen

  11. Running Programs:/progor#p • /progis the equivalent of Linux/proc • Remote debugging • A rawpscommand • % import harp /proc • % db /prog/0/text /prog/0/mem % cat /prog/*/status

  12. Graphics Device:/devor#d • This device serves an interface to • The graphics system • The window system (rio) • % cat /dev/draw/new • % cd 0 • % lc • ctl data refresh colormap • % echo new –dx 200 –dy 400 –cd /sys/src/cmd sam > /dev/wctl • % lp /dev/wsys/0/window

  13. Serial Communication Control:/devor#t • Command a serial port • of a machine running Linux’s Inferno • from another running Windows’ Inferno • % mount tcp!piccolo.is.s.u-tokyo.ac.jp!styx/n/linux • % bind /n/linux/dev/eia0ctl /dev/eia0ctl • % echo b1200 > /dev/eia0ctl

  14. A Per-process Namespace • User processes construct namespace using • mount • bind • union • unmount • Most services are conventionally located • Comparison • Unix: a global mount table for all processes • Plan 9: a mount table per process stored in the kernel mount table from_fileto_file /bin /$cputype/bin, /rc/bin /n/remote tcp!piccolo.is.s.u-tokyo.ac.jp!9p

  15. 9P UDP TCP IL URP Fiber IP DK The 9P Protocol • The (invisible) glue that holds Plan 9 together • Similar to NFS • Composed of 17 messages • 3 for authentication • 14 for object manipulation • 14 pages long description

  16. file tree 100 110 120 9P Transaction 9P client 9P server user process the client’s kernel Tsession mount(“tcp!ip_address”) Tattach 50 Rattach 100 Tclone 50 70 Twalk 70 “dev” open(“/dev/cons”, OREAD) Twalk 70 “cons” Topen 70 Ropen 120 mount table fidqid 50 100 70 120

  17. 9P Authentication 9P client 9P server authorizationserver user process the client’s kernel Tsession () challenge_c Rsession () challenge_s,id_s challenge_s, id_s,id_c key_c{challenge_s, id_c, nonce} Ok, id_c can speak to id_s nonce{challenge_s} Ok, id_c isauthenticated key_s{challenge_s, id_c, nonce} Tattach () Ok, id_s isauthenticated Rattach () nonce{challenge_c}

  18. Programming • New C compilers • 8c for Intel, kc for SPARC, … • ANSI C + goodies (inheritance, …) • Simplified preprocessor (no #if, …) • No nested include files • Smaller library • Slightly difference syntax (nil, void main (…)) • Preprocessing, parsing, register allocation, code generation, assembly

  19. Programming • A new make: mk • Simplified • New Linkers • 8l, kl, … • Perform instruction selection, branch folding, instruction scheduling, executable writing • Don’t require indications on which library to load • Don’t do dynamic linking! • A new debugger: acid • A new shell: rc

  20. /386/bin: Intel binaries /386/include: machine dependent /acme: acme programs /adm: administrative data /dev/drivers: device drivers built into the kernel /lib: databases /lib/keyboard: Unicode shortcuts /lib/ndb: networking data /mnt: user file servers /mnt/plumb: plumbing rules /mnt/acme: acme configuration /mnt/keys: shortcuts /n: archives and remote systems /n/tapefs: archives /n/ftp: ftpfs /n/harp: remote system /sys/include: machine independent headers /sys/src/9/fs: file server /sys/src/9/port: portable part of the kernel /sys/src/9/pc: Intel specific part of the kernel /sys/src/9/pc/devxxx.c: device drivers /sys/src/libc: libc /sys/src/libdraw: graphics library /sys/src/libio: buffered io /usr: users The File Hierarchy

  21. User Interface • Commands: Unix-like • Text edition: cat, ed, sam, acme • Unicode everywhere • Mouse centric: • no cursor-addressed programs • 3 buttons unavoidable (chored actions) • Plumbing • text-based inter application mechanism

  22. Inferno • A small Plan 9 • Can run • As the native operating system • As a hosted operating system • As a plug-in for Internet Explorer • A different looking: • wm/wm and prefab window managers • Graphics with Tk • Mostly open source

  23. Limbo • User applications run above the DIS virtual machine • A C-like language that compile to bytecodes and that run • Over the VM (30/40 times slower than C) • JIT compilation (2/3 times slower than C)

  24. Limbo • Garbage collection: • References counting • A special keyword for cyclic data structures • Exceptions • Dynamically loaded modules • OS interface in sys (written in C) • Tk 4.0 in draw (written in Limbo)

  25. Limbo: Syntax • Pascal-like type declaration x: int; x := 42; • C-like assignments • Constants EOF: con –1; • Enumeration enum {Red, Blue, … }: con iota; • Strings are not\0terminated

  26. Limbo: Data Types • Array slices y := x[1;3]; • Explicit type cast b := byte 20; str := string 99; • Lists, tuples • Abstract data types can contain functions • Arefkeyword to build reference out of values

  27. Limbo: Concurrent Programming • Thread • Startspawnfunction_name • Exit byexit • Communication by send/receive above channels channel <-= value; value =<- channel;

  28. Compatibility Issues • Compatibility is not an issue (sic) • However: • vt: provides vt100 terminals emulation • APE: ANSI POSIX Environment (ape/psh: POSIX shell, /bin/cpp: an ANSI C preprocessor, cc: an ANSI C compiler…) • vnc: to use remote X application • wm/brutus: emulates emacs under Inferno • drawterm: to use CPU and file servers from Unix or Windows • u9fs: runs on NFS machines and understand 9P • Plan 9 has an implementation of X

  29. Conclusion • My 2円: Small implementations suitable for educational purposes • Systems Software Research is Irrelevant – Rob Pike • “I think Plan 9 was a great idea and it should’ve been released under an open-source license when it was first done, eight years ago (…)” – Brian Kernighan • After all, Unix took 10 years to catch on… (in a world without Windows nor Linux though)

More Related