2015年29週目まとめ

CPUの特権レベルについて調べた

CPUモード
リングプロテクション

CPUには複数のモードが存在し、特定の機能やメモリ領域にアクセスできるかどうかがこのモードで制御されるらしいです。

通常、ユーザのプログラムはレベル3、カーネルがレベル0で動いており、
ユーザのプログラムはレベル0で動いています。
そのため、 レベル0用のリソースを使うためにはカーネルに処理をお願いする必要があるそうです。

goのビルドツールについて調べる

go buildを実行することで、コンパイルとリンクをまとめて行うことが出来ます。
ですが、goではそれを別々に実行することも出来ます。

go tool 8gもしくはgo tool 6gを使うことで、goのソースコードからオブジェクトファイルを作成できます。
(どちらかは使用しているマシンのアーキテクチャによります)

生成されるオブジェクトファイルは.8もしくは.6の拡張子になります。
このファイルをgo tool 8lもしくはgo tool 6lを使ってリンクすることで、実行ファイルを作成できます。
実行ファイルはファイル名を指定しない場合、8.outもしくは6.outになります。

レーベンシュタイン距離計算を実装した

https://gist.github.com/ota42y/29dc71841f4388957020

二つの文字列のうち、片方をどれくらい編集したらもう片方の文字列に出来るかを求めるやつです。
アルゴリズム的には凄い簡単ですね。