5/27 (水)
綱島から新横浜まで徒歩
通勤中に東急東横線で人身事故。 運悪く綱島駅で電車が止まる。
待てども復旧しないし、 振替輸送のバスは人が混み過ぎて乗れそうにないので、 綱島駅→大岡山駅→新横浜までを徒歩で通勤することになった。 結局、約45分ほどかかる。
最寄駅(元住吉)から綱島まで20分ぐらいなので、 自宅からなら1時間強で徒歩通勤はできそうだということは分かった。 実際にやるのは厳しいが…
5/18 (月)
[Linux] SIGSEGV シグナルの siginfo_t の si_addr の値はアーキテクチャ依存
sa_flags に SA_SIGINFO を指定して SIGSEGV シグナルを sigaction(2) を設定すると、 シグナルハンドラに siginfo_t 型へのポインタが渡ってくる。 このポインタの si_addr は SIGSEGV シグナルを起こしたメモリアドレスが入っているのだが、 アーキテクチャによって微妙に入っている値の意味が変わっているようだ。
mprotect(2) を使って前半ページはアクセス可能、 後半ページはアクセス不能というメモリ領域を作って、 そのページ境界にアクセスした場合、
- IA-64 の場合、si_addr の値はメモリアクセス命令のアクセスしようとしていたメモリ範囲の開始アドレスになる。
- i386 と x86-64 は後半ページの開始アドレスになる。
になっている。 IA-64 の場合は irf レジスタの値を、 i386 や x86-64 の場合は CR2 の値を si_addr に格納しているが、 両者で例外/フォルトを起こしたアドレスに差があるのが原因だ。 si_addr でフォルトを起こしたページの判定を行なう場合は、 アーキテクチャ毎に判定ロジックを変えないと駄目なようだ。
5/13 (水)
[Book] Virtual Machines: Versatile Platforms For Systems And Processes

世の中にコンパイラの本はたくさんあるが、 どれも静的コンパイラに関するものばかり。 最近のコンパイラの教科書には、 エイホ先生の Compilers の 2nd Edition のように、 動的コンパイラに関する情報がちらほら載りつつあるが、 どうもおまけ程度の印象を拭えない。
JIT コンパイラあるいは dynamic binary translation の教科書は世の中にないものかしらと思っていたのだが、 識者から Virtual Machines: Versatile Platforms For Systems And Processes (James E. Smith, Ravi Nain, Navi Nair) という本がいいと勧められた。 ただメモをとっておかなかったので、 タイトルを失念するという失敗を犯してしまう。
しかし数日前 threaded interpreter についてググっている時に 小嶋智氏の 買い物ログ別館: VirtualMachine本のひとり勉強会の ブログにヒットして、 タイトルを思い出すことができた。 さっそく amazon.co.jp で購入。
章のタイトルは以下の通り。
- Chapter 1: Introduction to Virtual Machine
(概論) - Chapter 2: Emulation: Interpretation and Binary Translation
(仮想マシンを作る上での命令インタプリータの実現方式の紹介と binary translation の概略) - Chapter 3: Process Virual Machines
(FX!32 や Itanium の IA-32 EL のようにシステムの一部分だけをエミュレーション場合の仮想マシンの話) - Chapter 4: Dynamic Binary Optimizaion
(JITコンパイルあるいは動的バイナリ変換の話) - Chapter 5: High-Level Language Virtual Machine Architecture
(Pascal の P-Code や Java VM/CLI など実 CPU よりもリッチな中間言語を解釈する仮想マシンの話) - Chapter 6: High-Level Language Virtual Machine Implementation (上記の実装方式に関する細かい話)
- Chapter 7: Codesigned Virtual Machine
(IBM AS/400 や Transmeta Crusoe などハード側に仮想化支援機能がある仮想マシンの話) - Chapter 8: System Virtual Machines
(IBM の System/370 の VM/370 や、VMware などシステム全体をエミュレーションしている仮想マシンの話) - Chapter 9: Multiprocessor Virtualization
(PAPR, LAPR など負荷分散、RAS 向上機能を備えた仮想マシンの話)
仮想マシンの実現手法について広く浅く紹介されているが、 これまでに自分がやってきた仕事のポイントはことごとく網羅されているので驚いた。
参考文献リストも分厚いの調べものをするには大変便利な本で、 自分的には大変重宝しそう (出版は 2005 年なので、紹介されている文献は2003年から2004年初期ぐらいまでだが)。 また CPU エミュレータや Java VM を作ってみようと考えている人や、 これまでメインフレームの世界で行なわれてきた 仮想マシン/仮想OSの「正史」を知りたい人にお薦め。
5/7 (木)
[Food] らーめんの駅@新横浜ラーメン博物館
連休が終わったので5月4日の日記に書いた 「らーめんの駅」に行ってきた。
お店はラーメン博物館の地下1階、 過去に「すみれ」、 後にけやき(欅)があった箇所だ。
記憶が曖昧だが、 味は「さっぽろ純連@高田馬場」や「すみれ@ラゾーナ川崎店」よりも 「すみれ@ラー博店」に近いような気がする。
ちなみに過去のすみれ・純連系ラーメンを食べた日記記録。
- さっぽろ純連@高田馬場 2004年6月19日、2007年4月22日
- すみれ@池袋東武百貨店 2005年7月30日
- すみれ@ラゾーナ川崎店 2007年7月22日