1 / 24

Plan 9 (modified from slides by Reynald Affeldt)

Plan 9 (modified from slides by Reynald Affeldt). 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

blair-cain
Download Presentation

Plan 9 (modified from slides by Reynald Affeldt)

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(modified from slides by Reynald Affeldt) • 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. 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

  21. 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

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

More Related