【レポート】
2009年3月12日から15日までの4日間、東京において「AsiaBSDCon 2009」が開催された。本誌では、同カンファレンスの中から特に興味深いセッションをピックアップしてお伝えする。
マルチコア/プロセッサ化に対応すべく、FreeBSDはカーネルからサブシステムに至るまで改善に取り組んできた。このFreeBSDロック処理の取り組みの背後には、開発者に対して「ロックを使うところでは問題や動作をよく理解したうえで、適切で正しいプリミティブを使うこと」といったように、ロックを使う側でロック問題への理解やカーネルが提供しているロック手段といった2つの物事への理解を求めている。
AsiaBSDCon 2009ではAttilio Rao氏がFreeBSDカーネルにおけるロック機能の解説をおこなった。FreeBSDカーネルが提供しているロック機構やその分類、特徴、どういったロックを使うべきかが見渡せる発表だ。FreeBSDカーネルの開発に限らず、ロック処理を実装する場合の参考になる内容といえる。
ロック処理の話を知るにあたっては、なぜ現在の実装へ至ることになったのか、その最初を知っておくとわかりやすい。それはFreeBSD 4系における問題の明確化が事の発端になっている。FreeBSD 4系ではマルチスレッドプリエンプションを実現すべく開発が行われたものの、スキーマにある問題が明かになり実行中のスレッドがプリエンプションされるとアクティブに戻った段階でエラーが起こったりリソースにアクセスできないという問題があることが明かになった。
この問題を避けるために、カーネルスペースで実行中のスレッドに対してはプリエンプションを許可しないとかロックとしての割り込みを実行させないといった実装をおこなうものの、この方法ではマルチプロセッサでは性能がスケールせず好ましくない。1度にカーネルで実行できるスレッドは1つまでという制限を課すことになるため、コアやプロセッサが増えるほど不利になるという状況になった。これがSMPngへつながっていく。
こうした問題を解決し、マルチスレッドプリエンプションに対応した再入不能なカーネルを開発しようというプロジェクトがSMPngプロジェクトだ。最終的には適切なロック機構の実装、新しいカーネルメモリアロケータの実装、スケジューラアクティビティからBKLの削除と適切なスピンmutexへの置き換え、ithreadの実装などがおこなわれた。
BKLから適切なロックの置き換えと、もう一つ注目されるのはithreadの実装だ。ithreadが実装されたことでドライバが割り込みハンドラをインストールして自身のコンテキストを実行時にアサインできるようになった。つまりすべての割り込みハンドラがスリープ可能ロックを使うことが出きるようになったり、さらにほかの機能も使えるようになった。ネットワークサブシステムの並列度向上にもithreadが使われている。カーネル内処理の並列度を向上させるうえで欠かせない機構だ。
SMPngプロジェクト終了後は、古いロック機構を使っている部分の書き換えや、ithreadをさらに拡張するinterrupt filtering機能の実装がおこなわれている。最近のFreeBSD開発でよくキーワードとして見かけるithreadやr/w lock、rm lock、mutexなどはこのあたりの話をひと通り把握しておくとわかりやすくなる。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
[北島三郎]「目立たなきゃだめ」と話題の“オオカミバンド”を激励 [12:30 2/11] ホビー |
|
目的は一体!? 肥前夢街道に現るバッジ売りの少猫(佐賀県) [12:08 2/11] キャリア |
|
つらい花粉症は対策グッズで乗り切ろう! [12:07 2/11] キャリア |
|
【アジア発!Breaking News】マンションの排水口で銃の試し打ち。階下水漏れで、銃器所持の男らを逮捕。(台湾) [12:07 2/11] キャリア |
|
【エンタがビタミン♪】『逆転裁判』の斎藤工、“ラー油入り手作りチョコ”で女性不信に。 [12:07 2/11] キャリア |