2009年4月 3日

[linux-users:108241] Diversity of driver model

唐突ですが、デスクトップでの普及、という観点から見た
Linuxカーネルの問題点って何でしょう。

個人的には、いわゆる「バイナリドライバー」問題だと思っておます。
ようは、いまのように、ドライバーからカーネルまで一括で
コンパイルするしかないのではなく、
Windowsのように、出来合いのドライバをメーカーのサイトから
ダウンロードできるようにすること。


これこそが、
「カーネルレベルかつデスクトップ普及」、
という観点からは
Linux最大の問題だと思っているのですが、
皆様のご意見は?。

まず、ここが聞きたいわけですが、どーでしょうか > ALL。

で、一応、そのための動きも。
http://ldn.linuxfoundation.org/article/the-linux-driver-model-a-better-way-support-devices
が、これにはこんな反論も。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.6/stable_api_nonsense.txt.html
http://sourceforge.jp/projects/linuxjf/wiki/LinusInterviewPart1-3
「Linux driver stable ABI/API」 あたりでググってください。

私としては、Greg KH の意見も、Linux Foundationの意見も、
双方に理解を示しますが、
しかし、両者とも基本的なことで勘違いしてないか?

なんで、すべてのドライバを同じ方式にする必要性があるのでしょうか。
たしかに、いまのやり方は、gccの関数コールの方法のチューニング
(レジスタ渡しとか)まで可能なので、速度的には最高なんですが、
一括コンパイルが前提となるので、利便性としては最悪。

別の言い方をすれば、
あんなにプログラミングの自由とかうるさい連中が、
なぜか、カーネルのプログラミング形式に関しては
ひとつに統一することを強制している。

これ、複数あってもいいんじゃないか?
速度が必要なドライバは、今までと同じ方法を使えばいいし、
そんなの不要なドライバは、stable API を使えばいい。

とにかく、全部を統一する必要性は一切なく、
利便性と実行性能のトレードオフを見極めて、
各ドライバ作者が最適な方法を選択すればいい。
なんで、全部同じ方式を押し付けるかな?

具体例もつけておいたんで、よかったらご意見を。

有限会社デジタルインフラ 岡島 純
http://www.digitalinfra.co.jp/


具体例:
たとえば、上から、性能より利便性重視の順で、こんなのはどうよ?
------------------------
1、長期固定APIのみ使用、しかもユーザランド。
2、長期固定API、ただし、カーネルモード。
3、短期固定API、カーネルモード
4、非固定API(今と同じ)、カーネルモード、ただし、コンパイラ非依存。
5、非固定API、コンパイラ依存、カーネルモード、ただし、スタブによりコンパイラ非依存可。
6、非固定API、コンパイラ依存、カーネルモード、スタブ不可、(つまり全部今と同じ)。

1なら、一番インストールは簡単だが、速度は遅い。
6はその逆。
コンパイラ依存とは、ようは、gcc4.0 でコンパイルされたカーネルに、
gcc 3.2 でコンパイルされたドライバが突っ込めるか、という問題ね。
この場合、関数コールの方法とかを統一する必要性がある。
ただし、関数コールの方法が異なっても、変換ライブラリ(スタブ)を通して
補正できる場合もある。
長期固定APIは、たとえば、2.4以降なら
将来にわたって全部使用可能、みたいなの。
短期固定APIは、たとえば、2008年リリースのカーネルのみ、とか。
非固定APIは、もう、2.6.10.1 と2.6.10.2 でちがっちゃう、みたいな。


あとは、各ドライバの作者が、
利便性と実行速度を天秤にかけて、適当に選択すればいい。
場合によっては、一本のソースから複数の形式のバイナリを切り出せる
フレームワークとかもできるかもね。
--------------------

投稿者 xml-rpc : 2009年4月 3日 19:09
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/83922
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。