トップページ⇒linux
986コメント359KB

☆Linux カーネルの仕組みを勉強するスレ☆

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/10/02 17:44ID:38KkZsUQ
メモリ管理、プロセス、ファイルシステム色々ありますが
カーネル全般について語り合うスレッドです。
0072login:Penguin 01/10/15 07:52ID:fLIHewuG
>>71
Solarisんとこ、machやl4の方がいいと思うけど。
0073login:Penguin01/10/15 07:55ID:fLIHewuG
UNIXの構造を勉強したい人にはthreadは関係ないんじゃねーの?
0074login:Penguin01/10/15 09:47ID:1RSiSLer
Jolietの2byte文字を読めるように改良しようと思って、
ソースを眺めているがサパーリわからん。

やはりVC++で500行程度のコードを書いたことが有る。
と言うレベルの俺には難しすぎる(わらぃ
00757401/10/15 10:17ID:1RSiSLer
って、必死にソース追ってたらちゃんと多byte文字対応してやがる。
ああ、今まで必死にソースを追った作業は何だったんだろう?
鬱出汁脳
0076login:Penguin01/10/16 00:45ID:B9OVQJ4u
みんなFDのブートセクタにHelloWorldっぽいの書いて実行してみなよ、
マジ感動するよ、
(カーネルの仕組みの前にPCのブートの仕組みを学ぶのもいいかも)
http://isweb32.infoseek.co.jp/computer/nobumasa/hardware/boot_hdd/boot/boot.html
参照
0077login:Penguin01/10/16 00:59ID:0iRzhq4a
>>76
いいドキュメントだね。
0078login:Penguin01/10/16 06:05ID:+7CBRx1X
>>73
Solaris とか NetBSD だと scheduler activation というネタもあるし、
FreeBSD にも KSE っていうネタがあって、おおよそ最近のスレッド技術は
深くカーネルと関係してるから、一概にそうともいえないよ。
ここまでくると上級レベルだから、構造の勉強というようなレベルは超えてるかもしれないけど。
0079login:Penguin01/10/16 10:28ID:W7jl/1HX
このスレいい!! あげ
0080login:Penguin01/10/16 21:00ID:+8viyP9S
スレッドとスケジューリングがごっちゃになってるのか?
0081login:Penguin01/10/16 22:02ID:tFjq3kLf
いきなりカーネルのソースコードからはじめるのは、
ちょっと厳しいんじゃないかな。
大まかにOSの構造を説明してある良書ってないん
ですかね。機能を知ってからソースを見ると、関数
名や変数名がヒントになるから、ぐっと理解が早い
と思うんですけど。
それとも、「これから勉強したい」人も、そこまで
は出来ているという前提?
0082login:Penguin01/10/16 23:41ID:Lbh3v4LX
ケンタッキーと関係あるの?
0083login:Penguin01/10/17 00:03ID:p7GUM0P4
>>82
大あり
0084login:Penguin01/10/17 00:11ID:58ZfHvGc
>>81
2種やら1種のテキストに書いてあるレベルの知識と、ソース読むことの
間を埋めてくれるのって、どんな知識でしょう?

個人的にはCの知識かな、と思うけど、ケーススタディとしてカーネルを
使うのは厳しそうだと気づいた今日この頃です。
0085login:Penguin01/10/17 00:15ID:6udvZ9Dg
>>84
>間を埋めてくれるのって、どんな知識でしょう?
努力と根性と経験です。
0086login:Penguin01/10/17 00:36ID:kW1Ppu3x
人が作ったものなんだから理解できないはずはないという信念
0087login:Penguin01/10/17 01:12ID:0KcBObcy
>>81
おらいりー「詳解 linuxカーネル」
0088login:Penguin01/10/17 01:17ID:BOPoQ/5Y
>>87
おなじおらいりーでも、でばどら本から入っていくってのも
手だな。ちょっと古いけど。

売りポイントとしては、「実際に自分で作ったものを動かせる。
動かすことで理解が深まる」ってとこかな。
0089login:Penguin01/10/17 01:22ID:kW1Ppu3x
>>88 原書は新しいのが出てるよ
http://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/english-books/0596000081
0090login:Penguin01/10/17 01:27ID:6udvZ9Dg
>>89
気になるのは、元にしてるのは2.2系なのか2.4系なのか、かな。
0091login:Penguin01/10/17 06:38ID:8SzjHmJI
>>81
その為の悪魔本とかなんじゃねーの?

あと *BSD とかのソースが綺麗で読みやすいといか言ってのは
実際に読んだことのない厨だな。

まぁ綺麗なのは事実だが FreeBSD の VM は悪魔のように(苦笑)複雑で
とりあえず論文読まないと通読は不可。

http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/vm-design/index.html
http://www.ccrc.wustl.edu/pub/chuck/tech/uvm/

Linux のカーネルはすげー実装がシンプルだから逆に読みやすいと思うが。

>>71
>MINIX -> 386BSD -> NetBSD -> FreeBSD -> Linux -> Solaris

386BSD って 4.3BSD Tahoe/Reno だろ? イマドキどーすんだ,あんなの読んで。
4.4BSD lite が入手できるんだからそっち読んどくが吉。
0092♯641101/10/17 11:04ID:Nt5BAsRN
>>91
悪魔本でも、和訳の
「4.3BSDの設計と実装」
は、初心者には(もちろんエキスパートにも)
オススメじゃないよね?
…って、まだ版を重ねてんだろか?

原書嫁。

Linuxのカーネルがある意味読みやすいというのは
同意。386の教科書が傍らにあるとベターかな。
ただ、ネットワーク周りは、読んで脱力したこともしばしば。
0093login:Penguin01/10/18 02:31ID:EfR4Vz7c
シンプルで読みやすいって観点だったら、MINIX 読むべきだけどな…

たしかに、4.4BSD みたいに抽象度が高いとまっすぐ読めなくなるから総体的な知識が必要になるし、
Linux はベタだから、前提知識なしにパッと見て quick hack する場合は楽だけど、
Linux は全体的にソースが汚いし、ベタなんであまり勉強にはなりません。
0094login:Penguin01/10/18 02:34ID:EfR4Vz7c
>>91
今なら、Linux VM でも FreeBSD の Mach VM でもなくて、
NetBSD の uvm を読んだ方がいい。
0095login:Penguin01/10/18 05:52ID:u3DpsjUw
たしかに UVM は面白いが何故それが面白いのかがわからなければ意味がない
お前は本当に UVM を読みたいのかと問いたい。問い詰めたい。小1時間問い詰
めたい。お前、UVM って言いたいだけちゃうんかと。

まあお前らド素人は、Linux VM でも読んでなさいってこった。
0096login:Penguin01/10/19 02:01ID:TH1cXybv
agetemiyou
0097MINIXカーネル解読中01/10/24 16:18ID:XFF6eHt3
OSってタスク使ったゲームに微妙に似てる気がする・・・
0098生徒A01/10/24 16:49ID:Sk/5JNlU
>97 そうだよ.だから色々と共通の概念が使える(もちろん
全部じゃないが).
0099login:Penguin01/10/24 19:35ID:4dNCtF18
>>71
MINIXと386BSDのソースのありか(URI)きぼーん
0100login:Penguin01/10/24 19:39ID:UYXjUcuc
>>99
ftpサーチで一発だよ、厨房君?
0101login:Penguin01/10/24 20:00ID:ZaQ1mC9D
>>100
ftpサーチって何?
0102login:Penguin01/10/24 20:03ID:XZp0N0cm
>>101
Googleで一発だよ
0103gea01/10/26 01:49ID:M11l2acb
age
0104login:Penguin01/10/26 03:17ID:/MJaN4Ug
UVMってdelphiライクな言語ダターケ?
0105login:Penguin01/10/26 04:01ID:FmgZ80us
>>104
ネタなんだろうけどモトネタがわからないのでマジレス

http://www.ccrc.wustl.edu/pub/chuck/tech/uvm/

これまでの COW を更に進めて匿名ページの COW もやるようにした VM ね。
0106完全気密性型個室チャット設置01/10/26 09:00ID:JKN2MAJ4
秘話機能付き高機能チャットルームなどを
18個設置。共有チャットも10個設置。
気軽に参加してくださいね。

みなさんのお越しをお待ちして
おります。右フレームの中ほどに
あります。よろしくね。

http://home9.highway.ne.jp/cym10262/
0107某スレの1201/10/27 11:12ID:eYNUQGN3
沈まないようにあげ。
0108房スレの1301/10/27 11:32ID:YfJuIONB
ageた先がコピペ広告だったってのが涙をさそうよ...
0109login:Penguin01/10/27 12:01ID:wm8gbMCY
もしかして完全気密性型個室チャットでLinuxカーネルの仕組みを勉強しろと言いたいのか?
0110login:Penguin01/10/27 15:21ID:5IDha0Op
in,outでハード制御してるコードがさっぱり理解できない・・・。
0111login:Penguin01/10/27 15:28ID:lXVHxyhY
>>109
気密型ハカーとお勉強イイ!
0112カーネル初心者01/10/27 16:27ID:Hh35ZjqY
カーネルがわかっちゃうと自分でディストリビューションとか
つくれますか?
0113login:Penguin01/10/28 02:14ID:ntdohsRl
>>112
カーネルはそのままでも、自分でディストリビューション作れますよ?

>>110
具体的に、どのあたり?
011411001/10/28 02:37ID:v7FYjkut
Linux 0.0.1カーネルだけど hd.c とか。
HDDコントローラ?の仕様とか見ながら書いたのかな
仕様って手に入るのかな・・。
0115login:Penguin01/10/28 02:51ID:c0cZVdxb
>>114
東芝の開発者向けサイト
http://linux.toshiba-dme.co.jp/linux/jpn/develop.php3
0116login:Penguin01/10/28 02:53ID:cJ0fmml8
>>114
0.0.1って....
あまり古すぎじゃないか?移植どころか、「とりあえず動かす」
ころのだろうから、ちょっと読むにも大変なんでわ?
コントローラの仕様ってのは、どっかで手にはいりそうだね。
とりあえずは、

CQ出版社のインターフェース増刊
TECH I vol.10 ATA(IDE)/ATAPIの徹底研究

でどーよ?
011711001/10/28 04:40ID:v7FYjkut
114さん115さん情報どうもです。
0.0.1のカーネルって小さいから読みやすいかな、
と思ったけどMINIXのほうを読むことにしよっと・・。

インターフェースの増刊かなり最新ですね・・すぐ手に入りそうだ。
っていうかインターフェースって雑誌、今はじめて知りました・・
バックナンバーの目次とか眺めたけどすごく面白そう、何で今まで知らなかったんだろう・・
116さんに感謝・・。
011811701/10/28 04:41ID:v7FYjkut
↑の1行目 115さん116さん だった(恥
0119login:Penguin 01/11/05 04:47ID:zk7Lax0s
こんなのどうよ。呼んだ人いる?
http://www.amazon.co.jp/exec/obidos/ASIN/0471408824/
0120教えて!!!01/11/06 23:49ID:seaNFRBf
PHP4のインストールをしようとしているんですが、
rpmのバージョンアップをしろといわれてしかなたく
rpmのバージョンアップをしようとしています。
環境はTLJ6.0で、Pentium 166MHzです。

現在は3.0.3なんですが、これを3.0.4以上にしなければなりません。
でも

#rpm --rebuild rpm-3.0.6-15.src.rpm
の実行中に

/usr/include/bits/string2.h:XXX warning : pointer of type 'void *' used in arithmetic

といった種類のメッセージがダぁーっと出てきます。それでも処理はずっと続いて3分くらいしたらとまるんですが、非常に不安です。このとき実は渡さなければならなかった引数とかありますか?

わかんないんでしょうがなくある方に教えていただいて

rpm -Uvh rpm-3.0.6-15.i386.rpm

を実行しました。
そしたらこんな表示が・・・・

libpopt.so.0 is needed by rpm-3.0.6-15

どないなってまんねん???

i?86のところの*は環境によって違うということですが、それは具体的にどういう意味ですか?

ほんとにタコタコで申し訳ありません。どうかこの哀れなタコを助けてください。*_*

それからも一つ質問!
どうしてこんなにリナックスは難しいんですか?
0121login:Penguin01/11/07 01:19ID:5qQLJtTD
>>698
マルチうざい
0122まちごうた01/11/07 01:20ID:5qQLJtTD
>>120
マルチうざい
0123login:Penguin01/11/07 10:07ID:D4X9uT1H
デバイスドライバをgdbで動かしたり止めたりしたいのだけど・・・
0124login:Penguin01/11/07 11:58ID:D4X9uT1H
http://www.zdnet.co.jp/enterprise/0111/06/01110601.html
オープンソースのOSであるLinuxの元々の開発者,リーナス・
トーバルス氏の右腕であるアラン・コックス氏は,Linuxカーネル2.4
のメンテナンスを担当しないことを明らかにした。トーバルス氏は,
開発ツリー2.5に集中するため,今後数週間以内にLinuxカーネル2.4
をコックス氏に任せるとしていた。

有識者のコメントを求む
0125login:Penguin01/11/07 12:35ID:HqCHYej/
>>124
124は記事内容を理解していない。よって終了。
0126login:Penguin01/11/07 13:03ID:D4X9uT1H
>>125
解説してください。お願いします。理解したいんです。
0127login:Penguin01/11/07 13:10ID:BmKSSlYi
>安定版カーネルの管理
>は,これまでもグループで行ってきたことで
>あり,これからもそれは変わらない
0128login:Penguin01/11/07 15:29ID:FmMqLr+t
右腕というより両腕? > AC
0129login:Penguin01/11/07 18:21ID:EVaWvNem
linusが死んでも大した影響なさげ。
acが逝くとかなりピンチ。
0130login:Penguin01/11/07 23:16ID:9nIeZqmz
>>124
-ac カーネルの Rik's VM とは?
http://clotho.ku3g.org/diary/?20011014#200110142
0131login:Penguin01/11/08 00:39ID:6uTuNsVr
-acにはお世話になりまくりなのでちと残念。
0132login:Penguin01/11/08 04:38ID:OuhnMvOV
OSよむなら、最初はl4-kaとかおすすめ。
簡単だし、どうせマイクロカーネルだからっていう割り切りで、仮想化しまくってないのが、見通しの良さにつながってるように思う。
そのぶん癖はあるけど(IPCとか)、とりあえずどんなことやる必要があるかがわかるとおもう。

でも、モノリシックカーネルでの優先度制御とか、複雑なvmまわりとか勉強したいなら、NetBSDかなぁ。
わりと読みやすいけど、完全に理解するはなかなか・・・。
0133login:Penguin01/11/10 00:06ID:GrwBKvex
ようっし、このスレもりあがってなから、カーネル2。5を語るスレにしよう。

2.5の機能のメインっていったら、INPUTデバイス!
こいつが入力関係を一手に引き受けてくれるもんで、USBやらjoystickやらkybodeやらマウスやらが
シンプルになって、手軽にrawレベルで入力デバイスにアクセスできるようになるんだよう〜

そこの厨房な君も、他になにが追加されるか予想してみよう。
0134login:Penguin01/11/10 00:10ID:I2bxXvg2
>>133
イタい、イタすぎる....
0135login:Penguin01/11/10 00:10ID:YzLCB467
>>133
/dev/input
とは違うのか?
013613301/11/10 00:20ID:GrwBKvex
な、なんで、/dev/inputがついてんだよ〜、おいらのついてないんだけど。
013713301/11/10 00:25ID:GrwBKvex
>>134
モタイブリッコ!発見!ハゲじゃなくって吐け、何をしってるんだ。 ゴラァ!
0138login:Penguin01/11/10 01:31ID:JYB21yE5
・誤字脱字
・全角アルファベット
・そもそも提案が意味不明
これだけ揃ってれば痛いだろ(w

個人的にはIDE CD-Rの扱いが楽になって欲しい。
ide-scsi使わないといけないのはめんどくさい。
0139login:Penguin01/11/10 01:48ID:P+u86UuI
実装されて欲しいのは。
・スケジューラのマルチメディア対応とマルチキュー化
・暗号化ファイルシステム
・n:mカーネルスレッド(無理か)
0140login:Penguin01/11/10 02:11ID:H1+mtcC9
>>133
呼び出すなよ。
厨房な俺の予想に意味があるのか?

http://lwn.net/2001/features/KernelSummit/
でも読めよ。
0141login:Penguin01/11/11 01:23ID:gpvCOaba
/dev/input ってのは、今は、USBにしか使われてないけど、
これをPS/2とかの、USB以外のマウスとかキーボードに対応させて、
inputでイベント処理をさせるってことですなぁ ちがうか?汗

/dev/eventXで、流れて来たイベントを拾って、処理できるようになるから、
フレームバッファ関連のアプリが充実するのに期待しちゃうYOU。
0142login:Penguin01/11/11 01:35ID:H6R3aNYW
>>139
IBM が gnu のをベースにやってる n:m スレッドは
ユーザランドのスレッドだっけ?
0143login:Penguin01/11/11 01:49ID:gBx3tRWz
>/dev/input ってのは、今は、USBにしか使われてないけど、
カーネル2.4になったら、Sound Blasterのゲームポートに差したアナログジョイスティック
の/dev/js0も/dev/input/js0へのシンボリックリンクになてたよ。
0144login:Penguin01/11/11 12:02ID:Vp1d/juk
>>142

NGPTだよね?
http://oss.software.ibm.com/developerworks/opensource/pthreads/

元の Pth は、ユーザレベルのスレッド実装だけど、
ちゃんとM:Nになってるみたいだけど。
まだ、SMPではちゃんと動いてないみたいですね。
次のバージョンで対応するようですが。
0145login:Penguin01/11/11 12:59ID:gpvCOaba
>>143
そか、ジョイステックも対応してたのか〜、
今のシステムってキーボードからの入力を拾うのってかなりメンドウでない?
たとえば、svgalibでもXでも、一度RAWモードで、キー入力を握られると、
他はどうにもできないのさ、それでXがエラーでおちたりしたら、
PCの後ろにシリアルケーブルつないでどうにかするしかないし。
それが改善されるんだよ〜っていいたかったのだ。

今は、まだ、 keybdev.cからhandle_scancodeっていう、
char/keyboard.cの関数を呼出ちゃってるウンコ仕様なんだけど、
この変がシンプルになるんだよ〜

シッタカブリしてしまったかのぉ、なははは。
ネタはこの辺↓
http://cvs.sf.net/cgi-bin/viewcvs.cgi/linuxconsole/ruby/linux/
0146login:Penguin01/11/11 12:59ID:ZFz8sYwI
>n:mカーネルスレッド(無理か)

本家MLで議論されてるのを何回か見たが、
永久に実装される日はこなさそうだ。

確かに実装されればパフォーマンスは向上するけど、
別に今のままでも充分パフォーマンスいいから必要ないって結論らしい。

つーか、ボランティアで開発するには手間と暇が・・・
0147login:Penguin01/11/11 18:30ID:ZDELobu/
ごめん。すごく基本的なことがわからない。
n:mカーネルスレッドってなに?
0148login:Penguin01/11/12 12:37ID:IjOleHL1
>>147

実際に平行して走るスレッド数と、スレッド数が違う。
Linuxの今のカーネルスレッドの場合は、両方同じ。
0149login:Penguin01/11/12 17:24ID:IV1WKQEx
> つーか、ボランティアで開発するには手間と暇が・・・

んなことないっしょ。

Linux よりもよっぽど人手のなさそうな FreeBSD (KSE) とか、さらに
人手のなさそうな NetBSD (nathanw_sa) でも開発が進んでいるんだし。
問題は人手というよりも、Linux カーネル開発メンバーの石頭 (N:M スレッド
が大嫌いな奴が結構多い) じゃないの?
015014701/11/12 18:57ID:JAFYYv/Y
>>148
> 実際に平行して走るスレッド数と、スレッド数が違う。
> Linuxの今のカーネルスレッドの場合は、両方同じ。
いやそれは n:m のスレッドだよね。
カーネルスレッドは常に 1:1 では?
もしかしてスケジューラアクティベーションとかの話題?
0151login:Penguin01/11/12 19:14ID:JAFYYv/Y
スレッドの実装には3つあって
one-to-many ユーザー空間スレッド
one-to-one カーネルスレッド
meny-to-meny 上記のハイブリッド
だと思ってたんだけど俺の認識は間違ってるか?
Solalis なんかは meny-to-meny だよな。
その為にスケジューラアクティベーションのような複雑な仕組を持ち込んでる。
Linux 的にはそんな複雑なものを持ち込んで性能を出せるかどうか…
ってのがまずあるんだろう。SMP とのバランスも取らないといけないしな。
0152login:Penguin01/11/12 19:39ID:IV1WKQEx
> スケジューラアクティベーションのような複雑な仕組を持ち込んでる。

many-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:Penguin01/11/12 19:57ID:JAFYYv/Y
>>152
> ここ意味わかんないなあ。バランスって何?
> SMP と N:M スレッドって、トレードオフの関係にはないと思う。

今のプロセスモデル(カーネルスレッド含む)で SMP をうまく使うようにデ
ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
くらいのハナシ。

> 蛇足:
> s/Solalis/Solaris/
> s/meny/many/g

スマソ(照
0154login:Penguin01/11/12 20:08ID:JAFYYv/Y
>>139
> 実装されて欲しいのは。
> ・スケジューラのマルチメディア対応とマルチキュー化
なんか具体性に欠けるけどプリエンプトなスケジューラは今実装中だぞ。
> ・暗号化ファイルシステム
loop.c をハクれ
0155login:Penguin01/11/12 20:08ID:IV1WKQEx
> 今のプロセスモデル(カーネルスレッド含む)で SMP をうまく使うようにデ
> ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
> くらいのハナシ。

そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
の一つなんだし。

あと、個人的に Linux のスケジューラはあんまり信用してないっす。
他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)
0156login:Penguin01/11/12 20:21ID:JAFYYv/Y
>>155
> そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
> リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
> 定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
> の一つなんだし。

あーそうだった。前言撤回。

> あと、個人的に Linux のスケジューラはあんまり信用してないっす。

4.3BSDのスケジューラに毛の生えたようなモノだからね。
さすがに毎秒キューを再計算したりはしないけど。

> 他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
> い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)

キューの再計算をなるべく遅延させているからその点で違いが出てくるのかな。
0157login:Penguin01/11/12 22:59ID:IV1WKQEx
> キューの再計算をなるべく遅延させているからその点で違いが出てくるのかな。

検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
priority 引数がないあたりにも問題があるのかもしれない。
(例えば *BSD 系だと sleep/tsleep に priority 引数があり、I/O 処理が
完了した直後は優先度が上がる)

もしそうだとすると、I/O 処理に関わる sleep_on 呼びだしを全て直さないと
解決できない、構造的問題ってことに…
0158login:Penguin01/11/13 04:18ID:Rt2iJ7Br
素朴な疑問なんですが、スケジューラアクティベーションじゃなくて、M:Nスレッドを実装するって、どーやるでしょうか・・・。

あと、Linux的なら、とりあえず実装してみて、性能でなかったらまた考えるでいいんじゃないんですかね。
よく考えて実装するのは、*BSDにまかせたらいいのでは(笑)
だれかやんないんだろうか。
0159login:Penguin01/11/13 16:25ID:Istj8zje
>>158
だから、IBMのがあるって。
あれじゃだめなの?
0160login:Penguin01/11/13 16:52ID:MqzmFHkN
おたすけマンっす、あなたのさがひものは、ここっすかぁ〜。
http://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.
0161login:Penguin01/11/13 17:50ID:lF+3mjBQ
>>159
う、失礼。上みてなかった・・・。

>>160
ありがとう。
0162login:Penguin01/11/13 20:00ID:/IBKTqGW
>>155
I/O Insentive ってどのレベルをいってるんだ?
もしかして tty すか?プ
0163login:Penguin01/11/13 20:09ID:36p1vksl
> I/O Insentive ってどのレベルをいってるんだ?

経験したのは、ネットワーク I/O。
なんか latency 的に性能悪いなあと思って調べたらそういうことだった。

> もしかして tty すか?プ

ん? その心は?
0164login:Penguin01/11/13 20:39ID:CaHKE6Ak
>>157
> 検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
> priority 引数がないあたりにも問題があるのかもしれない。

これはシステムコールの違いでしょう。
Linuxには他にいくつかシステムコールが追加されているよ。
0165login:Penguin01/11/13 20:42ID:36p1vksl
> これはシステムコールの違いでしょう。

ああ、理解されてない。;_;
いいけど。
0166login:Penguin01/11/13 20:53ID:CaHKE6Ak
>>165
> ああ、理解されてない。;_;

ん? よくわかんないんだけど。スリープ優先度がないってこと?
0167login:Penguin01/11/13 21:54ID:36p1vksl
> ん? よくわかんないんだけど。

そもそも sleep_on() ってシステムコールじゃないでしょ。

> スリープ優先度がないってこと?

そうっす。
スケジューラの方を直すのは別に難しくないんだけど、sleep_on() を呼び出
しているところを全部書き換えるのが果てしなく面倒そう。それとも比較的単
純な置き換えで済むからなんとかなるのかなあ。

ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
だったので、そっちで適度に sched_yield() することにして、問題を回避し
たっす。というわけで、自分で直そうというモチベーションは出ないのね。
0168login:Penguin01/11/13 22:28ID:CaHKE6Ak
>>163
> 経験したのは、ネットワーク I/O。
> なんか latency 的に性能悪いなあと思って調べたらそういうことだった。
I/O InsentiveってネットワークI/OやDiskI/Oにも高い優先度を割り振った方が
いいスケジューラなの? 俺はそう思わんけど。

>>167
> ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
> だったので、そっちで適度に sched_yield() することにして、問題を回避し
> たっす。というわけで、自分で直そうというモチベーションは出ないのね。
応答性が重要ならそもそもOSの選択に間違いがあったと思われ。
0169login:Penguin01/11/13 22:48ID:36p1vksl
> I/O InsentiveってネットワークI/OやDiskI/Oにも高い優先度を割り振った方が
> いいスケジューラなの? 俺はそう思わんけど。

うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。

> 応答性が重要ならそもそもOSの選択に間違いがあったと思われ。

それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
0170login:Penguin01/11/13 22:56ID:CaHKE6Ak
>>169
> うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。

ごめん。OS はほとんど自学なので基本的なことがわかってないかも知れない。
しかし多量のディスクI/Oや,遅いネットワークI/Oってのは短い応答時間が
必要だろうか? ってハナシ。

> それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
> 該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。
0171login:Penguin01/11/13 23:19ID:36p1vksl
I/O intensive なプロセスに優先的に CPU を与えることは、
システム全体の「スループット」(not only 応答性) も向上させるのよ。
これ常識。

まともなハードウェアなら I/O と計算処理は並列動作できるから (PC 用の
安物ハードウェアには、駄目なものも多いが)、こうした方がシステム全体の並
列性が上がるんよ。I/O intensive なプロセスに CPU が回ってこないと、
本来発行できる筈の I/O 要求が発行できないので、並列度が落ちるわけ。

> Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。

実はそのソフトウェアは、開発段階では Solaris と BSD でも動かしてたんだ
が (最終版は Linux のみ)、Solaris だけじゃなくて BSD でも問題なかったのね。
だから、これに関してはカーネルレベルでのプリエンプティブ性は必要ない。
Linux 版がなんか遅いなあと気づいたのは、比較対象があったせいなわけ。
■ このスレッドは過去ログ倉庫に格納されています