10 大型冷蔵庫くらいあったものが、最終的には1チップに
13 ソースコードが公開されていて、UNIX第6版の詳細な注釈本(Lions本)も出ている
16 PDP-11の命令セットや周辺回路はHDLで記述
19 コンパイル・リンク・ロード→論理合成・配置実装・プログラム
25 SystemCというものもあるがいまいち流行らない
42 信号が伝わっていくときの遅延など、様々なレベルでシミュレーションが出来る
49 w11(OpenCores)をAvent Microboardに移植
54 ……元々使っていたボードが壊れましたので出来ません
58 当時は出力がターミナルではなくてプリンタといったこともありえたので、
59 現在のように環境などがログインプロンプト時に出ない
61 w11 CPU coreのdoxygen出力
67 ソフト屋はマニュアル通りハードウェアが使えれば十分なのか
68 ユーザはマニュアル通りソフトウェアが使えれば十分か
86 小型の組み込み機器等に使えるプラットフォーム
93 途中に仕様の分からないドライバと・仕様の分からないAPIが挟まっていた
121 UsbDeviceDriverを継承するとデバドラが簡単に作れる
137 wcid = associationId & 0xFF
139 ControlFrameだけは実装されているっぽい
142 Javaでプロトコルスタックを書くためのライブラリを作った
160 RequestおよびReply監視用Thread一本
165 もう二度と実装したくないプロトコルスタック堂々の一位(一人に聞いた)
169 Slow-startもCongrestion avoidanceもなし
170 TCPConnectionごとにThread一本
173 tickと呼ばれるMethodを無限ループで呼び続ける
176 受信FIFOに溜まっていれば取り出して、TCPInputに投げて処理
177 なければTCPOuputにて、ACK可能か判断し、送信
178 最後に再送タイムアウトが発生したかチェックして、再送信
186 tickが空回りしないように何もしないときは50ms程sleep
188 スライディングウィンドウ実現のために作ったクラス
191 つまり両端がInputStream/OutputStream
194 元々TCP向けなので入出力個別にシャットダウン可能
197 やっぱりどうしてもTCPはまともに動かない
199 より具体的にいうと、暗黙の了解のようなものが多かった
223 「Javaなんて使わない方が良いんじゃないの?」
225 JavaMEがCortex-M向けに出るらしいので
229 ImmotalHeapというものを使用する
237 相手のプロセスに干渉して、特定のタイミングで自分の任意の処理を呼ばせる
239 誰からもフックされないようなプロセスを作るには?
246 dllやドライバは管理者特権が必要だったりで、気づかれやすい
251 なのフェイの薄い本ください -> なのは完売
261 LoadLibraryAがやられたようだな…
265 SetWindowsHookExも採取的にはLdrLoadDllを呼び出す
267 全てのdll injectionに対応可能
271 CreateRemoteThreadで直接マシン語コードを挿入可能
272 anti thread injection
273 そもそもThreadはどうやって作られているのか
274 スレッドが実行されたら、実行される中身をUSOThreadに飛ばしてしまう
275 スレッド開始 -> BaseThreadInitThunk -> uso thread
282 anti thread injection
284 dll名からexeを特定して、exitする
293 コマンドとシェルスクリプトで企業システムを作る
299 word pressを使っていたが、injectionされたので「bashで作ればinjectionされないでしょう」
300 Universal Shell Programming Laboratory
311 DBのレイアウト表の作者が某大手の3次受け
313 まず、どのRDBMSを入れるか、から始まる
314 実績があるが高い企業と、安いが知らない企業はどちらが選ばれるか
318 安いといわれても、実物がどんなものになるか分からない
321 失敗しない設計を請け負うSE・下請け、弁護士
322 「これを入れれば大丈夫」というミドルウェア
323 俺たちは成功する、という広告を請け負う広報・代理店
331 人・マニュアル・「見通しのよいアーキテクチャ」
337 コマンド、apache、NFS、その他標準のもの
339 ファイルがファイルシステム上であちこちに分散してしまわないようなシステムを構築する
348 統計データを加工、問われたら答えるデータを準備
358 ブラウザに表示する直前のデータ -> アプリケーション
362 レベル1-5はアーキテクチャの話なのでもっと親切
364 DBは木構造の概念が薄い -> DBより生のUNIXが良い
366 ファイルの入力リダイレクト -> コマンド -> パイプ -> コマンド -> 出力リダイレクト
373 ログファイルに全角は来ないだろう -> 「あ」をsplit文字に使う
374 プログラミングしない人にはこちらの方が分かりやすい
382 デバッグはteeとheadコマンドを使っている
386 さらに先の未来10へ & 最小特権オペレーション Capsicum
391 FreeBSD unionfsの再設計と再実装
393 可能な限りデイリーでFreeBSDのトピックをアップ
395 FreeBSD Expert 2012 Digital Edition
400 「ZFSのバージョンは上げない」が安定運用の鉄則
401 どうしても新しい機能が使いたい場合は新しいサーバを作ってコピーが良い
412 useridとgroupidのマッピングを行う必要が無くなったため
416 コールバックの機能を使いたいときは有効にする
417 MacOSX LionからNFSv4にアクセス出来るようになった
419 Soft Updatesジャーナリング機能
420 どのタイミングで再起動してもデータは壊れないといわれている
421 メタデータとデータ本体の整合性がとれなくなることはある
423 起動時にfsckが掛かる場合、バックグラウンドfsckを行うために用いる
424 ただし、I/O負荷が高いので、実用には耐えかねる
425 FreeBSDでは、Soft Updatesの操作に対してジャーナルログを取るようにした
426 ブロックサイズとフラグメントサイズが引き上げられた
430 小さいファイルが大量にある場合はUSFは高速で動く
433 最近のFreeBSDで導入された機能を使用出来ない
435 OSの機能をフルに使う場合は、Cで書くよりもシェルスクリプトで実装した方が拡張しやすい
436 GUIインストーラがどうしても必要であれば、PC-BSDを使うと良い
438 本書ではjailとVImageを使って別々のネットワークスタックを用意し、個別の輻輳制御を試している
440 無線の輻輳制御と高速なネットワークの輻輳制御を一つのアルゴリズムで行うのは現実的ではない
442 v4が有効になっていると、v4が影響して問題が出ているのか、分かりにくい
444 ATAサブシステムがCAMサブシステムに統合された
445 disk ad -> adaに名前が変更になった
449 MBRの制限が無くなったので、スライスを使わなくなっている
462 特に問題になるのはChromeのようなアプリケーション
464 エンジニアが学習する量が非常に少なくて済む
465 ファイルディスクリプタに、どこまでアクセスして良いか書かれている
467 イメージとしては、プロセスが自分でjailの中に飛び込んでいく感じ
468 ケーパビリティに入った後にopenしようとするとエラーになる
469 一度ケーパビリティモードに入ると、forkしても出られない
470 Chromeの実装における書くOSの追加コード
475 労力の割に儲からないので、これが最後のFreeBSD本になるかも…
478 ディベロッパーからの回答「I don't know.」
481 dtraceは現状のまま取り込むことは出来なさそう
502 名状しがたいプログラミング言語nyaruko
511 同級生の純粋関数型言語野郎に、Iotaの命令置換じゃんといわれた
514 ------------------------------------------------
522 ネタかぶり… => @hiromu1996
527 configureスクリプト (autoconf)
532 CPP: #define a a -> a
533 m4: define(`a', `a()')a() -> 無限ループ
560 trコマンドで、brainf*ckの入力をm4のマクロに変換
563 会場で10分で作った「名状しがたいプログラミング言語」
588 バイナリアンだったらもう一工夫在るのかなぁ
592 シリアルのレートは9600で、サンプリングレートは?
597 Software Development with Editor
601 Developing Hex Editor
603 Development life-cycle with Text Editor
617 VMM <=> kernel -> 今回は考えない
628 16進数ダンプ、ASCIIなど読める部分を読む
633 複数のことを同時に考えるのは人間には無理ぽ
634 GB単位のバイナリデータを目grepは無理
642 求められる機能ははっきりしている -> ok
644 Terminalとエディタ、人間のコンテキストスイッチを減らしたい
650 SAN値論理と名状しがたいプログラミングSAN値Prolog
657 2.72進数というのは扱いにくい -> 三値論理
662 評価時の「頭のおかしさ具合」を「SAN値」と呼ぶ
664 評価時に、SAN値に近いSAN度を持つ節が選ばれる
666 節は評価して、真であったらSAN値が比較される
672 「大きい」ではなく、SAN値に近いものを選ぶ
680 軽快なPlan 9 Update Illumos KVM上陸
685 ネットワークに繋がっていないゲストがOSとのsocketを呼び出して、外のネットワークからデータを取ってくる
688 Linux KVMがIllmosに移植された
693 Linux KVMが読めれば同じように読める
698 起動中にbell研のサイトに繋がってhtml取ってくる
699 しかし、ifconfigするとネットワークは繋がっていない
709 独自ローダからFreeBSDカーネルをゲストOSとしてロード、ブート出来るだけ
710 BIOSが動かないので、ブートローダが動かない
712 int13h -> ソフト割込み -> CPUが割込みベクタを読む -> BIOS状のハンドラを実行
719 BSDLでBIOSをエミュレートするソフトは既にある
720 doscmdとか (FreeBSD状で動作)
721 仮想8086モードでDOSプログラムを動作
723 32bit実装だし、移植するならhypervisor側に入れた方が良い
724 ソフト割込みの時点でTrapするようにする
725 IntelVTの機能でソフト割込みをTrapすると…
727 多くのOSがシステムコールにソフト割込みを使っている
728 ソフト割込みの中からBIOSコールだけを抽出したい
730 リアルモードを用いるOSではシステムコールでTrapがかかる
739 つくっておぼえる!仮想マシン ~直前で実装編~
752 OTPというすごいフレームワークを使うための言語
761 MIPSのVMを複数立ち上げるのも朝飯前なのでやってみたい
772 インタラクティブにレジスタに対する命令が入力出来る
784 SD誌でLinuxカーネルについて連載している
792 client <-> Compositor <-> KMS / evdev
814 クライアントIDを適当にやったらSEGVした
817 Fdをメッセージと一緒に渡すので、パッチが必要だった
820 x86_64/Linuxに独自メモリ空間を買って増設
827 ゲストとホストでCPUが異なる計算機を想定
828 ARM,MIPS,SPARCなどをx86_64上で
835 ・OSから一部のCPUを切り離して独自処理
838 Linuxの仮想メモリの中に自分専用のVMを!
841 CPU命令をインタープリタがロード・ストア
846 ゲストの仮想メモリ空間をホストのページテーブルに組み込む
850 ゲストのコンテキストスイッチに応じてSPTの書き換えが必要
851 毎回破壊するとコストが高いので、過去のSPTも保存
852 PUDをゲスト仮想空間一つに割りあてると効率がよい
854 ゲストにもusermodeとsupervisormodeがある
857 俺俺VMではx86_64のMMUが使える!
863 低速で大容量のブロックデバイスを高速で小容量のブロックデバイスでキャッシュすることで
864 高速で大容量のブロックデバイスを実現しよう!
866 consumer -> bcache -> SSD -> HDD
869 /dev/bcache0 などという名前のブロックデバイスが出来る
873 HDD: Seagate 2.5inch 750G 7200rpm
877 HDD -> SSDで5%~7%の性能アップ
886 KVMで運用している既存の共用ホスティングサーバのディスクイメージに対するvfs_read/writeをSystemTapして記録
889 bcacheありだと、レイテンシのばらつきがほとんど無い
893 FBのflashcacheとどう違うのか?
894 write backとして使った時に、SSDにだけ書かれてHDDに書かれていない状態で電源が落ちても
898 flashcache -> CPUのキャッシュと同じやり方
911 セルフコンパイル可能な3301BytesのCコンパイラ
916 コンパイラであり、プリプロセッサであり、リンカでもあり、ローダでもある
933 XXDには問題があるので、vinariseを作っている
941 bitmap viewerによって目grepが可能に
943 バイナリっぽいデータが見つかったらvinariseで開く、といったことも可能
946 どの要素も持っているが、エディタではないことは確か