3月版 カーネルが無実のプロセスをkillし始めるとき


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/3/28

linux-kernelメーリングリスト(以下LKML)かいわいで起きるイベントを毎月お伝えする、Linux Kernel Watch。2006年2月はどのようなことが起きたのか、見てみましょう。

カーネル2.6.16でglibc 2.4対応

 カーネル2.6.16のリリースへ向けて、Linusは-rc版を毎週出していました。その中で、*at関数やunshareシステムコールの追加が行われました。これらは、glibc 2.4のリリースに対応したもののようです。

 openat、fstatatなどの関数は、ファイルディスクリプタをカレントディレクトリとし、ディレクトリの相対指定によるファイル操作を実現します。例えば、下記のようなフローで「directory/name」にあるファイルをオープンできるようになります。

fd = open ("directory", O_RDONLY);
fd2 = openat (fd, "name", O_RDONLY); // fdからの相対指定でopen

 従来のopenのみしか使えない場合と比較すると、ルートディレクトリから順番にディレクトリをたどってパスを確認することが不要になり、処理が効率化します。これは、パス名が長大な場合に特に有効です。また、statしてからopenする間に起き得る競合を避けることができるなどの利点があるようです。Solarisに存在する同名のインターフェイスを参考にしたもののようです。

 unshareシステムコールはcloneシステムコールと対を成し、プロセス間で共有しているリソースを共有しないようにできるものです。スレッドで共有しているメモリ空間や、通常forkしても共有されたままになるファイルシステムの名前空間などを分離できるようです。

 これらの機能を利用するには、3月に入ってからリリースされたglibc 2.4への移行が必要です。そのため一般的に利用できるようになるまでには、まだしばらく時間がかかりそうです。

参考:
Linuxカーネル内のunshareのドキュメント
Documentation/unshare.txt

デバイスを管理するhaldがCD-Rの邪魔をする

 2月もJoerg Schillingたちの議論は継続していました(編注)。あまり技術的な問題ではない話を中心に展開していますが、現状への不満や今後の解決方法といった趣旨の議論も含まれています。

編注:cdrecordの開発者Joerg Schillingが巻き起こしたSCSIの実装に関する議論。「Joerg Schilling大いに暴れる」(2月版 紛糾! 安定版カーネルの「あるべき姿」とは?)参照。

 「システムに接続しているCD-Rデバイスすべてに関して“bus:target:lun”形式で一覧を確認する方法が必要だ」と強硬に主張するJoergですが、そこまでこだわっていない人たちは、Linux上ですべてのCD-Rデバイスを確認する別の方法を模索しています。

 実は、既存の機構でCD-ROMデバイスの一覧を取得することが可能です。/proc/sys/dev/cdrom/infoファイルを確認すると、カーネルが把握しているCD-ROMデバイスの一覧が出力されます。ただし、この出力フォーマットがあまり機械処理しやすい形式でなく、また最近は「sysfsへ移行する」という流れがあるため、新しいインターフェイスが必要であるという方向に議論が展開しました。

 最近発生している問題として、halとの関係があります。halは比較的新しい機構で、Linuxカーネルはこの仕組みを使ってデバイスを管理できるようになっています。しかし、haldが定期的にデバイスに対してポーリングを実施する影響で、CD-Rデバイスの書き込み失敗が発生しているようです。この問題は、haldを停止することで暫定的には解決するようです。

 ただそうなると、haldを停止した状態でSCSIデバイスのデバイス名情報をどうやって取得したらよいのか、ということになります。この疑問に対してKay Sieversは、sysfsから情報を取得できることを例示しながら説明していました。

$ udevinfo -r -q name -p /block/sr0
/dev/sr0

$ udevinfo -q path -n /dev/sr0
/block/sr0

1/2

Index
Linux Kernel Watch 3月版
 カーネルが無実のプロセスをkillし始めるとき
Page 1
 カーネル2.6.16でglibc 2.4対応
 デバイスを管理するhaldがCD-Rの邪魔をする
  Page 2
 “不安定なsysfs”が含まれる“安定版カーネル”って……
 カーネルのキラーが無実のプロセスを殺して回る
 -mmツリーにホットフィックスを
 -stableリリース

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間