source: lab.git/Commentary/kernelvm/20120422.log @ f5dbb37

trunk
Last change on this file since f5dbb37 was 66ebd87, checked in by mitty <mitty@…>, 13 years ago

git-svn-id: https://lab.mitty.jp/svn/lab/trunk@139 7d2118f6-f56c-43e7-95a2-4bb3031d96e7

  • Property mode set to 100644
File size: 31.0 KB
Line 
1FPGA
2    FPGAの状況
3    FPGAボード
4        立地で使い勝手の良いものは高い
5        雑誌付録もあるが……
6    PDP-11
7        16bitミニコン
8        1970-1990頃
9        回路図などの詳細なマニュアルが公開されている
10        大型冷蔵庫くらいあったものが、最終的には1チップに
11       
12        初期のUNIXのプラットフォーム
13        ソースコードが公開されていて、UNIX第6版の詳細な注釈本(Lions本)も出ている
14    FPGAにPDP-11を実装する
15        目標は「PDP-11用のプログラムが動く」
16        PDP-11の命令セットや周辺回路はHDLで記述
17    HDL
18        見た目はプログラミング言語に似ている
19        コンパイル・リンク・ロード→論理合成・配置実装・プログラム
20        本質的に並列処理
21        仕様を記述する、という思想から出発
22        テスト記述も意識している
23       
24        主流はVHDLとVerilog HDL
25        SystemCというものもあるがいまいち流行らない
26    VHDL
27        Adaベース
28        強い型付け言語
29        激しくダサい(主観)
30       
31        何故ダサいか
32            大文字と小文字の区別がない
33            エラーが出ないのに動かないことがある
34    シミュレーション
35        HDLによる記述はシミュレーション出来る
36        ghdlなら無料
37       
38        波形が格好いい
39        目で見て理解
40        問題の発見に有効
41       
42        信号が伝わっていくときの遅延など、様々なレベルでシミュレーションが出来る
43       
44    シミュレーション例
45        ghdl + gtkWave
46        UNIXのブート中の例
47   
48    何をやったか
49        w11(OpenCores)をAvent Microboardに移植
50        元々他のFPGAボードでは動いていた
51        入出力デバイスのフィッティング
52   
53    デモ
54        ……元々使っていたボードが壊れましたので出来ません
55        -> 別のボード
56   
57    UNIX v6
58        当時は出力がターミナルではなくてプリンタといったこともありえたので、
59        現在のように環境などがログインプロンプト時に出ない
60   
61    w11 CPU coreのdoxygen出力
62   
63    ロジアナ
64        XilinxならChipScopre
65   
66    何が嬉しいのか
67        ソフト屋はマニュアル通りハードウェアが使えれば十分なのか
68        ユーザはマニュアル通りソフトウェアが使えれば十分か
69       
70        必須ではないが、知っていればお得
71   
72    野望
73        PDP-11の回路をFPGAでそのまま実装
74        VAXを実装
75   
76    「PDP-11でライバルと差を付けよう!」
77
78Extreme Java
79@Fantom_JAC
80   
81    自己紹介
82        Java原人(Java原理主義者)
83        Javaのためならなんでも
84        無線、特にZigBee
85    (Java原人からみた) Javaとは
86        小型の組み込み機器等に使えるプラットフォーム
87    やりたかったこと
88        JavaからUSB無線ドングル
89    環境
90        Javaで直接レジスタがたたける
91        EHCIデバイス
92    想定と違った
93        途中に仕様の分からないドライバと・仕様の分からないAPIが挟まっていた
94    必要なもの
95        EHCIドライバ
96        USBスタック・フレームワーク
97        Ralinkドライバ
98        802.11MACスタック
99        TCP/IPスタック
100    EHCIとは
101        USB2.0のコントローラ仕様
102        ちゃんとレジスタの仕様が公開されている
103    用意されたUSB環境
104        cHCが存在しない
105            EHCIで1.1も繋がる謎仕様
106            1ポート
107            OTGを経由している
108                OTGにはレジスタの仕様の標準がない
109    Global Controller
110    OTG Controller
111    「せめてJavaらしく」
112        自分でメモリ管理するJava
113        new出来ないので
114    USBスタック
115        JSR-80にたぶん準拠
116            実装はない……
117        TCKは通してません
118        IMBの作ったRIを使用
119    squilla-jsr80
120        JSR-80をOSGiに対応させた
121        UsbDeviceDriverを継承するとデバドラが簡単に作れる
122    Ralink
123        その界隈ではあまりにも有名
124        RT2860/3070を使用
125        FreeBSD用非公式ドライバを移植
126    Ralink IO
127        Ralink共通(?)のAPIセット
128        たぶんUSB以外のインタフェースでも共通
129        USBの実装はControl
130    Ralinkの謎
131        起動時にファームウェアを丸ごと転送
132        しかも転送がよく転ける
133        膨大な量の転送
134            改造すれば普通に電波法破れそう
135            メモリいじってパッチを当てている疑惑
136        怪しいノード管理
137            wcid = associationId & 0xFF
138            8bit <- 16 bit
139        ControlFrameだけは実装されているっぽい
140            リアルタイム性の問題
141    squilla-net
142        Javaでプロトコルスタックを書くためのライブラリを作った
143        802.11関連
144            ManagementFrame
145            MLME
146            Javaに欠けているWLAN用API
147                Androidにはある……
148    MLME
149        SCAN
150        JOIN
151        AUTHENTICATE
152       
153        JOINがよく分からない
154            実際にはsyncのこと?
155    TCP/IPスタック
156    IPv4
157        適当
158        フラグメント処理とかやっていない
159    ARP
160        RequestおよびReply監視用Thread一本
161    UDP
162        簡単
163        Thread未使用
164    TCP
165        もう二度と実装したくないプロトコルスタック堂々の一位(一人に聞いた)
166        不可解な輻輳制御
167        理不尽な仕様書
168        ...
169        Slow-startもCongrestion avoidanceもなし
170        TCPConnectionごとにThread一本
171    基本動作
172        基本はステートマシン
173        tickと呼ばれるMethodを無限ループで呼び続ける
174            3Dゲーム開発でよくやる手法
175        tickされた時に
176            受信FIFOに溜まっていれば取り出して、TCPInputに投げて処理
177            なければTCPOuputにて、ACK可能か判断し、送信
178            最後に再送タイムアウトが発生したかチェックして、再送信
179           
180    何故Single-Threadか
181        当初はMultiの予定
182        GCが使えないので管理が大変
183            GCより高いプライオリティで動いている
184        プログラムのミスが起こりやすい
185        リソースを消費する
186            tickが空回りしないように何もしないときは50ms程sleep
187    BufferedPipe
188        スライディングウィンドウ実現のために作ったクラス
189        内部はリングバッファ
190        非同期に可変長のバイト列を出し入れ
191        つまり両端がInputStream/OutputStream
192       
193        探したけど意外とこういうクラスはなかった
194        元々TCP向けなので入出力個別にシャットダウン可能
195        readするとブロック
196    残酷な現実
197        やっぱりどうしてもTCPはまともに動かない
198        相性が酷い
199            より具体的にいうと、暗黙の了解のようなものが多かった
200    スクラッチから実装することの意義
201        勉強になる
202        百聞は一コーディングにしかず
203        デバッグが容易
204            腐っても自分の書いたコード
205        ライセンス問題ゼロ
206        話のネタになる
207    分かったこと
208        Linuxはすごい
209            EHCIのコードの雑さ
210            ネット周りのスパゲティ
211            よくこれで動いているな
212        FreeBSDは読みやすい
213            特にネットワークスタック
214        IEEEの仕様書は非常に親切
215            ちゃんとPDFで公開されている!
216        IETFの仕様書は非常に非親切
217    そもそも
218        ギョウムで必要でした
219        半年強で実装
220        結局使われず
221            TCP動かなかったし…
222       
223        「Javaなんて使わない方が良いんじゃないの?」
224    今後
225        JavaMEがCortex-M向けに出るらしいので
226        使い道募集中
227   
228    組み込みJavaの場合GCが無い
229        ImmotalHeapというものを使用する
230        自分でfreeする
231   
232なのは完売
233super_rti
234    とある関数のバトルプログラミング
235   
236    フック処理
237        相手のプロセスに干渉して、特定のタイミングで自分の任意の処理を呼ばせる
238        外部からソフトウェアの拡張を行える
239    誰からもフックされないようなプロセスを作るには?
240    管理者特権は出てこない
241    Windowsでのフック
242        dllを作る
243        フィルタドライバ
244        APIを使う
245            よく使われるAPIの話
246    dllやドライバは管理者特権が必要だったりで、気づかれやすい
247    dll injection
248        OSのプロセス保護を突破しやすい
249        プログラムを作りやすい
250    ドMくんとドSくん
251        なのフェイの薄い本ください -> なのは完売
252    守りたい、この笑顔
253    anti dll injection
254        賢いLoadLibraryAを作ればよい
255        攻撃用dllであれば拒否する
256    APIフック
257        今回は
258        sexyhookを使う
259        バリアを作った感じ
260    LoadLibraryは複数ある
261        LoadLibraryAがやられたようだな…
262        裏ボス:SetWindowsHookEx
263    LdrLoadDll
264        LoadLibraryの元締め的役割
265        SetWindowsHookExも採取的にはLdrLoadDllを呼び出す
266        LdrLoadDllに対応すれば良い
267        全てのdll injectionに対応可能
268   
269    dllを使わない攻撃
270        実はdllは無くても攻撃出来る
271        CreateRemoteThreadで直接マシン語コードを挿入可能
272    anti thread injection
273        そもそもThreadはどうやって作られているのか
274        スレッドが実行されたら、実行される中身をUSOThreadに飛ばしてしまう
275        スレッド開始 -> BaseThreadInitThunk -> uso thread
276            判別が難しいので、現時点では無差別
277   
278    やられっぱなしは悔しいので攻性防壁
279        結構難しい
280        攻撃してきた相手を特定する必要がある
281        注意としては、dllを削除するのは危険
282    anti thread injection
283        攻撃者のコードによっては反撃出来る
284    dll名からexeを特定して、exitする
285        zap! zap!
286    攻撃してきたらsleepに置き換える
287        攻撃元はfreezeしてしまう
288   
289    残酷なのは戦争
290   
291    相手の攻撃より先にバリアを張るのが大切
292
293コマンドとシェルスクリプトで企業システムを作る
294上田隆一 @uecinfo
295
296    USP友の会
297        @usptomo
298        bashでCGIを書く人間
299        word pressを使っていたが、injectionされたので「bashで作ればinjectionされないでしょう」
300    Universal Shell Programming Laboratory
301   
302    自社開発指導
303        顧客企業の情報システム部
304        CUIでOSを使う講習
305        vimの講習
306        awk・sedの講習
307        シェルスクリプトの書き方
308        イントラ用CGI
309    いわゆるSIの世界
310        4次受け・5次受け当たり前
311        DBのレイアウト表の作者が某大手の3次受け
312        1次2次は何をしてたのか?
313        まず、どのRDBMSを入れるか、から始まる
314    実績があるが高い企業と、安いが知らない企業はどちらが選ばれるか
315        知らない企業は警戒される
316    ソフトウェア開発の問題点
317        見えない
318            安いといわれても、実物がどんなものになるか分からない
319        失敗リスク
320            関わる人が増えていく
321            失敗しない設計を請け負うSE・下請け、弁護士
322            「これを入れれば大丈夫」というミドルウェア
323            俺たちは成功する、という広告を請け負う広報・代理店
324            「震度ゼロで倒壊しない家!」
325    そんなに人が居ないソフトウェアハウス
326        実績をコツコツ作る
327        自分たちで作ってもらう
328        仲間作り
329            自分たちの取り組みを知って貰う
330        失敗しない仕組み
331            人・マニュアル・「見通しのよいアーキテクチャ」
332    USP手法(ユニケージ)
333        コマンド+シェルスクリプト
334        データをテキストファイルで持つ
335            ファイルシステムを使う
336        余計なソフトウェアを入れない
337            コマンド、apache、NFS、その他標準のもの
338        データを整理整頓するノウハウ塊
339            ファイルがファイルシステム上であちこちに分散してしまわないようなシステムを構築する
340    データの整理整頓
341        実会社でのデータの流れを意識
342        例えば伝票の扱い
343            DBに相当するレベル
344                受け取った伝票は捨てないで綴じる
345                綴じた伝票をノートに書き出して台帳
346                台帳から統計データを集計
347            アプリケーションに相当するレベル
348                統計データを加工、問われたら答えるデータを準備
349    Apacheのログ解析での例
350        L1
351            ログをそのままコピーしてきたもの
352        L2
353            awkで扱える形式に変換
354        L3
355            集計したデータ
356        L4
357            表示する形式にしておく
358            ブラウザに表示する直前のデータ -> アプリケーション
359    DBを使う方法との差異
360        DB v.s. テキストという話ではない
361        「DBを使う」は道具の話
362        レベル1-5はアーキテクチャの話なのでもっと親切
363            データを整理整頓して失敗を避ける仕組み
364        DBは木構造の概念が薄い -> DBより生のUNIXが良い
365        ファイルからファイルへの変換
366            ファイルの入力リダイレクト -> コマンド -> パイプ -> コマンド -> 出力リダイレクト
367    コマンド+シェルスクリプト
368        コマンドはCで書かれているので速い
369   
370    シェルスクリプトの例
371        関数を使わない
372        sedが酷い
373        ログファイルに全角は来ないだろう -> 「あ」をsplit文字に使う
374        プログラミングしない人にはこちらの方が分かりやすい
375        gyo というコマンドで行数を数える
376            wcはオプションが必要、遅い
377        一億行のparasort -> 20秒
378        keta コマンド
379    open-usp-tukubai
380        FreeBSD ports
381   
382    デバッグはteeとheadコマンドを使っている
383
384FreeBSD 9 新機能
385後藤大地 @daichigoto
386    さらに先の未来10へ & 最小特権オペレーション Capsicum
387   
388    ONGS オングス 代表取締役
389   
390    FreeBSD committer
391        FreeBSD unionfsの再設計と再実装
392    FreeBSD Daily Topics
393        可能な限りデイリーでFreeBSDのトピックをアップ
394   
395    FreeBSD Expert 2012 Digital Edition
396        EPUBとHTMLで
397        今すぐ購入しよう!
398   
399    ZFSv28
400        「ZFSのバージョンは上げない」が安定運用の鉄則
401        どうしても新しい機能が使いたい場合は新しいサーバを作ってコピーが良い
402        重複排除の機能
403        実装上非常に大容量のメモリが必要となる
404            4GB以上、8GB~が推奨
405        AMD64版が推奨
406    v28以降のコードは出るのか
407        Oracleの動きが分からない
408        暗号化はGEOMを使うという手もある
409    最小特権オペレーション Capsicum
410    NFSv4のサポート
411        nfsuserdが新しく追加
412            useridとgroupidのマッピングを行う必要が無くなったため
413        デーモンの起動する順序が重要
414            rcoderコマンドで確認出来る
415        nfscallbackd
416            コールバックの機能を使いたいときは有効にする
417        MacOSX LionからNFSv4にアクセス出来るようになった
418    USF2
419        Soft Updatesジャーナリング機能
420        どのタイミングで再起動してもデータは壊れないといわれている
421        メタデータとデータ本体の整合性がとれなくなることはある
422        スナップショット機能
423            起動時にfsckが掛かる場合、バックグラウンドfsckを行うために用いる
424            ただし、I/O負荷が高いので、実用には耐えかねる
425        FreeBSDでは、Soft Updatesの操作に対してジャーナルログを取るようにした
426        ブロックサイズとフラグメントサイズが引き上げられた
427            dumpfsを見ると分かる
428    UFS vs ZFS
429        必ずしもZFSが良いとは限らない
430        小さいファイルが大量にある場合はUSFは高速で動く
431    BSD Installの導入
432        sysinstallの欠点
433            最近のFreeBSDで導入された機能を使用出来ない
434        CUI installer
435        OSの機能をフルに使う場合は、Cで書くよりもシェルスクリプトで実装した方が拡張しやすい
436        GUIインストーラがどうしても必要であれば、PC-BSDを使うと良い
437    TCP輻輳制御アルゴリズムの切替え
438        本書ではjailとVImageを使って別々のネットワークスタックを用意し、個別の輻輳制御を試している
439        動的切替えが重要な理由
440            無線の輻輳制御と高速なネットワークの輻輳制御を一つのアルゴリズムで行うのは現実的ではない
441    v6オンリーカーネル
442        v4が有効になっていると、v4が影響して問題が出ているのか、分かりにくい
443        v4オンリー、IP無しのカーネルも可能
444    ATAサブシステムがCAMサブシステムに統合された
445        disk ad -> adaに名前が変更になった
446        ataraidが使えなくなった
447            GRAIDを使って
448    GPTがデフォルトへ
449        MBRの制限が無くなったので、スライスを使わなくなっている
450    FreeBSD 10へ
451        USF2のライブラリサイジング
452        BHyVe+jail
453        GCC -> clang
454            GPL3への懸念
455            どうなるか分からない部分はある
456    Capsicum
457        ケーパビリティの実装の一つ
458        FreeBSDの既存のリソース保護機能
459            保護ドメイン
460            アクセス制御リスト
461        複数の保護レベルを持ちたいとき
462        特に問題になるのはChromeのようなアプリケーション
463        最小特権オペレーション
464        エンジニアが学習する量が非常に少なくて済む
465        ファイルディスクリプタに、どこまでアクセスして良いか書かれている
466        cap_enter();
467            イメージとしては、プロセスが自分でjailの中に飛び込んでいく感じ
468        ケーパビリティに入った後にopenしようとするとエラーになる
469        一度ケーパビリティモードに入ると、forkしても出られない
470        Chromeの実装における書くOSの追加コード
471            Windows 20k以上
472            FreeBSD 100
473   
474    FreeBSDサーバ構築・運用ガイド
475        労力の割に儲からないので、これが最後のFreeBSD本になるかも…
476   
477    ZFSの特許に対するFreeBSDの対応
478        ディベロッパーからの回答「I don't know.」
479        会社に任せているので分からない
480        ライセンス的には問題ないでしょう
481        dtraceは現状のまま取り込むことは出来なさそう
482   
483@sora_h
484
485    Self Introduction
486        Rubyコミッター
487        中卒フリーター (オワコン最終兵器)
488        cookpad
489        新幹線通勤
490        飯テロ
491       
492        tweet紹介でほぼ終わった
493   
494    「あと33分の質問出来るよ」
495   
496Nyarlathotep
497@hiromu1996
498
499    Self Introduction
500        「ちゃんと高校に行っています!」
501        未踏の合宿から直接来ました
502    名状しがたいプログラミング言語nyaruko
503        brainfuck置き換え(笑)
504   
505    Esolangの恐ろしさを教えてやる
506   
507    SKIコンビネータ
508        チューリング完全
509    Uコンビネータ
510        チューリング完全
511    同級生の純粋関数型言語野郎に、Iotaの命令置換じゃんといわれた
512        ニャルコンビネータとか作る
513
514------------------------------------------------
515LTタイム
516
517m4で実用的プログラミング
518@a4lg
519
520    最初にお詫び
521        例によって手抜き
522        ネタかぶり… => @hiromu1996
523    m4とは
524        きわめて実用的なマクロ言語
525        CPPなどよりはるかに自由度が高い
526        いろいろな所で使われている
527            configureスクリプト (autoconf)
528            sendmail
529        posix
530    m4でプログラミング
531        マクロの中で同じマクロが出現しても良い
532            CPP: #define a a -> a
533            m4: define(`a', `a()')a() -> 無限ループ
534        マクロの中から新しいマクロを定義出来る
535        GNUの拡張はもはやカオス
536    m4 言語
537        クオート
538            `文字列'
539            ``マクロ展開を抑制''
540        dnl コメント
541        マクロ変数
542       
543        ifelse()
544        数値計算をやる expr(`数式')
545            便利すぎるので今回は禁止
546        incr(`') / decr(`')
547    m4における再帰
548        再帰 = ループ ≠ 再帰呼び出し
549        m4におけるマクロはスタックを使わない
550    m4におけるマクロ定義
551        = スタック
552        マクロ定義はスタック状に詰むことが出来る
553    数々の黒魔術
554        ループ
555        Diversion
556        exprを使う
557    m4はチューリング完全なのでは?
558        brainf*ck処理系の実装
559    DEMO
560        trコマンドで、brainf*ckの入力をm4のマクロに変換
561       
562    おまけ
563        会場で10分で作った「名状しがたいプログラミング言語」
564        github:a4lg
565
566Arduinoで作る耳grep
567@katsyoshi
568    whoami
569        mikutter
570        fav.rb, pakuri.rb
571    耳grep
572        2012/2/19 盛大なgrep TL
573        バイナリにwavヘッダ
574    Arduino for 耳grep
575        バイトごとに音を鳴らそう
576        headerとか面倒
577        PCでやっても面白くない
578        => ではArduinoで
579    Arduinoとは
580        PICみたいなもの
581        プログラマブル
582    DEMO
583        再生が速すぎて……
584        1MBで30分近く掛かる
585    おわり
586        聞こえにくかった?
587        ノイズですまんかった
588        バイナリアンだったらもう一工夫在るのかなぁ
589   
590    grepはどこでやるのでしょう?
591        考えてなかった!
592    シリアルのレートは9600で、サンプリングレートは?
593        そのまま出ている
594        バイトを10倍して、40を足している
595   
596
597Software Development with Editor
598@suma90h
599
600    Interest
601        Developing Hex Editor
602   
603    Development life-cycle with Text Editor
604        我々は毎日何を行っているのだろう?
605        テキストエディタはこのままでいいのか?
606   
607    KernelとVMの共通点
608        ハードウェアの抽象化
609        リソース管理
610        APIの提供
611    テキストエディタは?
612        テキスト内部を気にせず編集 -> 抽象化
613        編集バッファ -> リソース管理
614        elisp -> VM?
615    コンテキストスイッチ
616        kernel <=> アプリ
617        VMM <=> kernel -> 今回は考えない
618        エディタ <=> 人間
619    エディタと人間
620        ソフトウェア開発において
621        考え、設計し、
622        実装する with Editor
623        ビルド、実行、デバッグ
624       
625        コンテキストスイッチ
626   
627    バイナリエディタでは
628        16進数ダンプ、ASCIIなど読める部分を読む
629        色で見る、耳?
630        考える
631        データを抜き出したり加工したり
632       
633    複数のことを同時に考えるのは人間には無理ぽ
634        GB単位のバイナリデータを目grepは無理
635        バイナリエディタで支援
636       
637        大規模ソフトウェア開発
638            コード量が増えると一度に編集出来ない
639   
640    未来のエディタに求めたいこと
641        バイナリエディタ
642            求められる機能ははっきりしている -> ok
643        テキストエディタは?
644            Terminalとエディタ、人間のコンテキストスイッチを減らしたい
645            でも、マルチタスクしたい
646            リファレンス、ブラウザを見たい
647            分散システムの結合テストとかもやる
648
649
650SAN値論理と名状しがたいプログラミングSAN値Prolog
651たけおか @takeoka
652
653    二値論理
654   
655    三値論理
656        e進数がもっとも情報の表現効率がいい
657        2.72進数というのは扱いにくい -> 三値論理
658   
659    SAN値とは
660   
661    論理型言語にSAN値というものを入れる
662    評価時の「頭のおかしさ具合」を「SAN値」と呼ぶ
663   
664    評価時に、SAN値に近いSAN度を持つ節が選ばれる
665   
666    節は評価して、真であったらSAN値が比較される
667   
668    似た研究
669        ファジィ論理 Prolog
670        閾値より大きな事実が選ばれる
671       
672        「大きい」ではなく、SAN値に近いものを選ぶ
673   
674    Lispで書いたPrologの処理系
675   
676    「set-sanchi」
677    プロンプトが「にゃ?」
678   
679
680軽快なPlan 9 Update Illumos KVM上陸
681@go_vm
682
683    軽快なPlan9では
684        KVMの上で動いているPlan9
685        ネットワークに繋がっていないゲストがOSとのsocketを呼び出して、外のネットワークからデータを取ってくる
686        ハイパーコール
687   
688    Linux KVMがIllmosに移植された
689        Joent社の成果
690        Node.jsとかもやっているところ
691   
692    コードの構造は同じ
693        Linux KVMが読めれば同じように読める
694        ただしコードはBSDスタイル
695       
696    床抜き
697        clojureでスタブを書いた
698        起動中にbell研のサイトに繋がってhtml取ってくる
699        しかし、ifconfigするとネットワークは繋がっていない
700    Illmos KVMの利点
701        ネットワークの設定が楽
702        dtraceが使える
703            いろんなイベントを観察出来る
704
705軽快なBHyVe
706@syuu1228
707
708    BHyVeの現状
709        独自ローダからFreeBSDカーネルをゲストOSとしてロード、ブート出来るだけ
710        BIOSが動かないので、ブートローダが動かない
711    BIOSの仕組み
712        int13h -> ソフト割込み -> CPUが割込みベクタを読む -> BIOS状のハンドラを実行
713    KVMでは
714        SeaBIOSがHWへのIOを実行
715            実機状のBIOSと同じ動きをする
716            IOはTrapされてQEMUで処理される
717    SeaBIOSを載せればいいやん
718        却下 <= GPLだから
719    BSDLでBIOSをエミュレートするソフトは既にある
720        doscmdとか (FreeBSD状で動作)
721        仮想8086モードでDOSプログラムを動作
722        BIOSコールなどをtrap
723        32bit実装だし、移植するならhypervisor側に入れた方が良い
724            ソフト割込みの時点でTrapするようにする
725    IntelVTの機能でソフト割込みをTrapすると…
726        全てのソフト割込みがTrapされてしまう
727        多くのOSがシステムコールにソフト割込みを使っている
728    ソフト割込みの中からBIOSコールだけを抽出したい
729        ステート管理が必要になる
730        リアルモードを用いるOSではシステムコールでTrapがかかる
731    軽快なBIOSコール
732        VMの床抜き術はここでも使えます!
733    疑似BIOSを用いる
734        疑似BIOSがVMCALL命令を発行
735   
736    AMD対応は?
737        ToDOリストに載ってる段階
738
739つくっておぼえる!仮想マシン ~直前で実装編~
740@siritori
741@iorivur
742
743    MIPSのマシンを
744        erlangで
745        haskellで
746   
747    実装してみました
748        昨日頑張りました
749        意地でも手続き型言語では書かない
750    Erlang
751        アクターモデルな並列指向言語
752        OTPというすごいフレームワークを使うための言語
753    出来ている所
754    出来ていない所
755        ELFローダ
756    レジスタとメモリ
757        ETS
758    命令の実装
759        高階関数
760    感想
761        MIPSのVMを複数立ち上げるのも朝飯前なのでやってみたい
762    Haskell
763        みんなMonadになる
764        できているところ
765        できていないところ
766            例外、コプロセッサ命令、ジャンプ命令
767        実装
768            再帰がそのままクロックのようなイメージ
769    Erlang
770        実行中にコードの書き換えが可能
771    Haskell
772        インタラクティブにレジスタに対する命令が入力出来る
773   
774    なんでMIPSなの?
775        さすがにx86をやる勇気はなかった
776    なんでErlangなの?
777        関数型言語を触ってみたかった
778        ビットマッチングが出来たから
779
780Xとかオワコンじゃね…っていう男の人って
781@naota344
782
783    自己紹介
784        SD誌でLinuxカーネルについて連載している
785   
786    X.ORGのコード
787        スパゲティ
788    XはもういやなのでWayland
789    Xのアーキテクチャ
790        X serverじゃまじゃね?
791    Wayland
792        client <-> Compositor <-> KMS / evdev
793    Wayland Terminal
794        フォントが気持ち悪い
795    デモ
796        Wayland自作クライアント
797        画像を表示するクライアント
798    Wayland
799        Waylandはプロトコル
800        オブジェクト
801            wl_display
802                コアオブジェクト
803            wl_shm
804                クライアントとのメモリ共有
805            などなど
806        メッセージ
807            UNIXドメインソケットで送られる
808            クライアント -> サーバ
809                リクエスト
810            逆はイベント
811    実装
812        Haskellで書いた
813    問題点
814        クライアントIDを適当にやったらSEGVした
815        intがうまく渡せないときがある
816        Haskellだけど実装があれ
817        Fdをメッセージと一緒に渡すので、パッチが必要だった
818
819
820x86_64/Linuxに独自メモリ空間を買って増設
821@nminoru_jp
822
823    メインフレームのソフトウェアエミュレータ
824        富士通のメインフレームのエミュレータ
825        IBM System/370互換
826    エミュレータを高速化するには
827        ゲストとホストでCPUが異なる計算機を想定
828        ARM,MIPS,SPARCなどをx86_64上で
829   
830    ゲストの仮想メモリがネック
831        ホストのMMUを使いたい
832   
833    どうやって使う
834        ・OSを自前で作る
835        ・OSから一部のCPUを切り離して独自処理
836        ・既存のOSを改造
837   
838    Linuxの仮想メモリの中に自分専用のVMを!
839   
840    /proc/oreorevm をmmap
841    CPU命令をインタープリタがロード・ストア
842    ゲストのTLBミスなどはSIGSEGV
843   
844    Hugetlbを参考に
845    Shadow Page Table
846        ゲストの仮想メモリ空間をホストのページテーブルに組み込む
847   
848    俺俺VMの利点
849        ゲストCR3を切替え対応
850            ゲストのコンテキストスイッチに応じてSPTの書き換えが必要
851            毎回破壊するとコストが高いので、過去のSPTも保存
852            PUDをゲスト仮想空間一つに割りあてると効率がよい
853        ゲストモード対応
854            ゲストにもusermodeとsupervisormodeがある
855        JITコンパイラ対応
856    まとめ
857        俺俺VMではx86_64のMMUが使える!
858        カーネルのリベースが必要だが、大変
859            なにかうまい手はないか……
860   
861bcacheのベンチマーク
862
863    低速で大容量のブロックデバイスを高速で小容量のブロックデバイスでキャッシュすることで
864    高速で大容量のブロックデバイスを実現しよう!
865   
866    consumer -> bcache -> SSD -> HDD
867    まだLinuxメインラインに入っていない
868   
869    /dev/bcache0 などという名前のブロックデバイスが出来る
870   
871    ベンチマーク1
872        iozone
873        HDD: Seagate 2.5inch 750G 7200rpm
874        SSD: Intel 520 120GB
875        RAID5: LSI MegaRAID
876    Write
877        HDD -> SSDで5%~7%の性能アップ
878    Rewrite
879        だいたい同じくらい
880    Random Write
881        だいたい同じくらい
882   
883    あまり利点が見つけられなかった
884   
885    ベンチマーク2
886        KVMで運用している既存の共用ホスティングサーバのディスクイメージに対するvfs_read/writeをSystemTapして記録
887        レイテンシを計測
888   
889    bcacheありだと、レイテンシのばらつきがほとんど無い
890    無しだと、レイテンシがばらついてしまう
891        ただし、使っているときより速いこともある
892   
893    FBのflashcacheとどう違うのか?
894        write backとして使った時に、SSDにだけ書かれてHDDに書かれていない状態で電源が落ちても
895        bcacheだと救える
896        キャッシュの扱い方が違う
897            bcache -> b-tree
898            flashcache -> CPUのキャッシュと同じやり方
899            bcacheだとアクセスが偏らないみたい
900   
901Tinycc on NaCl
902@shinh
903
904    モチベーション
905        ブラウザでちょっとCを実行出来ると嬉しい
906       
907    IOCCCのコードを実行してみよう
908   
909    仕組み
910        Tiny C Compiler
911        セルフコンパイル可能な3301BytesのCコンパイラ
912    TCCの特徴
913        コンパイルは速い
914        出来たバイナリは遅い?
915        割といろんなものがコンパイル出来る
916        コンパイラであり、プリプロセッサであり、リンカでもあり、ローダでもある
917        3万行くらい
918    Native Client
919        CUIで実行するためのloaderもある
920    NaCl Sandboxのつらいところ
921        いろんなところがころころ変わる
922        ドキュメントがない
923    TinyCC on NaCl
924    ToDO
925        頑張った割にまだ色々動かない
926
927kernelvim探検隊
928@shougomatsu
929
930    Vim枠
931    vinariseについて
932    x86勉強会で発表する内容の予告編
933    XXDには問題があるので、vinariseを作っている
934   
935    bitmap viewer
936   
937    驚異のvimスクリプトテクノロジー
938        動的にバッファが増えていく……!
939       
940    MBCSにも対応!
941        bitmap viewerによって目grepが可能に
942   
943    バイナリっぽいデータが見つかったらvinariseで開く、といったことも可能
944   
945    あなたにとってVimとは?
946        どの要素も持っているが、エディタではないことは確か
947    彼女とVim、どっちをとる?
948        一応、彼女の方が大切
949    bviとはどう違うか
950        メモリ展開しない
951        日本語対応
Note: See TracBrowser for help on using the repository browser.