SPIN Operating System

SPIN Operating System
hamanaka
2001/06/20
SPIN Research Project


SPIN は University of Washington で開発
様々な団体や企業が参画(資金提供など)


DEC, ARPA, Intel, IBM, etc.
現在行われている research project






Security for extensible systems
Transaction Support
Dynamic Compilation
Unix Emulation
Application-Controlled Caching
Safe Programmable and Integrated Network Environment
構成




背景
用途
目標 & アプローチ
SPINの構成



extension code
The Core Systems
性能評価
背景

application のOSへの要求の多様化
cf. multimedia, database, network

既存のOSのインターフェースでは十分に対応
しきれない
⇒ application specific なインターフェース
(サービス)を動的に作成できるインフラがある
と嬉しい
用途

Application-specific …






inter-process communication
virtual memory
user-level scheduling
network protocol
file systems and buffer cache management
etc.
SPINの目標

extensible, safe, efficient なOSの構築


user codeを動的にkernel内に install かつ
flexibility, safety, efficiency は保つ
アプローチ

language と runtime service の利点を利用


SPIN のよってたつ technique





low-cost, fine-grained, protected access
co-location
enforced modularity
logical protection domain
dynamic call binding
Modula-3 で実装

object-oriented, type-safe language
SPINの構成

extension services


dynamic linker など
機能拡張のための
枠組み
extension service
core system service
extension code
core system services

memory accessなど
最も基本的なサービス
dynamic linker
verifier
kernel
application の形態
1. すべて user space
2. すべて kernel space
3. user space と kernel space
1.
2.
core system service
extension code
application
3.
The Extension Services


system code と user code を安全に結びつける
ソフトウェアインフラを提供
次の2つのモデル

Protection Model


efficient, fine grained access control of resources
Extension Model

extension definable at Procedure Call granularity
language-level service, static type checking,
dynamic linking で実現
<Protection Model>


extension code ごとの
access control機構
language level で実現


core system service
extension code
virtual memory system
ではない
用語(概念)


capability
protection domain
kernel
capability

resource への pointer

ここで resource は






application
a system object
an interface
a collection of interface
language level の pointer
で実装
user-level への受け渡し可

core system service
extension code
externalized reference
capability
externalized
capability
1
2
(別紙参照)
kernel
protection domain


codeから参照される(可能な)
名前の集合
symbolic table のようなもの



名前: program symbols
domain 外の名前にはアクセス
不可
can be intersecting or disjoint
(capability による参照される)
domain1
domain2
obj
inter2
inter1
inter1
ext2
ext2
ext1
obj
inter1
inter2
kernel
protection domainの操作





Create:
object file から作成
CreateFromModule:
現在のmoduleから作成
Resolve:
domain中の名前と実体
を関連付け
Combine:
domain の union 作成
domain1
domain2
obj
inter2
inter1
inter1
ext2
inter1
ext2
ext1
obj
inter1
inter2
(別紙参照)
kernel
export and import of domain

in-kernel nameserver へ登録



明示的に domain を export
authorizer も登録可
Module間の直接渡し

domain は capability で参照
<Extensional Model>


System提供のサービス変更機構
概要

event & handlerによる拡張の定義
dispatcher で event に対し handlerを登録
条件実行のために guardを利用
access control のために authority利用

(別紙参照)



Event


本来はSystemからのメッセージ
SPIN では
event は procedure signature で定義
 event raise は procedure call に相当
⇒ procedure call の粒度でサービスを提供

Handler


event raiseに応じて実行されるprocedure
拡張サービスの実体




event と同じ型
event に対して dispatcher で登録
一つのeventに対して複数登録可
intrinsic handler: event と同名の handlerで
必ず実行される
Guard


handler に関連付けられるpredicate
filter の役割

handler の実行前に評価





true: handler を実行
false: handler を無視
一つのhandlerに対して複数登録可
引数の型はeventと同じ: 返り値は boolean
guard 内で副作用不可
Authority


intrinsic handler を定義する module
event に対する access control を行う

dispatcher による authorizer の登録


handler の install, 実行 を制御
handler へ 新たな guard の不可
Dispatcher


handler 実行のコア部分
runtime code generation で最適化


handler一つかつsynchronous:
event raise == procedure call
handler の inline化など
その他

handler 実行のordering可



決定機構をもつ
First, Last, Next, After で明示的に指定
複数 handler の場合の返り値

result handler が決定
その他

handler の実行は次の2パターン

asynchronous
synchronous with time limitation

後者は “EPHEMERAL” のannotationを付加


handlerが多すぎる場合


メモリ使用量膨大
対応は future work
The Core Services

以上は拡張codeを扱う枠組みの話

いくつかの core serviceを用意


memory management
thread management
これらを利用してapplication特化の機能を実現
memory management

3つのコンポーネントに分解
physical storage
 naming
 translation
(別紙参照)


これらを用いて様々な実装可

UNIX address space semantics を実装
thread management

SPINでは “strand” を実装
(別紙参照)

これを用いて Thread Package 作成可



DEC OSF/1 kernel thread
Mach C-Threads
Modula-3 thread
性能評価

次の4つの点に注目




System size
Microbenchmarks
Netwoking
End-to-end performance
性能評価

環境:
DEC Alpha 133MHz XAP 3000/400 workstations,
each machine 64 MBs of memory,
512KB unified external cache,
HP C2247-300 1GB disk-drive,
10Mb/sec Lance Ethernet interface,
FORE TCA-100 155Mb/sec ATM adapter card
connected to FORE ASX-200 switch.
System size

(別紙参照)





sys : extensibility machinery, domains,
naming, linking, dispatching
core : virtual memory and scheduling
rt : DEC SRC Modula-3 runtime
lib : subset of Modula-3 library and
mundane data structures
sal : low level interface of device drivers
and MMU.
Microbenchmarks

(別紙参照)



Protected communication
Thread management
Virtual memory

SPINの優位性


kernel extension(Translation.ProtectionFault)の利用
一連のinteractionがapplicationに高速に反映
Networking

(別紙参照)


Latency and Bandwidth
Protocol forwarding
End-to-end performance


(別紙参照)
Video Streaming Server-Client


Server: 3つの拡張
Client: 1つの拡張
Extension size

(別紙参照)

機能が複雑になるにつれsizeも増大
まとめ

SPIN operating systemは


機能拡張のための効率的な機構 および
拡張可能な機能の core set を提供
extensible かつ safe かつ good performance
を達成
Reference(1/2)

“Extensibility, Safety and Performance in the SPIN
Operating System”, Brian Bershad, Stefan Savage,
Przemyslaw Pardyak, Emin Gun Sirer, David Becker,
Marc Fiuczynski, Craig Chambers, Susan Eggers, in
Proceedings of the 15th ACM Symposium on Operating
System Principles (SOSP-15), Copper Mountain, CO. pp.
267--284.

“Dynamic Binding for an Extensible System”,
Przemyslaw Pardyak, Brian Bershad, in Proceedings of
the Second USENIX Symposium on Operating Systems
Design and Implementation (OSDI), Seattle, WA, pp.
201-212, October 1996.
Reference(2/2)

“Safe Dynamic Linking in an Extensible Operating
System” , Emin Gun Sirer, Marc Fiuczynski,
Przemyslaw Pardyak, Brian Bershad, Appeared in the
Workshop on Compiler Support for System Software,
February 1996.

“SPIN - An Extensible Microkernel for Applicationspecific Operating System Services”, Brian Bershad,
Craig Chambers, Susan Eggers, Chris Maeda, Dylan
McNamee, Przemyslaw Pardyak, Stefan Savage, Emin
Gun Sirer, University of Washington, Technical Report
TR-94-03-03.
自分の研究との絡み