SlideShare a Scribd company logo
1 of 57
Download to read offline
Plan 9: Not (Only) A Better UNIX




Jim Huang ( 黃敬群 ) <jserv@0xlab.org>
Developer, 0xlab – http://0xlab.org/
                               May 15, 2012 / JuluOSDev
Rights to copy
                                                                © Copyright 2012 0xlab
                                                                       http://0xlab.org/
                                                                       contact@0xlab.org
Attribution – ShareAlike 3.0
You are free                                          Corrections, suggestions, contributions and
                                                                         translations are welcome!
✔  to copy, distribute, display, and perform the work
✔  to make derivative works                                           Latest update: May 15, 2012
✔  to make commercial use of the work
Under the following conditions
      Attribution. You must give the original author credit.
      Share Alike. If you alter, transform, or build upon this work, you may distribute the
      resulting work only under a license identical to this one.
●  For any reuse or distribution, you must make clear to others the license terms of this
   work.
●  Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
Beyond this presentation

• http://sync.in/16W2nkk2vZ
• Design our own world-dominating OS.
• Discuss Plan 9, an OS that many people thought
  should have dominated the world.
• Meeting of Open Source Users in Tainan (5/19)
  http://mosut.org/
• COSCUP 2012
  – OSDev Group
  – Call for Participation!
• NCKU Lecture (Sep 2012)
  – Learn system programming for ARM Cortex-M
  – RTOS, toolchain, system modeling
History always inspires us

• 「雲端作業系統」 is not a new word.
  – Clouds!
• Clouds is actually 2 separate operating systems
  – Clouds V1, based on VAX kernel (1986)
  – Clouds V2, based on Ra kernel (~1989)
• Purpose: Support distributed research at Georgia
  Institute of Technology
Clouds
• Based on the object/thread paradigm
• At OS level there is only one type of object – clouds
• Ra kernel implements persistent virtual memory
   – Threads travel through objects
  – Entry points
「十年前你能想像現在人們在爭論
*BSD 與 Linux 哪個使用者體驗比較
           好嗎?」
          from clkao
In memory of the heros...

• Dennis M. Ritchie (dmr; 1941-2011)
  – UNIX, Plan 9
  – Related talk: Plan 9, May 15, 2012

• Jochen Liedtke (1953-2001)
   – L4 microkernel
  – Related talk: L4 Microkernel, Feb 7, 2012
Some Areas for discovery
• Networking / Sockets
• Threading
• File I/O
• Security
• Scheduling
• Windowing System / User Interface
• Examples:
   – Eliminate all non-unicode char *’s.
   – Add an “e” “creat()” system call (Ken Thomson)
   – Copy / paste: an open problem (consolidate to a
     centralized copy/paste server).
Agenda   (1) Design Concepts
         (2) Essential Plan 9
         (3) Renaissance
Design Concepts
Unix Origins (~-1969)
• Bell Labs has a long history in early operating systems, for
  example BE-SYS for IBM 709x machines; Multics
• Ken Thompson wanted to write a computer operating system
  by the 1960s:
   – Explore structures for building OS
   – Build something for our own group to use
• Fundamental idea: a good way to represent data (disk files)
• First steps for Unix:
   – find concrete representation for data on disk
   – define access methods to data
• Earliest Unix simply tried to build some superstructure to test
  Thompson’s ideas
Early Ideas about Unix (1969-1972)

• Much was inherited, especially from Multics project
• Files contain just a sequence of bytes:
   – interpretation is up to applications
  – optimization of access is up to operating system
  – preference is for files with readable text, not binary
• Files are named in a hierarchical, tree-like name
  space, e.g.
  /usr/dmr/japan/japanslides.ppt
File System access operations

• Basic operations are very simple:
  – handle = open(filename, read-or-write-mode)
  – handle = create (filename, protection-mode)
  – read(handle, buffer, nbytes)
  – write(handle, buffer, nbytes)
  – close(handle)
  – seek(handle, place)
Hierarchical Names
/
    -- source
     -- shell
                sh1.c
                sh2.c
       …
     -- usr
           -- ken
       …
           -- dmr
                -- japan
                        japanslides.ppt
           …
      …
     -- bin
           Sh
      …
     -- ...
Names for other things

• Unix introduced a consistent abstraction: names for
  I/O devices as part of the same hierarchy, for example
  – /dev/tty23    (name of terminal 23)
  – /dev/disk/disk03     (name of a whole disk)
  – /dev/mem   (name for main memory)

• These really exist in the file system and the same
  protection and ownership properties are applied as
  with ordinary files
• To the extent possible, they look like the same byte
  streams as plain disk files
• Some (like terminals and networks) have some
  special operations that apply: “I/O controls”
Remote file system
• By 1980s, Sun (with NFS), AT&T Computer Systems (RFS), and
  Bell Labs Research (NetA) were building “remote file systems”
  -- others pioneered also, like Xerox
   – Using RPC (remote procedure call) mechanisms, attach file
     system hierarchies on other machines to a local machine
• Important generalization: approach to a distributed system
  transparent to applications
• Some problems:
   – How usable are remote I/O devices?
     • Some problems with protocols and blocking devices
  – How usable are remote resources?
     • Interworking across machine architectures, e.g. Differences in byte
       ordering
Next step: Plan 9 (1990-2003)
• Designed in mid 80’s by many of the creators of UNIX
  (Rob Pike, Ken Thompson, Brian Kernighan, Dennis Ritchie)
• Paradigm shift in mid 1980’s
  – From: Large centralized timeshared computers
  – To: Networks of smaller personal machines (UNIX
    ‘workstations’)

• Original idea: define a remote protocol (called 9P) to
  talk to the file system
• Unix began with a structural idea:
   – How to represent a local file system?
• Plan 9 began with this structural idea:
  – How to talk to resources (local or remote)?
“Plan 9 from Bell Labs” based on “Plan 9 from Outer Space.”


                                  Worst movie ever made
                                  (by Ed Wood)
Plan 9 from Bell labs
• Designed in mid 80’s by many of the creators of UNIX
  (Rob Pike, Ken Thompson, Brian Kernighan, Dennis Ritchie)
• Inferno is a light and embedded version of Plan 9
   – sold to Vita Nuova Holdings and has been released
     under GPL/MIT license.
• “Build a UNIX out of little systems”
   – not “a system out of a lot of little Unixes”
   – Take the good things
      • Tree-structured file system
      • “Everything is a file” model
   – Toss the rest (ttys, ioctl(), signals!)
Plan 9 Goals
                                    Plan 9 Distributed Operating System
Centralized Time shared Systems
    Mainframe
                                                           High Speed
                                                           Network
                       Terminals
                                   File Servers                         CPU Servers
                                     Centrally located multiprocessor machines with large
                                   memories and high bandwidth point to point interconnects.



                                                     Medium Speed Network
 Personal Workstation Systems
                                    Terminal
Plan 9 Design Principles

• Everything is a file”
  – Standard naming system for all resources: pathnames
• “Remote access” is the common case
   – Standard resource access protocol: “9P” (“9P2000”)
   – Used to access any file-like thing, remote or local
• Personal namespaces
  – Naming conventions keep it sane
• A practical issue: Open Source
  – Unix source not available at “Bell Labs”, its birthplace!
Plan 9 Assumptions

• Reliable machine-room file servers
• Shared-memory multiprocessor cycle (CPU) servers
   – Located near file servers for fast access
• Remote-access workstation terminals
  – Access your view of the environment
  – Don't contain your environment
  – Disk is optional
     • Typically used for faster booting, file cache
  – “Root directory” is located on your primary file
    server
Everything is a File really.

• In many early operating systems, different types of
  block devices had different API’s.
• One major innovation in UNIX was the single file I/O
  API for multiple devices.
• Plan 9 treats virtually all devices and services as file-
  based services:
   – telnet
   – ftp
   – nfs
Notable architecture

• All system interfaces through file system. (pre-Linux)
• Workstation - independent working environment
   – aggregated resources, remote and local.
• /proc
   – All processes are visible as files
• /net
   – All network traffic read/written through file system
• Can import POSIX apps, emulate Berkeley socket
  interface through APE (ANSI/POSIX Environment)
Example: Open a socket
% cat /net/tcp/clone/ctl
44
% cd /net/tcp/44
% echo connect 128.2.194.80!79 > ctl
% echo ping > data
% cat data
pong
Namespace

• Any file resource can be “mounted” in a customizable
  directory hierarchy, or namespace:
• Several directories can be mounted at the same point
  – replaces the need for a $PATH
  bind /home/shilad/bin /bin
  bind /i386/bin /bin
• Copying a local file foo to a remote floppy:
  import lab.pc /a: /n/dos
  cp foo /n/dos/
• Piping the output of foo on host1 to bar on host2
  cpu -h host1 foo | cpu -h hos2 bar



                                                      27
Communication Protocol
• File-based API supports 17 standard I/O file operations
• “Device drivers” (e.g. a telnet server) need only
  implement the 17 operations.
• A mounting service transparently transmits local file
  commands to remote systems using the 9P protocol.




                                                            28
Synchronization

• rendezvous system call:


  Thread 1                       Thread 2
  rendevous("foo",value1)        rendezvous("foo",value2)


                    both calls block
                   until they receive
         value2      the “foo” tag       value1
Security

• No superuser
• An authentication server maintains a database of
  authentication keys for all users
• Both client and server exchange encryption
  challenges and responses so each side is convinced
  of the others’ identity.
• All 9P network communications are secure
Plan 9 Failure

• In 1998, Lucent pulled developers off of Plan 9 to
  focus on related Inferno OS.
• Neither Plan 9 nor Inferno were commercially
  successful.
• Most experts agree that Plan 9 was technically
  superior to UNIX but…
• Most experts agree that Plan 9 was not superior
  enough to convert users of UNIX
Plan 9 Success

•   Plan 9 open-sourced in 2000
•   Dedicated developer and user base remain today
•   Google Summer of Code Project
•   Plan 9 influenced Linux / BSD:
     – /proc filesystem
    – clone() interface
    – As of 2.6.14, 9P-based file device drivers in stable
      Linux Kernel
Essential Plan 9
Definitions
• 8½
  – The Plan 9 window system, which provides textual I/O and bitmap graphic services
    to both local and remote client programs by offering a multiplexed file service to
    those clients. It serves traditional UNIX files like /dev/tty as well as more unusual
    ones that provide access to the mouse and the raw screen. Bitmap graphics
    operations are provided by serving a file called/dev/bitblt that interprets client
    messages to perform raster operations.
• Rc
  – A command interpreter for Plan 9 that provides similar facilities to UNIXs Bourne
    shell, with some small additions and less idiosyncratic syntax.
• 9P Protocol
  – The Plan 9 file system protocol. It is structured as a set of transactions that send a
    request from a client to a (local or remote) server and return the result.
• IL Protocol
  – IL is a custom implemented network protocol to transport the remote procedure call
    messages 9P.
File service architecture
                                 Lookup
                                 AddName
                                 UnName
      Client computer            GetNames          Server computer


Application   Application                          Directory service
 program       program




                                                     Flat file service

        Client module


                                   Read
                                   Write
                                   Create
                                   Delete
                                   GetAttributes
                                   SetAttributes
NFS architecture
                                                            Client computer


                        Client computer                                 NFS        Server computer
                                                            Application
                                                                        Client
                                                             program


                  Application     Application                                                  Application
                                                                Kernel                          program
                   program         program
    UNIX
system calls

UNIX kernel           Virtual file system                                          Virtual file system
                                                       Operations
 Operations
                                                          on
 on local files
                                                       remote files
                                file system




                     UNIX                                                                 NFS       UNIX
                                               NFS                                NFS     Client
                      file                                                                           file
                                              client                             server
                                Other




                    system                                                                         system




                                                         NFS
                                                       protocol
                                                  (remote operations)

                                                                                                             *
NFS server operations (simplified)
                                   fh = file handle:


                                    Filesystem identifier     i-node number i-node generation

read(fh, offset, count) -> attr, data                  Model flat file service
write(fh, offset, count, data) -> attr                 Read(FileId, i, n) -> Data
create(dirfh, name, attr) -> newfh, attr               Write(FileId, i, Data)
remove(dirfh, name) status                             Create() -> FileId
getattr(fh) -> attr
                                                       Delete(FileId)
setattr(fh, attr) -> attr
lookup(dirfh, name) -> fh, attr                        GetAttributes(FileId) -> Attr
rename(dirfh, name, todirfh, toname)                   SetAttributes(FileId, Attr)
link(newdirfh, newname, dirfh, name)
readdir(dirfh, cookie, count) -> entries
                                                       Model directory service
symlink(newdirfh, newname, string) -> status
readlink(fh) -> string                                 Lookup(Dir, Name) -> FileId
mkdir(dirfh, name, attr) -> newfh, attr                AddName(Dir, Name, File)
rmdir(dirfh, name) -> status                           UnName(Dir, Name)
statfs(fh) -> fsstats                                  GetNames(Dir, Pattern)
                                                       ->NameSeq
NFS server operations (simplified)
                                    fh = file handle:


                                     Filesystem identifier     i-node number i-node generation
read(fh, offset, count) -> attr, data                   Model flat file service
write(fh, offset, count, data) -> attr                  Read(FileId, i, n) -> Data
create(dirfh, name, attr) -> newfh, attr
                                                        Write(FileId, i, Data)
remove(dirfh, name) status
getattr(fh) -> attr                                     Create() -> FileId
setattr(fh, attr) -> attr                               Delete(FileId)
lookup(dirfh, name) -> fh, attr                         GetAttributes(FileId) -> Attr
rename(dirfh, name, todirfh, toname)                    SetAttributes(FileId, Attr)
link(newdirfh, newname, dirfh, name)
readdir(dirfh, cookie, count) -> entries
symlink(newdirfh, newname, string) -> status            Model directory service
readlink(fh) -> string                                  Lookup(Dir, Name) -> FileId
mkdir(dirfh, name, attr) -> newfh, attr                 AddName(Dir, Name, File)
rmdir(dirfh, name) -> status                            UnName(Dir, Name)
statfs(fh) -> fsstats
                                                        GetNames(Dir, Pattern)
                                                        ->NameSeq
NFS access control and authentication

• Stateless server
  – the user's identity and access rights must be checked by
    the server on each request.
  – In the local file system they are checked only on open()
• Every client request is accompanied by the userID and
  groupID
  – inserted by the RPC system
• Server is exposed to imposter attacks unless the userID
  and groupID are protected by encryption
  – Kerberos has been integrated with NFS to provide a
    stronger and more comprehensive security solution
Local and remote file systems
                                    accessible on an NFS client
            Server 1                                          Client                                        Server 2
                    (root)                                    (root)                                                     (root)




             export                             ...    vmunix        usr                                           nfs



                                   Remote                                              Remote
                people                             students         x      staff                              users
                                    mount                                               mount

        big jon bob          ...                                                                      jim ann jane joe

Note: The file system mounted at /usr/students in the client is actually the sub-tree located at /export/people in Server 1;
the file system mounted at /usr/staff in the client is actually the sub-tree located at /nfs/users in Server 2.




                                                                                                                                  *
Plan 9: Resource Unified to Files
• All resources in Plan 9 look like file systems.
• File Oriented access
   – Hierarchical name tree
   – Accessible by name
   – Access contents by read and write calls
Plan 9 Communications

      File                                 Description
ctl          Used to write protocol-specific control commands
data         Used to read and write data
listen       Used to accept incoming connection setup requests
local        Provides information on the caller's side of the connection
remote       Provides information on the other side of the connection
status       Provides diagnostic information on the current status of the connection




Files associated with a single TCP connection in Plan 9.
File server & Naming: union directory
9P Protocol

• Standard Protocol for accessing
  resources
• Bell labs implemented IL Protocol for
  network transport of 9P messages
Security

          • Factotum is the central component of the security architecture.
            Factotum securely holds a copy of the user’s keys and
            negotiates authentication protocols, on behalf of the user, with
            secure services around the network
                – Each box is a (typically) separate machine
                – Ellipse is a process. / FX are factotum processes
                – PX are the pieces and proxies of a distributed program.




The authentication server is one of several
repositories for users security information that
factotum processes consult as required.

Secstore is a shared resource for storing private
information such as keys; factotum consults it for the
user during bootstrap
Capability for Parallel Programming

• Kernel provides a simple process model and a few
  carefully designed system calls for synchronization
  and sharing.
• Parallel programming language called Alef supports
  concurrent programming.
• Although it is possible to write parallel programs in C,
  Alef is the parallel language of choice.
• Alef uses a system call called rendezvous to provides
  a way for processes to synchronize.
Structure
                                         Plan 9 Distributed Operating System
• Main Parts
   – File servers
    – CPU servers                                               High Speed
                                                                Network

    – Terminals (user access points).   File Servers                         CPU Servers
                                          Centrally located multiprocessor machines with large
• Typically centrally located file      memories and high bandwidth point to point interconnects.

  servers and CPU servers
                                                          Medium Speed Network


                                         Terminal
Using Plan 9

 Example:   Echo Server

 This Code implements a typical
  TCP listener.
 It announces itself
 listens for connections, and forks
  a new process for each.
 The new process echoes data on
  the connection until the remote
  end closes it.
 The "*" in the symbolic name
  means the announcement is valid
  for any addresses bound to the
  machine the program is run on.
Using Plan 9

 Example:     Echo Server

1. Announce()


2. Listen()


3. Accept()   || Reject()

4. Process()….


5. Close()…
Plan 9: Using Plan 9
    Example: Echo Server

1.   Announce()
    Returns open file descriptor for the
     ctl file of a connection and fills dir
     with the path of the protocol
     directory for the announcement.
    int announce(char *addr, char *dir)

     Addr is the symbolic name/address
     announced; if it does not contain a
     service, the announcement is for all
     services not explicitly announced.
Plan 9: Using Plan 9
    Example: Echo Server

2.   Listen()
    Listen returns an open file
     descriptor for the ctl file and fills ldir
     with the path of the protocol
     directory for the received
     connection.
    It is passed dir from the
     announcement.

    int listen(char *dir, char *ldir)
Plan 9: Using Plan 9
    Example: Echo Server

3.   Accept() and Reject()
    Accept and reject are called with
     the control file descriptor and ldir
     returned by listen.
    Some networks such as Datakit
     accept a reason for a rejection;
     networks such as IP ignore the
     third argument.

    int accept(int ctl, char *ldir)

    int reject(int ctl, char *ldir, char
     *reason)
Using Plan 9

 Example:     Echo Server

1. Announce()


2. Listen()


3. Accept()   || Reject()

4. Process()….


5. Close()…
Significance

• Fulfills definition of Distributed System
• 9P: Uses message passing to coordinate actions
• Provides for the major design considerations as
  outlined
• Heterogeneity, Openness, Security, Scalability,
  Failure handling, Concurrency, Transparency
Renassance
Reference

• Unix and Beyond: Themes in Operating Systems
  Research, Dennis M. Ritchie, Bell Laboratories,
  Alcatel Lucent (2007)
• Plan 9 from Bell Labs: Real World Distributed
  Operating System Case Study, Bryan Kinney,
  Computer Science and Engineering, Christopher
  Newport University (2005)
http://0xlab.org

More Related Content

What's hot

Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototypingYan Vugenfirer
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介Kito Cheng
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダTakuya ASADA
 
Distributed Compiler Icecc
Distributed Compiler IceccDistributed Compiler Icecc
Distributed Compiler IceccSZ Lin
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introductionYi-Hsiu Hsu
 
Redesigning Xen Memory Sharing (Grant) Mechanism
Redesigning Xen Memory Sharing (Grant) MechanismRedesigning Xen Memory Sharing (Grant) Mechanism
Redesigning Xen Memory Sharing (Grant) MechanismThe Linux Foundation
 
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingEric Lin
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Linaro
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道uchan_nos
 

What's hot (20)

Qemu device prototyping
Qemu device prototypingQemu device prototyping
Qemu device prototyping
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021
 
Virtual Machine Constructions for Dummies
Virtual Machine Constructions for DummiesVirtual Machine Constructions for Dummies
Virtual Machine Constructions for Dummies
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
 
UEFI時代のブートローダ
UEFI時代のブートローダUEFI時代のブートローダ
UEFI時代のブートローダ
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
Interpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratchInterpreter, Compiler, JIT from scratch
Interpreter, Compiler, JIT from scratch
 
Ext4 filesystem(1)
Ext4 filesystem(1)Ext4 filesystem(1)
Ext4 filesystem(1)
 
Distributed Compiler Icecc
Distributed Compiler IceccDistributed Compiler Icecc
Distributed Compiler Icecc
 
Yocto Project introduction
Yocto Project introductionYocto Project introduction
Yocto Project introduction
 
Redesigning Xen Memory Sharing (Grant) Mechanism
Redesigning Xen Memory Sharing (Grant) MechanismRedesigning Xen Memory Sharing (Grant) Mechanism
Redesigning Xen Memory Sharing (Grant) Mechanism
 
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem porting
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_Trusted firmware deep_dive_v1.0_
Trusted firmware deep_dive_v1.0_
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
 

Viewers also liked

Unix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsUnix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsAnant Narayanan
 
Rc - The Plan 9 Shell
Rc - The Plan 9 ShellRc - The Plan 9 Shell
Rc - The Plan 9 Shelltwopoint718
 
今日から始めるPlan 9 from Bell Labs
今日から始めるPlan 9 from Bell Labs今日から始めるPlan 9 from Bell Labs
今日から始めるPlan 9 from Bell LabsRyousei Takano
 
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century ThreatsLinux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century ThreatsJames Morris
 
Introducing Plan9 from Bell Labs
Introducing Plan9 from Bell LabsIntroducing Plan9 from Bell Labs
Introducing Plan9 from Bell LabsAnant Narayanan
 
Unix features, posix and single unix specification
Unix features, posix and single unix specificationUnix features, posix and single unix specification
Unix features, posix and single unix specificationsudha rani
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsNational Cheng Kung University
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationNational Cheng Kung University
 
Operating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesOperating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesPeter Tröger
 
12. Computer Systems Hardware 2
12. Computer Systems   Hardware 212. Computer Systems   Hardware 2
12. Computer Systems Hardware 2New Era University
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsNational Cheng Kung University
 

Viewers also liked (20)

Unix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell LabsUnix++: Plan 9 from Bell Labs
Unix++: Plan 9 from Bell Labs
 
Rc - The Plan 9 Shell
Rc - The Plan 9 ShellRc - The Plan 9 Shell
Rc - The Plan 9 Shell
 
今日から始めるPlan 9 from Bell Labs
今日から始めるPlan 9 from Bell Labs今日から始めるPlan 9 from Bell Labs
今日から始めるPlan 9 from Bell Labs
 
OSCh3
OSCh3OSCh3
OSCh3
 
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century ThreatsLinux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
Linux Kernel Security: Adapting 1960s Technology to Meet 21st Century Threats
 
Introducing Plan9 from Bell Labs
Introducing Plan9 from Bell LabsIntroducing Plan9 from Bell Labs
Introducing Plan9 from Bell Labs
 
Cs1 3-operating systems
Cs1 3-operating systemsCs1 3-operating systems
Cs1 3-operating systems
 
Unix features, posix and single unix specification
Unix features, posix and single unix specificationUnix features, posix and single unix specification
Unix features, posix and single unix specification
 
Shorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation SystemsShorten Device Boot Time for Automotive IVI and Navigation Systems
Shorten Device Boot Time for Automotive IVI and Navigation Systems
 
Hints for L4 Microkernel
Hints for L4 MicrokernelHints for L4 Microkernel
Hints for L4 Microkernel
 
Lecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and ImplementationLecture notice about Embedded Operating System Design and Implementation
Lecture notice about Embedded Operating System Design and Implementation
 
Operating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - ArchitecturesOperating Systems 1 (3/12) - Architectures
Operating Systems 1 (3/12) - Architectures
 
olibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linuxolibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linux
 
Implement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVMImplement Runtime Environments for HSA using LLVM
Implement Runtime Environments for HSA using LLVM
 
OS Security 2009
OS Security 2009OS Security 2009
OS Security 2009
 
Construct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoTConstruct an Efficient and Secure Microkernel for IoT
Construct an Efficient and Secure Microkernel for IoT
 
L4 Microkernel :: Design Overview
L4 Microkernel :: Design OverviewL4 Microkernel :: Design Overview
L4 Microkernel :: Design Overview
 
12. Computer Systems Hardware 2
12. Computer Systems   Hardware 212. Computer Systems   Hardware 2
12. Computer Systems Hardware 2
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
 
Develop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM BoardsDevelop Your Own Operating Systems using Cheap ARM Boards
Develop Your Own Operating Systems using Cheap ARM Boards
 

Similar to Plan 9: Not (Only) A Better UNIX

Similar to Plan 9: Not (Only) A Better UNIX (20)

Linux
LinuxLinux
Linux
 
Introduction to linux
Introduction to linuxIntroduction to linux
Introduction to linux
 
Introduction about linux
Introduction about linuxIntroduction about linux
Introduction about linux
 
Linux introduction (eng)
Linux introduction (eng)Linux introduction (eng)
Linux introduction (eng)
 
Linux forensics
Linux forensicsLinux forensics
Linux forensics
 
Linux [2005]
Linux [2005]Linux [2005]
Linux [2005]
 
Linux basics
Linux basicsLinux basics
Linux basics
 
Linux
LinuxLinux
Linux
 
Linux
LinuxLinux
Linux
 
introduction.pdf
introduction.pdfintroduction.pdf
introduction.pdf
 
Programming and problem solving 3
Programming and problem solving 3Programming and problem solving 3
Programming and problem solving 3
 
Module1
Module1Module1
Module1
 
Plan9: Bad Movie, Good Operating System
Plan9: Bad Movie, Good Operating SystemPlan9: Bad Movie, Good Operating System
Plan9: Bad Movie, Good Operating System
 
Os concepts
Os conceptsOs concepts
Os concepts
 
Online Training in Unix Linux Shell Scripting in Hyderabad
Online Training in Unix Linux Shell Scripting in HyderabadOnline Training in Unix Linux Shell Scripting in Hyderabad
Online Training in Unix Linux Shell Scripting in Hyderabad
 
unixoperatingsystem-130327073532-phpapp01.pdf
unixoperatingsystem-130327073532-phpapp01.pdfunixoperatingsystem-130327073532-phpapp01.pdf
unixoperatingsystem-130327073532-phpapp01.pdf
 
Linux_CASESTUDY.ppt
Linux_CASESTUDY.pptLinux_CASESTUDY.ppt
Linux_CASESTUDY.ppt
 
Unix _linux_fundamentals_for_hpc-_b
Unix  _linux_fundamentals_for_hpc-_bUnix  _linux_fundamentals_for_hpc-_b
Unix _linux_fundamentals_for_hpc-_b
 
Presentation on o s for bca iv
Presentation on o s for bca ivPresentation on o s for bca iv
Presentation on o s for bca iv
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 

More from National Cheng Kung University

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimeNational Cheng Kung University
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明National Cheng Kung University
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明National Cheng Kung University
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學National Cheng Kung University
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsNational Cheng Kung University
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明National Cheng Kung University
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例National Cheng Kung University
 

More from National Cheng Kung University (20)

PyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtimePyPy's approach to construct domain-specific language runtime
PyPy's approach to construct domain-specific language runtime
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明2016 年春季嵌入式作業系統課程說明
2016 年春季嵌入式作業系統課程說明
 
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
進階嵌入式作業系統設計與實做 (2015 年秋季 ) 課程說明
 
How A Compiler Works: GNU Toolchain
How A Compiler Works: GNU ToolchainHow A Compiler Works: GNU Toolchain
How A Compiler Works: GNU Toolchain
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
 
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
進階嵌入式系統開發與實做 (2014 年秋季 ) 課程說明
 
Xvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisorXvisor: embedded and lightweight hypervisor
Xvisor: embedded and lightweight hypervisor
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Priority Inversion on Mars
Priority Inversion on MarsPriority Inversion on Mars
Priority Inversion on Mars
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded SystemsF9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
F9: A Secure and Efficient Microkernel Built for Deeply Embedded Systems
 
Open Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to EcosystemOpen Source from Legend, Business, to Ecosystem
Open Source from Legend, Business, to Ecosystem
 
Summer Project: Microkernel (2013)
Summer Project: Microkernel (2013)Summer Project: Microkernel (2013)
Summer Project: Microkernel (2013)
 
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
進階嵌入式系統開發與實作 (2013 秋季班 ) 課程說明
 
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
LLVM 總是打開你的心:從電玩模擬器看編譯器應用實例
 
Faults inside System Software
Faults inside System SoftwareFaults inside System Software
Faults inside System Software
 
Develop Your Own Operating System
Develop Your Own Operating SystemDevelop Your Own Operating System
Develop Your Own Operating System
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Plan 9: Not (Only) A Better UNIX

  • 1. Plan 9: Not (Only) A Better UNIX Jim Huang ( 黃敬群 ) <jserv@0xlab.org> Developer, 0xlab – http://0xlab.org/ May 15, 2012 / JuluOSDev
  • 2. Rights to copy © Copyright 2012 0xlab http://0xlab.org/ contact@0xlab.org Attribution – ShareAlike 3.0 You are free Corrections, suggestions, contributions and translations are welcome! ✔ to copy, distribute, display, and perform the work ✔ to make derivative works Latest update: May 15, 2012 ✔ to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. ● For any reuse or distribution, you must make clear to others the license terms of this work. ● Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode
  • 3. Beyond this presentation • http://sync.in/16W2nkk2vZ • Design our own world-dominating OS. • Discuss Plan 9, an OS that many people thought should have dominated the world. • Meeting of Open Source Users in Tainan (5/19) http://mosut.org/ • COSCUP 2012 – OSDev Group – Call for Participation! • NCKU Lecture (Sep 2012) – Learn system programming for ARM Cortex-M – RTOS, toolchain, system modeling
  • 4. History always inspires us • 「雲端作業系統」 is not a new word. – Clouds! • Clouds is actually 2 separate operating systems – Clouds V1, based on VAX kernel (1986) – Clouds V2, based on Ra kernel (~1989) • Purpose: Support distributed research at Georgia Institute of Technology
  • 5. Clouds • Based on the object/thread paradigm • At OS level there is only one type of object – clouds • Ra kernel implements persistent virtual memory – Threads travel through objects – Entry points
  • 6. 「十年前你能想像現在人們在爭論 *BSD 與 Linux 哪個使用者體驗比較 好嗎?」 from clkao
  • 7. In memory of the heros... • Dennis M. Ritchie (dmr; 1941-2011) – UNIX, Plan 9 – Related talk: Plan 9, May 15, 2012 • Jochen Liedtke (1953-2001) – L4 microkernel – Related talk: L4 Microkernel, Feb 7, 2012
  • 8. Some Areas for discovery • Networking / Sockets • Threading • File I/O • Security • Scheduling • Windowing System / User Interface • Examples: – Eliminate all non-unicode char *’s. – Add an “e” “creat()” system call (Ken Thomson) – Copy / paste: an open problem (consolidate to a centralized copy/paste server).
  • 9. Agenda (1) Design Concepts (2) Essential Plan 9 (3) Renaissance
  • 11. Unix Origins (~-1969) • Bell Labs has a long history in early operating systems, for example BE-SYS for IBM 709x machines; Multics • Ken Thompson wanted to write a computer operating system by the 1960s: – Explore structures for building OS – Build something for our own group to use • Fundamental idea: a good way to represent data (disk files) • First steps for Unix: – find concrete representation for data on disk – define access methods to data • Earliest Unix simply tried to build some superstructure to test Thompson’s ideas
  • 12. Early Ideas about Unix (1969-1972) • Much was inherited, especially from Multics project • Files contain just a sequence of bytes: – interpretation is up to applications – optimization of access is up to operating system – preference is for files with readable text, not binary • Files are named in a hierarchical, tree-like name space, e.g. /usr/dmr/japan/japanslides.ppt
  • 13. File System access operations • Basic operations are very simple: – handle = open(filename, read-or-write-mode) – handle = create (filename, protection-mode) – read(handle, buffer, nbytes) – write(handle, buffer, nbytes) – close(handle) – seek(handle, place)
  • 14. Hierarchical Names / -- source -- shell sh1.c sh2.c … -- usr -- ken … -- dmr -- japan japanslides.ppt … … -- bin Sh … -- ...
  • 15. Names for other things • Unix introduced a consistent abstraction: names for I/O devices as part of the same hierarchy, for example – /dev/tty23 (name of terminal 23) – /dev/disk/disk03 (name of a whole disk) – /dev/mem (name for main memory) • These really exist in the file system and the same protection and ownership properties are applied as with ordinary files • To the extent possible, they look like the same byte streams as plain disk files • Some (like terminals and networks) have some special operations that apply: “I/O controls”
  • 16. Remote file system • By 1980s, Sun (with NFS), AT&T Computer Systems (RFS), and Bell Labs Research (NetA) were building “remote file systems” -- others pioneered also, like Xerox – Using RPC (remote procedure call) mechanisms, attach file system hierarchies on other machines to a local machine • Important generalization: approach to a distributed system transparent to applications • Some problems: – How usable are remote I/O devices? • Some problems with protocols and blocking devices – How usable are remote resources? • Interworking across machine architectures, e.g. Differences in byte ordering
  • 17.
  • 18. Next step: Plan 9 (1990-2003) • Designed in mid 80’s by many of the creators of UNIX (Rob Pike, Ken Thompson, Brian Kernighan, Dennis Ritchie) • Paradigm shift in mid 1980’s – From: Large centralized timeshared computers – To: Networks of smaller personal machines (UNIX ‘workstations’) • Original idea: define a remote protocol (called 9P) to talk to the file system • Unix began with a structural idea: – How to represent a local file system? • Plan 9 began with this structural idea: – How to talk to resources (local or remote)?
  • 19. “Plan 9 from Bell Labs” based on “Plan 9 from Outer Space.” Worst movie ever made (by Ed Wood)
  • 20. Plan 9 from Bell labs • Designed in mid 80’s by many of the creators of UNIX (Rob Pike, Ken Thompson, Brian Kernighan, Dennis Ritchie) • Inferno is a light and embedded version of Plan 9 – sold to Vita Nuova Holdings and has been released under GPL/MIT license. • “Build a UNIX out of little systems” – not “a system out of a lot of little Unixes” – Take the good things • Tree-structured file system • “Everything is a file” model – Toss the rest (ttys, ioctl(), signals!)
  • 21. Plan 9 Goals Plan 9 Distributed Operating System Centralized Time shared Systems Mainframe High Speed Network Terminals File Servers CPU Servers Centrally located multiprocessor machines with large memories and high bandwidth point to point interconnects. Medium Speed Network Personal Workstation Systems Terminal
  • 22. Plan 9 Design Principles • Everything is a file” – Standard naming system for all resources: pathnames • “Remote access” is the common case – Standard resource access protocol: “9P” (“9P2000”) – Used to access any file-like thing, remote or local • Personal namespaces – Naming conventions keep it sane • A practical issue: Open Source – Unix source not available at “Bell Labs”, its birthplace!
  • 23. Plan 9 Assumptions • Reliable machine-room file servers • Shared-memory multiprocessor cycle (CPU) servers – Located near file servers for fast access • Remote-access workstation terminals – Access your view of the environment – Don't contain your environment – Disk is optional • Typically used for faster booting, file cache – “Root directory” is located on your primary file server
  • 24. Everything is a File really. • In many early operating systems, different types of block devices had different API’s. • One major innovation in UNIX was the single file I/O API for multiple devices. • Plan 9 treats virtually all devices and services as file- based services: – telnet – ftp – nfs
  • 25. Notable architecture • All system interfaces through file system. (pre-Linux) • Workstation - independent working environment – aggregated resources, remote and local. • /proc – All processes are visible as files • /net – All network traffic read/written through file system • Can import POSIX apps, emulate Berkeley socket interface through APE (ANSI/POSIX Environment)
  • 26. Example: Open a socket % cat /net/tcp/clone/ctl 44 % cd /net/tcp/44 % echo connect 128.2.194.80!79 > ctl % echo ping > data % cat data pong
  • 27. Namespace • Any file resource can be “mounted” in a customizable directory hierarchy, or namespace: • Several directories can be mounted at the same point – replaces the need for a $PATH bind /home/shilad/bin /bin bind /i386/bin /bin • Copying a local file foo to a remote floppy: import lab.pc /a: /n/dos cp foo /n/dos/ • Piping the output of foo on host1 to bar on host2 cpu -h host1 foo | cpu -h hos2 bar 27
  • 28. Communication Protocol • File-based API supports 17 standard I/O file operations • “Device drivers” (e.g. a telnet server) need only implement the 17 operations. • A mounting service transparently transmits local file commands to remote systems using the 9P protocol. 28
  • 29. Synchronization • rendezvous system call: Thread 1 Thread 2 rendevous("foo",value1) rendezvous("foo",value2) both calls block until they receive value2 the “foo” tag value1
  • 30. Security • No superuser • An authentication server maintains a database of authentication keys for all users • Both client and server exchange encryption challenges and responses so each side is convinced of the others’ identity. • All 9P network communications are secure
  • 31. Plan 9 Failure • In 1998, Lucent pulled developers off of Plan 9 to focus on related Inferno OS. • Neither Plan 9 nor Inferno were commercially successful. • Most experts agree that Plan 9 was technically superior to UNIX but… • Most experts agree that Plan 9 was not superior enough to convert users of UNIX
  • 32. Plan 9 Success • Plan 9 open-sourced in 2000 • Dedicated developer and user base remain today • Google Summer of Code Project • Plan 9 influenced Linux / BSD: – /proc filesystem – clone() interface – As of 2.6.14, 9P-based file device drivers in stable Linux Kernel
  • 34. Definitions • 8½ – The Plan 9 window system, which provides textual I/O and bitmap graphic services to both local and remote client programs by offering a multiplexed file service to those clients. It serves traditional UNIX files like /dev/tty as well as more unusual ones that provide access to the mouse and the raw screen. Bitmap graphics operations are provided by serving a file called/dev/bitblt that interprets client messages to perform raster operations. • Rc – A command interpreter for Plan 9 that provides similar facilities to UNIXs Bourne shell, with some small additions and less idiosyncratic syntax. • 9P Protocol – The Plan 9 file system protocol. It is structured as a set of transactions that send a request from a client to a (local or remote) server and return the result. • IL Protocol – IL is a custom implemented network protocol to transport the remote procedure call messages 9P.
  • 35. File service architecture Lookup AddName UnName Client computer GetNames Server computer Application Application Directory service program program Flat file service Client module Read Write Create Delete GetAttributes SetAttributes
  • 36. NFS architecture Client computer Client computer NFS Server computer Application Client program Application Application Application Kernel program program program UNIX system calls UNIX kernel Virtual file system Virtual file system Operations Operations on on local files remote files file system UNIX NFS UNIX NFS NFS Client file file client server Other system system NFS protocol (remote operations) *
  • 37. NFS server operations (simplified) fh = file handle: Filesystem identifier i-node number i-node generation read(fh, offset, count) -> attr, data Model flat file service write(fh, offset, count, data) -> attr Read(FileId, i, n) -> Data create(dirfh, name, attr) -> newfh, attr Write(FileId, i, Data) remove(dirfh, name) status Create() -> FileId getattr(fh) -> attr Delete(FileId) setattr(fh, attr) -> attr lookup(dirfh, name) -> fh, attr GetAttributes(FileId) -> Attr rename(dirfh, name, todirfh, toname) SetAttributes(FileId, Attr) link(newdirfh, newname, dirfh, name) readdir(dirfh, cookie, count) -> entries Model directory service symlink(newdirfh, newname, string) -> status readlink(fh) -> string Lookup(Dir, Name) -> FileId mkdir(dirfh, name, attr) -> newfh, attr AddName(Dir, Name, File) rmdir(dirfh, name) -> status UnName(Dir, Name) statfs(fh) -> fsstats GetNames(Dir, Pattern) ->NameSeq
  • 38. NFS server operations (simplified) fh = file handle: Filesystem identifier i-node number i-node generation read(fh, offset, count) -> attr, data Model flat file service write(fh, offset, count, data) -> attr Read(FileId, i, n) -> Data create(dirfh, name, attr) -> newfh, attr Write(FileId, i, Data) remove(dirfh, name) status getattr(fh) -> attr Create() -> FileId setattr(fh, attr) -> attr Delete(FileId) lookup(dirfh, name) -> fh, attr GetAttributes(FileId) -> Attr rename(dirfh, name, todirfh, toname) SetAttributes(FileId, Attr) link(newdirfh, newname, dirfh, name) readdir(dirfh, cookie, count) -> entries symlink(newdirfh, newname, string) -> status Model directory service readlink(fh) -> string Lookup(Dir, Name) -> FileId mkdir(dirfh, name, attr) -> newfh, attr AddName(Dir, Name, File) rmdir(dirfh, name) -> status UnName(Dir, Name) statfs(fh) -> fsstats GetNames(Dir, Pattern) ->NameSeq
  • 39. NFS access control and authentication • Stateless server – the user's identity and access rights must be checked by the server on each request. – In the local file system they are checked only on open() • Every client request is accompanied by the userID and groupID – inserted by the RPC system • Server is exposed to imposter attacks unless the userID and groupID are protected by encryption – Kerberos has been integrated with NFS to provide a stronger and more comprehensive security solution
  • 40. Local and remote file systems accessible on an NFS client Server 1 Client Server 2 (root) (root) (root) export ... vmunix usr nfs Remote Remote people students x staff users mount mount big jon bob ... jim ann jane joe Note: The file system mounted at /usr/students in the client is actually the sub-tree located at /export/people in Server 1; the file system mounted at /usr/staff in the client is actually the sub-tree located at /nfs/users in Server 2. *
  • 41. Plan 9: Resource Unified to Files • All resources in Plan 9 look like file systems. • File Oriented access – Hierarchical name tree – Accessible by name – Access contents by read and write calls
  • 42. Plan 9 Communications File Description ctl Used to write protocol-specific control commands data Used to read and write data listen Used to accept incoming connection setup requests local Provides information on the caller's side of the connection remote Provides information on the other side of the connection status Provides diagnostic information on the current status of the connection Files associated with a single TCP connection in Plan 9.
  • 43. File server & Naming: union directory
  • 44. 9P Protocol • Standard Protocol for accessing resources • Bell labs implemented IL Protocol for network transport of 9P messages
  • 45. Security • Factotum is the central component of the security architecture. Factotum securely holds a copy of the user’s keys and negotiates authentication protocols, on behalf of the user, with secure services around the network – Each box is a (typically) separate machine – Ellipse is a process. / FX are factotum processes – PX are the pieces and proxies of a distributed program. The authentication server is one of several repositories for users security information that factotum processes consult as required. Secstore is a shared resource for storing private information such as keys; factotum consults it for the user during bootstrap
  • 46. Capability for Parallel Programming • Kernel provides a simple process model and a few carefully designed system calls for synchronization and sharing. • Parallel programming language called Alef supports concurrent programming. • Although it is possible to write parallel programs in C, Alef is the parallel language of choice. • Alef uses a system call called rendezvous to provides a way for processes to synchronize.
  • 47. Structure Plan 9 Distributed Operating System • Main Parts – File servers – CPU servers High Speed Network – Terminals (user access points). File Servers CPU Servers Centrally located multiprocessor machines with large • Typically centrally located file memories and high bandwidth point to point interconnects. servers and CPU servers Medium Speed Network Terminal
  • 48. Using Plan 9  Example: Echo Server  This Code implements a typical TCP listener.  It announces itself  listens for connections, and forks a new process for each.  The new process echoes data on the connection until the remote end closes it.  The "*" in the symbolic name means the announcement is valid for any addresses bound to the machine the program is run on.
  • 49. Using Plan 9  Example: Echo Server 1. Announce() 2. Listen() 3. Accept() || Reject() 4. Process()…. 5. Close()…
  • 50. Plan 9: Using Plan 9  Example: Echo Server 1. Announce()  Returns open file descriptor for the ctl file of a connection and fills dir with the path of the protocol directory for the announcement.  int announce(char *addr, char *dir) Addr is the symbolic name/address announced; if it does not contain a service, the announcement is for all services not explicitly announced.
  • 51. Plan 9: Using Plan 9  Example: Echo Server 2. Listen()  Listen returns an open file descriptor for the ctl file and fills ldir with the path of the protocol directory for the received connection.  It is passed dir from the announcement.  int listen(char *dir, char *ldir)
  • 52. Plan 9: Using Plan 9  Example: Echo Server 3. Accept() and Reject()  Accept and reject are called with the control file descriptor and ldir returned by listen.  Some networks such as Datakit accept a reason for a rejection; networks such as IP ignore the third argument.  int accept(int ctl, char *ldir)  int reject(int ctl, char *ldir, char *reason)
  • 53. Using Plan 9  Example: Echo Server 1. Announce() 2. Listen() 3. Accept() || Reject() 4. Process()…. 5. Close()…
  • 54. Significance • Fulfills definition of Distributed System • 9P: Uses message passing to coordinate actions • Provides for the major design considerations as outlined • Heterogeneity, Openness, Security, Scalability, Failure handling, Concurrency, Transparency
  • 56. Reference • Unix and Beyond: Themes in Operating Systems Research, Dennis M. Ritchie, Bell Laboratories, Alcatel Lucent (2007) • Plan 9 from Bell Labs: Real World Distributed Operating System Case Study, Bryan Kinney, Computer Science and Engineering, Christopher Newport University (2005)