☆Linux カーネルの仕組みを勉強するスレ☆
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
01/10/02 17:44ID:38KkZsUQカーネル全般について語り合うスレッドです。
0147login:Penguin
01/11/11 18:30ID:ZDELobu/n:mカーネルスレッドってなに?
0148login:Penguin
01/11/12 12:37ID:IjOleHL1実際に平行して走るスレッド数と、スレッド数が違う。
Linuxの今のカーネルスレッドの場合は、両方同じ。
0149login:Penguin
01/11/12 17:24ID:IV1WKQExんなことないっしょ。
Linux よりもよっぽど人手のなさそうな FreeBSD (KSE) とか、さらに
人手のなさそうな NetBSD (nathanw_sa) でも開発が進んでいるんだし。
問題は人手というよりも、Linux カーネル開発メンバーの石頭 (N:M スレッド
が大嫌いな奴が結構多い) じゃないの?
0150147
01/11/12 18:57ID:JAFYYv/Y> 実際に平行して走るスレッド数と、スレッド数が違う。
> Linuxの今のカーネルスレッドの場合は、両方同じ。
いやそれは n:m のスレッドだよね。
カーネルスレッドは常に 1:1 では?
もしかしてスケジューラアクティベーションとかの話題?
0151login:Penguin
01/11/12 19:14ID:JAFYYv/Yone-to-many ユーザー空間スレッド
one-to-one カーネルスレッド
meny-to-meny 上記のハイブリッド
だと思ってたんだけど俺の認識は間違ってるか?
Solalis なんかは meny-to-meny だよな。
その為にスケジューラアクティベーションのような複雑な仕組を持ち込んでる。
Linux 的にはそんな複雑なものを持ち込んで性能を出せるかどうか…
ってのがまずあるんだろう。SMP とのバランスも取らないといけないしな。
0152login:Penguin
01/11/12 19:39ID:IV1WKQExmany-to-many 型がすなわち、スケジューラアクティベーションを意味する
わけじゃないよ。昔の Solaris では、スケジューラアクティベーション的
な実装はしてなかった。
で、昔の Solaris のやり方よりも、スケジューラアクティベーションの方が、
アイディアとしてはある意味シンプルだと思うな。
> Linux 的にはそんな複雑なものを持ち込んで性能を出せるかどうか…
> ってのがまずあるんだろう。
これが典型的な反応ですねえ… それが正しいかどうかは別だけど。
> SMP とのバランスも取らないといけないしな。
ここ意味わかんないなあ。バランスって何?
SMP と N:M スレッドって、トレードオフの関係にはないと思う。
>> 実際に平行して走るスレッド数と、スレッド数が違う。
「実際に並行して走る」ってのが何を意味しているか、ちょっと不明かな。
N:M スレッドってのは、ユーザランドスレッド M 個に対して、カーネルスレッ
ド N 個 (M >= N, N >= 1) を使うような実装のことです。
M == N だと 1:1 になっちゃうし N==1 だとユーザーランドスレッドになっちゃ
うけど、M > N とか N > 1 になりうるってところが違うところね。
蛇足:
s/Solalis/Solaris/
s/meny/many/g
0153login:Penguin
01/11/12 19:57ID:JAFYYv/Y> ここ意味わかんないなあ。バランスって何?
> SMP と N:M スレッドって、トレードオフの関係にはないと思う。
今のプロセスモデル(カーネルスレッド含む)で SMP をうまく使うようにデ
ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
くらいのハナシ。
> 蛇足:
> s/Solalis/Solaris/
> s/meny/many/g
スマソ(照
0154login:Penguin
01/11/12 20:08ID:JAFYYv/Y> 実装されて欲しいのは。
> ・スケジューラのマルチメディア対応とマルチキュー化
なんか具体性に欠けるけどプリエンプトなスケジューラは今実装中だぞ。
> ・暗号化ファイルシステム
loop.c をハクれ
0155login:Penguin
01/11/12 20:08ID:IV1WKQEx> ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
> くらいのハナシ。
そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
の一つなんだし。
あと、個人的に Linux のスケジューラはあんまり信用してないっす。
他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)
0156login:Penguin
01/11/12 20:21ID:JAFYYv/Y> そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
> リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
> 定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
> の一つなんだし。
あーそうだった。前言撤回。
> あと、個人的に Linux のスケジューラはあんまり信用してないっす。
4.3BSDのスケジューラに毛の生えたようなモノだからね。
さすがに毎秒キューを再計算したりはしないけど。
> 他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
> い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)
キューの再計算をなるべく遅延させているからその点で違いが出てくるのかな。
0157login:Penguin
01/11/12 22:59ID:IV1WKQEx検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
priority 引数がないあたりにも問題があるのかもしれない。
(例えば *BSD 系だと sleep/tsleep に priority 引数があり、I/O 処理が
完了した直後は優先度が上がる)
もしそうだとすると、I/O 処理に関わる sleep_on 呼びだしを全て直さないと
解決できない、構造的問題ってことに…
0158login:Penguin
01/11/13 04:18ID:Rt2iJ7Brあと、Linux的なら、とりあえず実装してみて、性能でなかったらまた考えるでいいんじゃないんですかね。
よく考えて実装するのは、*BSDにまかせたらいいのでは(笑)
だれかやんないんだろうか。
0159login:Penguin
01/11/13 16:25ID:Istj8zjeだから、IBMのがあるって。
あれじゃだめなの?
0160login:Penguin
01/11/13 16:52ID:MqzmFHkNhttp://www-124.ibm.com/developerworks/oss/pthreads/
Next Generation POSIX Threading
The goal of this project is to attempt to solve the problems associated with the use of the pthreads library on
Linux. It will add M:N threading capability and improve significantly on the POSIX compliance of pthreads on
Linux. This will allow significant performance improvements for all applications that make use of the pthreads
library, particularly on SMP machines. It will also enable Linux to provide threading services that are more in
line with the capabilities of the commerical Unix operating system such as IBM AIX and SGI IRIX.
0162login:Penguin
01/11/13 20:00ID:/IBKTqGWI/O Insentive ってどのレベルをいってるんだ?
もしかして tty すか?プ
0163login:Penguin
01/11/13 20:09ID:36p1vksl経験したのは、ネットワーク I/O。
なんか latency 的に性能悪いなあと思って調べたらそういうことだった。
> もしかして tty すか?プ
ん? その心は?
0164login:Penguin
01/11/13 20:39ID:CaHKE6Ak> 検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
> priority 引数がないあたりにも問題があるのかもしれない。
これはシステムコールの違いでしょう。
Linuxには他にいくつかシステムコールが追加されているよ。
0165login:Penguin
01/11/13 20:42ID:36p1vkslああ、理解されてない。;_;
いいけど。
0166login:Penguin
01/11/13 20:53ID:CaHKE6Ak> ああ、理解されてない。;_;
ん? よくわかんないんだけど。スリープ優先度がないってこと?
0167login:Penguin
01/11/13 21:54ID:36p1vkslそもそも sleep_on() ってシステムコールじゃないでしょ。
> スリープ優先度がないってこと?
そうっす。
スケジューラの方を直すのは別に難しくないんだけど、sleep_on() を呼び出
しているところを全部書き換えるのが果てしなく面倒そう。それとも比較的単
純な置き換えで済むからなんとかなるのかなあ。
ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
だったので、そっちで適度に sched_yield() することにして、問題を回避し
たっす。というわけで、自分で直そうというモチベーションは出ないのね。
0168login:Penguin
01/11/13 22:28ID:CaHKE6Ak> 経験したのは、ネットワーク I/O。
> なんか latency 的に性能悪いなあと思って調べたらそういうことだった。
I/O InsentiveってネットワークI/OやDiskI/Oにも高い優先度を割り振った方が
いいスケジューラなの? 俺はそう思わんけど。
>>167
> ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
> だったので、そっちで適度に sched_yield() することにして、問題を回避し
> たっす。というわけで、自分で直そうというモチベーションは出ないのね。
応答性が重要ならそもそもOSの選択に間違いがあったと思われ。
0169login:Penguin
01/11/13 22:48ID:36p1vksl> いいスケジューラなの? 俺はそう思わんけど。
うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。
> 応答性が重要ならそもそもOSの選択に間違いがあったと思われ。
それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
0170login:Penguin
01/11/13 22:56ID:CaHKE6Ak> うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。
ごめん。OS はほとんど自学なので基本的なことがわかってないかも知れない。
しかし多量のディスクI/Oや,遅いネットワークI/Oってのは短い応答時間が
必要だろうか? ってハナシ。
> それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
> 該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。
0171login:Penguin
01/11/13 23:19ID:36p1vkslシステム全体の「スループット」(not only 応答性) も向上させるのよ。
これ常識。
まともなハードウェアなら I/O と計算処理は並列動作できるから (PC 用の
安物ハードウェアには、駄目なものも多いが)、こうした方がシステム全体の並
列性が上がるんよ。I/O intensive なプロセスに CPU が回ってこないと、
本来発行できる筈の I/O 要求が発行できないので、並列度が落ちるわけ。
> Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。
実はそのソフトウェアは、開発段階では Solaris と BSD でも動かしてたんだ
が (最終版は Linux のみ)、Solaris だけじゃなくて BSD でも問題なかったのね。
だから、これに関してはカーネルレベルでのプリエンプティブ性は必要ない。
Linux 版がなんか遅いなあと気づいたのは、比較対象があったせいなわけ。
0172login:Penguin
01/11/13 23:27ID:cEWualSTでも、システム全体のスループットをあげるのが必ずしも良いとは限らないよね?
そうすると公平性が損なわれない?
0173login:Penguin
01/11/13 23:46ID:36p1vksl一般的にはスループットと応答性はトレードオフになることが多いからね。
でも、この件に限って言うと、スループットも応答性も両方とも向上する
ので、当てはまらない。
> そうすると公平性が損なわれない?
失われない。
sleep priority は、sleep から目覚めてからユーザーモードに戻るまでの間
しか適用されないから、もしそのプロセスが I/O するだけでなく CPU も沢山
使っている場合は、(sleep priority じゃない方の) 優先度が下がっているの
で、ユーザーモードに戻る時に、より優先度の高いプロセスにスイッチしてし
まうから。
0174login:Penguin
01/11/14 00:00ID:BJD7Ro88> I/O intensive なプロセスに優先的に CPU を与えることは、
> システム全体の「スループット」(not only 応答性) も向上させるのよ。
> これ常識。
ん〜じゃほとんどI/OせずCPUをガンガン使うタイプのプロセスはあまりCPUを
使えなくなるような気がするのだけど。
0175login:Penguin
01/11/14 00:13ID:LEvOTgWY2.4 で比較してみたら?
0176login:Penguin
01/11/14 00:22ID:LEvOTgWY性能があんまし出てないって話だったのね。
2.4 ではカードによっては zero copy が出来るようになったし、
32bitマシンで64bitDMAのbounce buffer なしのデータのやりとり
とかもできるようになってきてるし、ソフト開発で今更 2.2
がターゲットというのもどうかとおもわれ。
0177login:Penguin
01/11/14 00:46ID:IRaPmSaY> 使えなくなるような気がするのだけど。
その通り。UNIX のスケジューラは、どれも基本的には、こうなっているよ。
Linux だってそう。嘘だと思ったらスケジューラのソースを読んでくれ。
ところが、基本的にはそうなっている筈なのに、なぜか CPU intensive な
プロセスが CPU を掴んで離さないことがあるのが変だって話をしてるわけ。
その原因として Linux に sleep priority がない (他の UNIX には、全て
ある) ことを疑っているんだけど、本当にこれが原因なのかどうかは実は
検証したわけじゃないので良く分からない。濡れ衣かもしれない。
あと、今回の件は wake one とか zero copy とか bounce buffer なしとか
は、たぶん関係ないよ。どうしてそう想像できるかは、
・使ったハードは、今どきの Intel CPU に Intel EtherExpress PRO
・CPU intensive なプロセスと I/O intensive なプロセスがそれぞれ 1 つ
ずつでも発生した
・Linux と Solaris や BSD を比べた
・少なくとも直接の原因はスケジューリングにあった
ってことから導けるんだけど、面倒だからこれ以上の説明は省略。
これだけ書いとけば、あとは自分で考えれば分かる筈だからね。
0178login:Penguin
01/11/14 00:47ID:jil2no7jもうソース公開おわっちゃったみたいなので。
UNIX板だと煽られそうだからここの有志に期待。
0179login:Penguin
01/11/14 01:02ID:cZfNRmC/0180login:Penguin
01/11/14 01:06ID:jil2no7j0181login:Penguin
01/11/14 01:45ID:BJD7Ro88> その通り。UNIX のスケジューラは、どれも基本的には、こうなっているよ。
> Linux だってそう。嘘だと思ったらスケジューラのソースを読んでくれ。
つーか良いスケジューラかどうかってハナシをしてるんだけど。これでいいの?
0182login:Penguin
01/11/14 02:18ID:IRaPmSaY良いからこうなってるんだ YO。
そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。
0183login:Penguin
01/11/14 03:05ID:BJD7Ro88> そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
> スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。
やはりCPUバウンドとI/Oバウンドなプロセスがバランスよく動くことが理想だ
と思うわけ。画像のレンダリングとかをやるならCPUバウンドの方を優先した
方がいい。SVR4なんかはI/Oでなくて「イベント」でプライオリティを増減し
ているらしいけどこういう戦略の方が今っぽくはないかというハナシ。
例えばLinuxのsched.cなんかを読むと以前実行したプロセスとメモリを共有し
ているプロセスの優先度を上げるようになっているけどこういうのは駄目なの?
あと前も言ったけどLinuxのスケジューラは毎秒キューを再計算してないので
(再計算するのは全ての実行可能プロセスがカンタム時間を使いつくした時だ
け)プロセスが多くなると設定しなおす頻度が下がるからレイテンシが下がる
んだろうと思ったんだけど。こういうのも毎秒計算するよりはアリだと思う。
まぁ問題と言えば問題なんだけどそれはスケジューラのクセであって信用に値
するかしないかという問題ではないと思ってるんだけどどう?
0184login:Penguin
01/11/14 08:20ID:BJD7Ro88>>177
> その原因として Linux に sleep priority がない (他の UNIX には、全て
> ある) ことを疑っているんだけど、
他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
> あと、今回の件は wake one とか zero copy とか bounce buffer なしとか
> は、たぶん関係ないよ。どうしてそう想像できるかは、
俺も関係ないと思う。つーわけで出勤だよヽ( ´ー`)丿続きはまた今夜。
0185login:Penguin
01/11/14 19:55ID:IRaPmSaY> と思うわけ。
I/O バウンドなプロセスを優先して動かすと、バランスよく動くようになるん
だよ。I/O バウンドなプログラムは、名前の定義からして CPU はそんなに使
わない、CPU を掴んでもすぐに手放すんだから、優先的に CPU を回してやっ
ても全く何の問題ないんだよ。
> 画像のレンダリングとかをやるならCPUバウンドの方を優先した方がいい。
違うよ。CPU intensive なプロセスを優先すると、正帰還が起きて CPU を消
費しないプロセスには決して CPU が割り当てられないという致命的な状況が
発生するでしょ。対話的なプログラムなんかは、ほとんど入力待ちにいてCPU
を使わないから優先度が下がって、優先度の高い CPU intensive なプロセス
が終了するまで決してスケジュールされないことになる。つまり、ほとんどシ
ングルタスク OS 状態、しかも対話的なプロセスが常に一番後回しにされてし
まうという。そんな OS 決して誰も使わないよ。
もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
> 他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
> 違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
これも違うなあ。I/O intensive なプロセスが優先されるのは、基本的にはそ
ういうプロセスが CPU を使わない (Linux の実装の言葉で言うと、
p->counterの値が大きい) からだよ。これは、Linux 以外の UNIX でも変わら
ない。Linux の異なる点は、他の UNIX が持っているもう一つの仕組み (スリー
プ優先度) を持ってないことであって、Linux 独自の特別な仕組みで I/O バ
ウンドなプログラムを優先させているわけじゃない。
あと、気になっているんだけど、Linux のスケジューラを、4.3BSD のスケジュー
ラに毛が生えたって表現するのは、かなり違うと思うな。ラウンドロビン以外
の優先度クラスがあるって意味では毛が生えているけど、逆に抜けている毛も
大きいと思うよ。ロードアベレージを勘案した decay なんてのは、すっぽり
抜け落ちてるでしょ。
0186login:Penguin
01/11/14 21:32ID:BJD7Ro88> を使わないから優先度が下がって、優先度の高い CPU intensive なプロセス
> が終了するまで決してスケジュールされないことになる。つまり、ほとんどシ
> ングルタスク OS 状態、しかも対話的なプロセスが常に一番後回しにされてし
> まうという。そんな OS 決して誰も使わないよ。
だからバランスよくと表現したんだけど。LinuxはPC用OSだよ?
DVDとか見るときとかどうするのさ。これってほとんどCPUバウンドなプロセスだよ。
ゲームとかもそうかもね。
こんなもんでいいやと手を打った結果だと思ってるんだけど。
なんでここまで粘着かというとオライリーの「LINUX カーネル」のP330に
「I/Oバウンド型プロセスを優先する仕組は万能ではない」
という節があるから。俺もこれを見て納得してたんだけどそうではないという。
それで混乱しているわけさ。
> もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
> が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
> なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
それって優先度が逆転してるじゃん(笑)
> あと、気になっているんだけど、Linux のスケジューラを、4.3BSD のスケジュー
> ラに毛が生えたって表現するのは、かなり違うと思うな。ラウンドロビン以外
> の優先度クラスがあるって意味では毛が生えているけど、逆に抜けている毛も
> 大きいと思うよ。ロードアベレージを勘案した decay なんてのは、すっぽり
> 抜け落ちてるでしょ。
こういう部分はLinuxの各所に見られるね。アルゴリズムをシンプルにするこ
とによって速く動かそうという感じ。VM とか。その代わり必要だと思ったら
ガンガン詰め込む。スケジューラの件も kernel-ml あたりでプリエンプティ
ブなスケジューラのパッチが流れてきてるんでそのうち入るのではないかな。
そういや君の案件ってリアルタイムプロセスにして動かすという手はなかったの?
0187login:Penguin
01/11/14 22:18ID:IRaPmSaY> DVDとか見るときとかどうするのさ。これってほとんどCPUバウンドなプロセスだよ。
それこそ、リアルタイム・スケジューリングを使うべきアプリケーション
じゃないの? 今はカーネルが、どう優先度を自動的に推測すべきかって
話をしているわけでしょ。リアルタイム・スケジューリングの場合、
ユーザーが指定した優先度が固定的に使われるんだから、そもそもそういう
問題は発生しないよ。
> なんでここまで粘着かというとオライリーの「LINUX カーネル」のP330に
> 「I/Oバウンド型プロセスを優先する仕組は万能ではない」
> という節があるから。俺もこれを見て納得してたんだけどそうではないという。
> それで混乱しているわけさ。
え? その記述は正しいよ。
俺は、ベストだとは言ったかもしれないけど、万能だなんて言ってないけどな。
カーネルの行う優先度の推測は、所詮推測に過ぎないんだから、向かない
応用はあるし、だからこそリアルタイム・スケジューリングとかが必要に
なるわけでしょ。
でも、TSS 用の優先度変動型スケジューリング・ポリシーとしては、I/Oバウ
ンド・プロセスを優先させる以外に良いやり方はないと思う。というか、CPU
バウンド型プロセスを優先させたら、取り返しのつかないことになる。
> > もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
> > が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
> > なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
>
> それって優先度が逆転してるじゃん(笑)
そう。君の主張していた、TSS スケジューリングにおいて CPU バウンド型
プロセスを優先させるっていう方針は、つまるところ、そういう意味なわけ。
やっと分かったかな。
> こういう部分はLinuxの各所に見られるね。アルゴリズムをシンプルにするこ
> とによって速く動かそうという感じ。VM とか。その代わり必要だと思ったら
> ガンガン詰め込む。
この、必要だと思ったらってところの判断基準に納得いかない点があるんだよなあ。
今回の応用の場合は作り込みで問題を回避できたけど、一般論としては回避で
きないこともあると思うんだが。
> スケジューラの件も kernel-ml あたりでプリエンプティブなスケジューラ
> のパッチが流れてきてるんでそのうち入るのではないかな。
プリエンプティブ化と この件は、関係ないのでは?
> そういや君の案件ってリアルタイムプロセスにして動かすという手はなかったの?
リアルタイム・プロセスにするにはルート権限いるでしょ。
この特定の問題のためだけに setuid root にするよりは、sched_yield() で
スケジューラの変な挙動を回避する方が、マシな解決策だと判断したわけ。
0188login:Penguin
01/11/14 22:43ID:BJD7Ro88> それこそ、リアルタイム・スケジューリングを使うべきアプリケーション
> じゃないの?
Unix的にはそうかも知れない。しかしLinuxはそういうプロセスにもCPUを割り振る
ようなスケジューラに*結果的*になっている。だからこの辺でいいんじゃないか
と手を打ったように見えるわけさ。それをクセと書いたわけ。
> この、必要だと思ったらってところの判断基準に納得いかない点があるんだよなあ。
> 今回の応用の場合は作り込みで問題を回避できたけど、一般論としては回避で
> きないこともあると思うんだが。
必要だと思ったらというより必要だと思ってパッチを出せる人がいたらってことかな。
却下されることはあまりないよね。
> > スケジューラの件も kernel-ml あたりでプリエンプティブなスケジューラ
> > のパッチが流れてきてるんでそのうち入るのではないかな。
>
> プリエンプティブ化と この件は、関係ないのでは?
あ。ごめん。>>154 の件。
0189login:Penguin
01/11/14 23:16ID:IRaPmSaY> 結果的*になっている。だからこの辺でいいんじゃないかと手を打ったよう
> に見えるわけさ。
これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
知恵が使われてないのをみると、結構ガックリくるのね。
まあ、無視しても何の問題も出ないのなら、そういうのもありなわけだけど、
現実に、こっちとしては手間がかかってるわけだし。
> 却下されることはあまりないよね。
たとえば crashdump と kernel debugger が標準カーネルにいまだに入ってな
いのは、納得いってない。そりゃ Linus が必要としてないのは分かるが、
顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ。
0190login:Penguin
01/11/15 01:29ID:L5cES50v>顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ
そりは君のお仕事では?
0191login:Penguin
01/11/15 02:42ID:mJoL8gKI> これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
> UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
> 違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
> 知恵が使われてないのをみると、結構ガックリくるのね。
シンプルで高速にってのがLinuxのモットーだしね。VM論争だってRikのロバスト
なVMよりAndreaの高速なVMの方が採用されてしまった。まぁそれもアリだとう思う。
既存のUnix的なものを求めるのならLinuxは向かないのかも知れない。
0192login:Penguin
01/11/20 10:07ID:VDFNCHJfLinuxのソースコードの中で読むと勉強になるファイルを紹介してください。
個人的にはlist.h、ghash.hが大変為になりました。
0193login:Penguin
01/12/07 04:50ID:pUngVfZJスケジューラのどこをどう換えればよくなるの?
0194生徒A
01/12/07 12:06ID:Gi93BTz7>193 リアルタイム化ってことでいいんじゃない? 具体的には,
カーネルプリエンティブにして優先度付きスケジューラ(Linuxで
言う優先度とはちょっと違う)を搭載すればマルチメディア対応で
いいのかな.
優先度継承機能とかもいるね.
0195縞栗鼠(シマリス)の親方
01/12/07 12:19ID:ohUthW+y汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。
中央高等学院
http://www.chuo-school.ac/
http://chs-f.com/index.html 中央高等学院福岡校
0196login:Penguin
01/12/11 19:44ID:PbCyuzo0割り込み処理に優先度をつけるのも必要でしょ。
割り込み処理を、優先度付きのスレッド化するってのでもいいけど。
0197login:Penguin
01/12/12 20:53ID:VRHOlTvG買った age 。
0198login:Penguin
01/12/12 21:32ID:6ixMAsTNずいぶん前に買ったけど、まだ読んでないや。
細かいけど詳細ではなく詳解です。
#それじゃあLinuxJapan 10月号と同じ間違いだよ。(w
0200login:Penguin
01/12/13 04:48ID:GDrY1kNCこれとソースコードをつき合わせてるから、
年内かかりそうなかんじ。
がんばりましょう!
0201login:Penguin
01/12/13 07:24ID:nHHZmC7zあんなのいつ読み終わるやら…。
現在、1章読み終わる!
残りページ見てまたウトゥ。
ま、ゆっくりと行きますか。
がんばりましょう。
0202login:Penguin
01/12/13 07:26ID:nHHZmC7z『速読ってどう?』
http://ebi.2ch.net/test/read.cgi/rikei/969547091/l50
0203login:Penguin
01/12/13 07:31ID:GDrY1kNCもうあっという間に理解してたりする。
あういった技能は本を速読するのとは
また別の能力の気がするよ。
0204login:Penguin
01/12/13 17:28ID:3ZNfl0lP2.4もあまり変わりないの?
0205login:Penguin
01/12/13 19:35ID:P41LkMkd執筆の時点の安定版カーネルが、 2.2 だったらしい。
でも、初版が 2001 年 7 月だから、本としては
カナーリ新しいんじゃなかろうか。
漏れなんかには違い分からないだろうし…。
0206login:Penguin
01/12/13 20:20ID:jXJ+WFgy詳細な部分が違うだろうから本の趣旨からすると…
0207login:Penguin
01/12/13 20:35ID:GDrY1kNC一応各章の最後に2.4.*のことについて書かれてる。
ほんの少しだけど。
>>205
原書は2001/1って書いてある。ってことは発売されたのは去年かな?
>>206
もとのタイトルには詳解なんて言葉はないです。日本のオライソーが
勝手につけた言葉です。
この本の目的はカーネルのソースを読めるようにすること
って書いてあるから、本だけ見て細部を隈なく理解できるように
なると期待するほうが間違ってると思う。
0208login:Penguin
01/12/14 09:22ID:pLOVOTkt特別にシステムに関数とかを用意したりするんでしょうか?
0209login:Penguin
01/12/24 12:51ID:UsKcZqV70210login:Penguin
01/12/29 11:32ID:QLo22gE5/dev以下のノードを介する方法しかないのでしょうか?
よろしくお願いします。
0211login:Penguin
01/12/29 12:03ID:mYAbtgDl/dev 以下以外にもデバイスファイルは作れます。
man mknod
0212login:Penguin
01/12/29 12:19ID:4LQmsDwQフォーマットとかしようと思ってmke2fsとかやったら
自分のところのマシンをフォーマットしちゃったわけよ。
デバイスファイルって結局そこにあるメジャー番号とかマイナー番号
とかしか参考にしないわけで、誰のものかなんて考慮してないよね。
(かならず自分のデバイスだと思ってる)
たしかネットワーク経由で他のマシンのデバイスを直接操作する
機能というか仕組みがあったと思うんだけど、なんて名前だっけ?
0213login:Penguin
01/12/30 00:17ID:5UM9dPtt最近はデバイスファイルでは扱いにくいハードが増えたから
(マルチメディア系・プラグアンドプレイ)
なんで、デバイスファイルじゃなくて、
そのハードを扱うシステムコール作って、
システムコールであつかうのもいいんじゃないかな?
0214login:Penguin
01/12/30 00:30ID:vlB/mJ24出会いを求める男性へ!!
http://chevy.sites.cc/
0215login:Penguin
01/12/30 00:55ID:L5DsFMps>そのハードを扱うシステムコール作って、
>システムコールであつかうのもいいんじゃないかな?
これはカーネルに手をつけるということですよね。
そこまでしなければデバイスファイルを経由しないといけないという事でよろしいのでしょうか?
0216login:Penguin
01/12/30 02:50ID:FBPpTPsC>他のマシンの/devをNFSマウントして、そこの/dev/hdcとかを直接
>フォーマットとかしようと思ってmke2fsとかやったら
>自分のところのマシンをフォーマットしちゃったわけよ。
最初UNIX Kernelをわかってないなぁって思ったんだけど、でも、確かにネットワーク越しに相手のデバイスファイルを触るという発想はちょっと面白いかも。
Kernel側がどう一貫性を維持しようとするかが問題だけど。
0217212
01/12/30 03:07ID:UzGpkVqiネットワークブロックデバイス というのがあるみたいッスね。
(ようやく名前がわかったですよ)
カーネル2.2にもあるみたいなんだけど試すのおっかないなぁ
0218login:Penguin
02/01/01 12:59ID:fIVu4F/oまた交換するには具体的にどのような過程を通しているのでしょうか?
お願いします。
0219login:Penguin
02/01/01 20:33ID:BcEtv31+ハードウェアによる割込み、ソフトウェア割込み (システムコールはこれ)、
モード切替え用の命令、メモリ保護違反、不正な命令の実行、等いろいろ。
まずは JF の
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html
読んで勉強しな。
0220login:Penguin
02/01/01 20:57ID:fIVu4F/o0221login:Penguin
02/01/05 15:23ID:7OyjHkMf以下の本は買う価値あるでしょうか?
実習Linuxカーネル 理論と実習カーネルを効率的に理解するための実習書
出版社名 : ピアソン・エデュケーション
0222login:Penguin
02/01/06 03:54ID:Dq18r+Giカキコしてください。
とりあえず、global
0223login:Penguin
02/01/06 03:56ID:I+MzFQ0/grep
0224login:Penguin
02/01/06 04:06ID:Yl828KDRecho, printf
0225login:Penguin
02/01/06 04:18ID:OZczuKpf0226login:Penguin
02/01/06 04:51ID:QV/kUS0W↑こんな感じでLinuxカーネルを激しいインパクトと共に
表示してくれるツールないのか?
0227TOM
02/01/06 05:29ID:VAV/Hk1Rマスクを設定したいのですが、どのようにやればいいのでしょうか?
0228TOM
02/01/06 05:31ID:VAV/Hk1R0229global
02/01/06 07:29ID:6O0PvUPfgtags
htags
って何時間ぐらいかかりますか?
5時間動かしてて、まだ、終らないんですけど。
0230login:Penguin
02/01/07 02:12ID:9E3jZ+kYとりあえず、
htags -aF
-a:英字インデックス
-F:フレーム対応
linux2.4.17、Pen�V733で4時間ぐらいだった気がする。
0231229
02/01/07 20:12ID:hX8x2Oivlinux2.4.17をPentium3 500でやってます。
よかったら
GPATH
GRTAGS
GSYMS
GTAGS
のサイズ教えてください。
僕のは今のところ
2 MB
92 MB
13 MB
19 MB
で、GSYMSがちょっとづつ増えています。
sortが遅いのかな?(2.0.16)
0232login:Penguin
02/01/09 14:16ID:YpXVFRRT0233login:Penguin
02/01/11 10:22ID:aBKMHgnQやっぱり片っ端からチェックしてるだけなんでしょうか?
0234login:Penguin
02/01/11 22:24ID:VauQghNoみんな買って読んでる?
0235login:Penguin
02/01/11 22:34ID:OhKVZ3uP0236login:Penguin
02/01/11 22:43ID:J9+ERyxt個々のドライバの初期化処理で、ありそうなアドレスを片っ端からチェックしてる。
0237デフォルトの名無しさん
02/01/12 21:54ID:Osm3xSog0238SsS
02/01/13 16:44ID:1HgPfsgvデバックにprintfk を使うってほんと???
0239login:Penguin
02/01/13 17:17ID:ften7Xofほんとう
0240セマフォ
02/01/13 22:51ID:byNjLBNZ0241デビットカトラー
02/01/13 23:12ID:byNjLBNZといいますが、具体的にどのファイルで処理しているのでしょうか?
0242login:Penguin
02/01/13 23:30ID:QSg7wIlWlinux/kernel/sched.o だろ(藁
ソースコードはlinux/kernel/sched.c だな
0243super
02/01/14 00:12ID:d6cd8xHDopen やclose などに対応したデバイス独自の関数を
作成しそれらへの関数ポインタをひとまとめにしたテーブルを
作成するということ
といいますが、
もうすこし、わかりやすく説明してください
0244login:Penguin
02/01/14 00:34ID:/7fIIVhtこれは「比較を行う関数」というものをqsort本体からは
抽象化して、実装は別にしているわけだ。
同様に、あるキャラクタディバイスに対してread()やwrite()
を行った際の動作を、カーネルが扱う際に抽象化する為に
関数へのポインタを渡すことで実現している。
0245login:Penguin
02/01/14 01:00ID:HmpJulBQsemaphoeで検索すれば、いくらでもヒットするんでは?
もしかして、test and set命令とか、そのレベルから
教えてという話?
0246login:Penguin
02/01/14 01:24ID:qUNfVGwW■ このスレッドは過去ログ倉庫に格納されています