FrontPage
のバックアップ(No.56)
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
FrontPage
へ行く。
1 (2008-10-31 (金) 20:43:23)
2 (2008-10-31 (金) 22:22:28)
3 (2008-10-31 (金) 22:22:28)
4 (2008-10-31 (金) 22:22:28)
5 (2012-09-09 (日) 14:43:11)
6 (2012-09-09 (日) 21:34:12)
7 (2012-09-09 (日) 21:34:12)
8 (2012-09-10 (月) 22:56:54)
9 (2012-09-12 (水) 00:43:29)
10 (2012-09-13 (木) 20:28:45)
11 (2012-09-13 (木) 20:28:45)
12 (2013-04-03 (水) 15:52:06)
13 (2013-04-08 (月) 17:48:29)
14 (2013-04-26 (金) 08:23:35)
15 (2013-04-26 (金) 19:50:31)
16 (2013-05-02 (木) 18:09:17)
17 (2013-05-02 (木) 18:09:17)
18 (2013-05-13 (月) 14:24:46)
19 (2013-05-13 (月) 23:15:53)
20 (2013-05-15 (水) 17:47:37)
21 (2013-05-15 (水) 20:54:20)
22 (2013-05-16 (木) 22:05:42)
23 (2013-05-16 (木) 22:05:42)
24 (2013-05-17 (金) 22:09:58)
25 (2013-05-21 (火) 21:32:50)
26 (2013-05-22 (水) 13:18:00)
27 (2013-05-22 (水) 13:18:00)
28 (2013-05-28 (火) 12:39:18)
29 (2013-05-28 (火) 12:39:18)
30 (2013-05-28 (火) 21:42:46)
31 (2013-05-29 (水) 19:15:55)
32 (2013-05-29 (水) 21:52:34)
33 (2013-05-29 (水) 21:52:34)
34 (2013-06-06 (木) 10:30:12)
35 (2013-06-06 (木) 10:30:12)
36 (2013-06-07 (金) 07:05:46)
37 (2013-06-07 (金) 07:05:46)
38 (2013-06-07 (金) 07:05:46)
39 (2013-06-20 (木) 22:44:53)
40 (2013-06-20 (木) 22:44:53)
41 (2013-07-12 (金) 18:58:36)
42 (2013-07-12 (金) 23:06:20)
43 (2013-07-29 (月) 19:30:40)
44 (2013-07-29 (月) 19:30:40)
45 (2013-08-05 (月) 12:46:12)
46 (2013-08-07 (水) 19:39:39)
47 (2013-08-09 (金) 08:35:42)
48 (2013-08-15 (木) 09:33:48)
49 (2013-08-15 (木) 09:33:48)
50 (2013-08-15 (木) 09:33:48)
51 (2013-10-15 (火) 15:06:15)
52 (2013-10-16 (水) 12:30:05)
53 (2014-04-30 (水) 11:07:10)
54 (2014-05-01 (木) 13:54:11)
55 (2014-05-13 (火) 14:17:57)
56 (2014-05-16 (金) 16:27:31)
57 (2014-05-16 (金) 19:44:29)
58 (2014-05-18 (日) 09:45:56)
59 (2014-05-18 (日) 09:45:56)
60 (2014-05-18 (日) 09:45:56)
61 (2014-05-26 (月) 02:31:45)
62 (2014-05-26 (月) 05:37:14)
63 (2014-05-27 (火) 01:01:58)
64 (2014-05-27 (火) 04:09:46)
65 (2014-05-27 (火) 06:47:40)
66 (2014-06-16 (月) 12:38:32)
67 (2014-06-20 (金) 18:40:49)
68 (2014-06-20 (金) 18:40:49)
69 (2014-06-20 (金) 18:40:49)
OSECPU-VM(おせくぷ・ぶいえむ)のWikiへようこそ
(by
K
, 2012.09.09)
↑
OSECPU-VMとは?
OSEPU-VMはオープンソースプロジェクトです。
ダウンロードはこちら →
page0074
大雑把な歴史はこちら →
page0075
OSECPU-VMは以下の目的を達成するための仮想マシン本体や、それらに関するツール群、アプリ群、ドキュメント類を開発します。
読み方は「おせくぷ-ぶいえむ」です。
プロジェクトの代表は
K
(川合秀実)です。
OSASK計画代表 & 「30日でできる!OS自作入門」著者
セキュリティキャンプ2011-2012「セキュアなOSを作ろうクラス」講師
セキュリティキャンプ2013-2014「セキュアなシステムを作ろうクラス」講師(クラス長)
↑
OSECPU-VMの目的
(1) 教育
2013年以降のセキュリティキャンプにおいて、
K
は一部の学生をOSECPU-VMの開発に関わらせることで、様々な技法やセキュリティの考え方を具体的に伝えます。
(2) デバッグ支援とセキュリティ
増え続ける需要に応じてソフトウェア開発者のすそ野が広がっていますが、バグとの戦いは終わっていません。不注意なミスになかなか気づけず、バグ取りに苦労することは珍しくありません。セキュリティホールも根絶の見通しには程遠い状況です。
それならば、OSも開発環境もライブラリもなにもかもを、デバッグ支援とセキュリティホール発見支援を第一義に設計し直したらどうなるだろうかと
K
は考えました。今まではこのような考え方はナンセンスでした。なぜなら実際の演算処理よりも各種のチェックの方が処理時間がかかるくらいにチェックすべきことがあるからです。コンピュータの演算能力は貴重でしたので、この考え方は支持されなかったのです。しかし、近年のコンピュータ技術の発展は素晴らしく、とんでもない演算速度のコンピュータがとても安価で購入できるようになりました。今こそ、このアイデアが試される時なのです!
もちろんOSECPU-VMは今のアーキテクチャモデルにそのままセキュリティチェックを追加するのではありません。それはさすが効率が落ちてもったいないので、セキュリティチェックを効率よくできるモデルも設計しています。
(3) 互換性
ライバルであるJavaや.NETは、一度プログラムを書いたらそのプログラムはどの環境でも動く、ということを目指しています。そしてそれはある程度は成功していると思います。しかしこれは「ある程度」でしかないのです。OSECPU-VMはもっと幅広い互換性を目指します。たとえば8bit-CPU上でもOSECPU-VMアプリが実行可能です。
「一度プログラムを書いたらそのプログラムはどの環境でも動く」ということはとてもいいことです。単に移植の手間を減らすというだけではなく、移植の際に新しいバグを入れてしまうということも防げるからです。
(4) 世界最高のコード密度
OSECPU-VMのアプリは、バイナリサイズが驚異的に小さくなる傾向があります。世界一だと思われます。これこそ後世に残しても恥ずかしくないものだと思います。
OSECPU-VMと同じくらいセキュアで同じくらいの互換性を持っている別のアーキテクチャがあったとして、アプリがどれもぶくぶくと大きなバイナリサイズだったらどうでしょうか。私たちはスッキリしたものを選んで使うべきではないですか?OSECPU-VMのバイナリよりも大きいということは、まだ何か無駄が残っているということです。無駄なもののためにディスクを浪費し、ネットワーク帯域を浪費して、何かうれしいことがあるでしょうか?
(5) 演算速度性能に対する考え方
OSECPU-VMは速度を犠牲にして、その代わりに今まで速度のためにあきらめられてきたものの多くを追求しようというものです。ですから速度はそれほどは出ません。しかしJITコンパイラ版ではそれなりの速さが出ます。
そもそもコードの1~2割は実行速度に大きく影響しますが、残りは実行速度にほとんど影響しないものです。この残りの8~9割を受け持つのがOSECPU-VMの役割です。実行速度に影響する部分を細心の注意を払ってOSECPU-VM以外の方法で記述して最高性能を出し、それで残りをOSECPU-VMで記述して結合すれば、全体としてフルパワー比でも1~2割くらいしか遅くならないでしょう。開発コストと性能のバランスを考えれば、これがベストではないかと
K
は思います。
(6) その他
OSECPU-VMのアプリを作るとき、おかしいことをやってしまってもすぐに教えてくれるので、習得が容易です。わけのわからないバグに悩まされるということが少ないです。ですからその意味でも教育向けといえるかもしれません(もっともアセンブラの教育に向いているかもしれない、という程度ではありますが)。
OSECPU-VMの仕様は極力シンプルになっています。過去のアーキテクチャとの互換性などは一切考慮していません。複雑になればOSECPU-VMの移植がやりにくくなって「(3) 互換性」の目的に反します。本当に必要な機能だけを、もっとも使いやすくなるやり方で導入しています。
↑
rev1(2013年度版)のまとめ
(現在開発中のrev2はrev1よりも良くなりますが、当分の間はrev1も使います。)
(todo: 以下の例をインベーダーゲーム(507バイト)とオセロゲーム(505バイト)に差し替える)
[A]:
[B]:
[C]:
この程度の画面を表示して、キー入力に応じてキャラクターを動かす程度のことはできます(簡単なゲームくらいなら作れる)。
ファイルを処理して結果を出力することもできます(その気になればコンパイラとかも作れる)。
ちなみにアプリのサイズは、[A]が17バイトで、[B]が284バイトで、[C]が71バイトです。
[A]のプログラムについては13バイト版のアプリもあります。
上記の「(4) 世界最高のコード密度」の実力が現れています!
OSECPU-VM用のアプリの作り方入門→
page0036
ちなみにrev2でもrev1とほぼ同じ方法でアプリが作れるようになる予定です。
↑
2014年度の主要なコンテンツ
2013年度のトップページ→
page0076
rev1(リビジョン1)のことが大体分かります。
セキュリティキャンプ2014特設ページ→
seccamp2014
開発近況→
memo0008
2014年度の計画→
page0071
rev2のバックエンド命令セット→
page0072
2014年度版のダウンロードページ→
page0074
↑
このWikiのルール
他人の発言は勝手に書き換えないでください。自分の発言は何度でも修正できます。
ただしSPAMっぽいものは数日間様子を見た後で勝手に消してもらってかまいません。
SPAM行為によって破壊されたページ内容をバックアップからもとに戻してもらうのも歓迎します(管理者の負担軽減になります)。
これらの作業を行った際には、
impressions
での報告をお願いします。
このwikiの中にOSECPUに関係するページを作りたくなったときは勝手に作っていいですが、その際にページ名は%が付かないようなものにしてください。たとえば日本語はアウトです。
自分のハンドル名と同名の自己紹介ページを持つこともできます。自己紹介ページに関しては、OSECPUに無関係な内容が書かれていてもかまいません。
しかしページ名については同じ縛りがあるので、そういうハンドル名を使う人は自己紹介ページをもてません。
一人の人がOSECPU内で複数のハンドルを持ったり、複数の自己紹介ページを持つことはできません。
何か問題がおきたら管理者である
K
が判断します。その際には指示に従っていただきます。
その他よくわからないことがあれば
impressions
で聞いてください。
↑
こめんと欄
このページにこめんと欄はありません。このページの内容にコメントしたいときは
impressions
にお願いします。