* 2013年度のFrontPageを保管しておくところ
-(by [[K]], 2014.05.01)
----
* OSECPU(おせくぷ)のWikiへようこそ
-(by [[K]], 2012.09.09)
** OSECPUとは? (2013.08.23版)
-OSECPUとはセキュアなOSやVMを自作しようというオープンソースプロジェクトです。主要な実装は2013.03.19に始まりました。プロジェクトのリーダは川合秀実([[K]])です。
--OSASK計画代表 & 「30日でできる!OS自作入門」著者
--セキュリティキャンプ2011-2012「セキュアなOSを作ろうクラス」講師
--セキュリティキャンプ2013-2014「セキュアなシステムを作ろうクラス」講師(クラス長)
-現状のOSECPU-VMはWindows上やMacOS上やLinux上で動作します。JavaScript版も開発中です。
-OSECPUのアプリは独自のバイトコードで記述され、実行時にはそれがJITコンパイラによってそれぞれのCPUの機械語に翻訳されて実行されます。Javaや.NETと似た方法です。
--これによってCPUの種類に関係なく、アプリは共通になります。
--でもこの仕様になった決め手はアプリを共通にしたかったからではなくて、セキュリティのためです。
-あなたは機能密度ということを考えたことがありますか?
--長いプログラムがたくさんの機能を持っているのは当然です。短いプログラムが単純なことしかできないのも当然です。すばらしいのは、短いプログラムなのにこんなにできるのか!ということだと[[K]]は考えます。この考え方を「機能密度」と言っています。
--プログラムが長いか短いかについてはいくつかの測り方があると思います。ソースプログラムの長さで測ることもできますし、バイナリ(バイトコード)の長さで測ることもできると思います。[[K]]はバイナリ派です。
--また、アプリのサイズが小さくても、OS側のサイズが大きかったら意味がないとも思います。特定のアプリだけが小さくなるような小細工もダメだと思っています。
-OSECPUではセキュアなだけでは面白くないということで、機能密度にも気を配っています。
--目指せ、世界一の機能密度!! → [[page0040]]
-''ダウンロードは「追加の説明」のところにあります(下記)''
** 実行画面例 (2013.08.07版 ver.0.69)
-現状のOSECPU-VMにどのくらいのことができるのかを示します。
~
[A]:http://osecpu.osask.jp/download/app0006a.png
[B]:http://osecpu.osask.jp/download/app0010a.png
~
[C]:http://osecpu.osask.jp/download/bball.png
--この程度の画面を表示して、キー入力に応じてキャラクターを動かす程度のことはできます(簡単なゲームくらいなら作れる)。
--ファイルを処理して結果を出力することもできます(その気になればコンパイラとかも作れる)。
--でもそれ以上のことはまだできません。
-ちなみにアプリのサイズは、[A]が17バイトで、[B]が284バイトで、[C]が71バイトです。
--[B]のプログラムは今後のバージョンで280バイトに改善予定です。
--[A]のプログラムについては13バイト版のアプリもあります。
-アプリを実行するためには、osecpu.exe(Windows版)というプログラムが必要で、現在これは20.5KBしかありません。
--JITコンパイラとしてはかなり小さいと自分では思います。
--この中に、OSECPUの機械語からx86用の機械語を生成して実行する部分と、OSECPUのAPIを処理する部分の両方が入っています。
--機種依存する部分はこれ以外にはありません。実行速度を犠牲にしてよければ、機種依存部分をもっと小さくすることも可能です。
--アプリの実行には機種依存のないシステムライブラリも必要で、これは現在4.58KBです。これは機種依存を避けるために全てOSECPUのバイトコードで書かれています。
--20.5KB+4.58KB=25.1KBが、このOSのサイズというか実行環境のインストールサイズということになると思います。これはJavaや.NETと比較しても格段に小さいですし、小さいことで定評のあるwabaよりも小さいです。
** 追加の説明
-OSECPU-VMの入門的なアーカイブ(興味のある人は、まずはこれをダウンロードしてみてください、Windows用です)
//--http://osecpu.osask.jp/download/osecpu069r.zip (旧版)
//--http://osecpu.osask.jp/download/osecpu078r.zip (新版・準備中)
--http://osecpu.osask.jp/download/osecpu078r.zip
-たぶんOSECPUは今後何年にもわたって世界最小記録を保持すると思います。
--あなたもOSECPU-VM上でアプリを作って世界記録保持者になりませんか?
--もしくはOSECPUの開発を手伝って、栄光を分かち合いませんか?
--セキュリティについても勉強できますよ~。
--感想はけいじばんへ→[[impressions]]
-''[[seccamp2013]]: セキュリティキャンプ2013特設ページ''
-バイトコードの仕様はまだ少し流動的です。でも大枠は決まった感じがします。
--しかしソースコードは試行錯誤の残骸がたくさんあって、結構ひどい状態です。少しずつ整理します。
-(準備中)
-より詳しい説明は別ページにあります。→ [[page0000]], [[page0009]]
** もくじ
-[[page0000]]: OSECPUの詳しい説明
-[[page0009]]: OSECPUの基本設計思想
-[[page0018]]: OSECPUはどのくらいセキュアか
-[[memo0000]]: [[K]]のOSECPU開発メモ(2012.09.07-2012.10.02)
-[[memo0001]]: [[K]]のOSECPU開発メモ(2013.03.12-2013.03.25)
-[[memo0002]]: [[K]]のOSECPU開発メモ(2013.03.26-2013.04.10)
-[[memo0003]]: [[K]]のOSECPU開発メモ(2013.04.11-2013.04.22)
-[[memo0004]]: [[K]]のOSECPU開発メモ(2013.04.23-2013.05.29)
-[[memo0005]]: [[K]]のOSECPU開発メモ(2013.05.31-)
-[[members]]: 自己紹介ページの目次
-[[impressions]]: けいじばん
-[[page0003]]: なぜ仮想CPUを利用することにしたのか?
-[[page0005]]: OSECPUが検出できる脆弱性
-[[page0006]]: OSECPUでのポインタの扱い
-[[page0007]]: OSECPUでの関数呼び出し
-[[page0010]]: エラーの話題
//-[[page0011]]: OSECPUのQ&A
-[[page0014]]: JITコンパイラの中身
-[[page0017]]: lbstk01の説明
-[[page0020]]: アクセス権問題について
-[[page0021]]: 没ネタ集
-[[page0022]]: 高速化のアイデア
-[[page0028]]: OSECPUの歴史
-[[page0032]]: OSECPUの仮想CPUの命令セット
-[[page0033]]: OSECPUのアプリはなぜ小さいのか
-[[page0034]]: OSECPU Q&A #0000
-[[page0035]]: ''OSECPUへの上手なかかわり方'' [[[Liva]]さんのおすすめ!]
-[[page0036]]: ''OSECPU-ASKA入門'' [[[Liva]]さんのおすすめ!]
-[[page0040]]: 機能密度に関するおはなし
-[[page0042]]: OSECPUのバイトコードコンパイラを作る人へ
-[[page0043]]: OSECPUのバイトコードの詳細仕様
-[[page0046]]: OSECPUサイズ最適化テクニック集
-[[page0047]]: OSECPUのfloatサポートとマウスサポートについて
-[[page0049]]: OSECPUのjitcというAPIについて
-[[page0050]]: OSECPUのセキュリティ
-[[page0054]]: アセンブラ短歌のページ
-[[page0055]]: OSECPUのラベル命令
-[[page0056]]: 関連開発プロジェクト紹介
-[[page0057]]: OSECPUのデバッグモニタ
-[[page0058]]: セキュリティを考えなくてもOSECPUの設計に至る
-[[page0059]]: すべてがOSECPUアプリになる?
-[[page0062]]: osectolsのfcodeで遊ぶ
-[[page0065]]: 更に小さくするために
-[[page0066]]: Javaとのサイズ対決
** このWikiのルール
-他人の発言は勝手に書き換えないでください。自分の発言は何度でも修正できます。
--ただしSPAMっぽいものは数日間様子を見た後で勝手に消してもらってかまいません。
--SPAM行為によって破壊されたページ内容をバックアップからもとに戻してもらうのも歓迎します(管理者の負担軽減になります)。
--これらの作業を行った際には、[[impressions]]での報告をお願いします。
-このwikiの中にOSECPUに関係するページを作りたくなったときは勝手に作っていいですが、その際にページ名は%が付かないようなものにしてください。たとえば日本語はアウトです。
-自分のハンドル名と同名の自己紹介ページを持つこともできます。自己紹介ページに関しては、OSECPUに無関係な内容が書かれていてもかまいません。
--しかしページ名については同じ縛りがあるので、そういうハンドル名を使う人は自己紹介ページをもてません。
-一人の人がOSECPU内で複数のハンドルを持ったり、複数の自己紹介ページを持つことはできません。
-何か問題がおきたら管理者である[[K]]が判断します。その際には指示に従っていただきます。
-その他よくわからないことがあれば[[impressions]]で聞いてください。
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコメントしたいときは[[impressions]]にお願いします。