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

このエントリーをはてなブックマークに追加
1login:Penguin
メモリ管理、プロセス、ファイルシステム色々ありますが
カーネル全般について語り合うスレッドです。
2先生:01/10/02 17:57 ID:eJtCpXEo
知ったかぶるなよ
3login:Penguin:01/10/02 18:33 ID:E7mCRr2I
>>先生
メモリ管理について教えてください。
仮想メモリってなんですか?
もはやメモリをケチる必要がないので
仮想メモリシステムは過去の遺物なのでは?
4login:Penguin:01/10/02 18:37 ID:qNtnxrRQ
hayaku nihonngo ga tukaeru youni naritai
5生徒A:01/10/02 18:43 ID:ozLMsuOI
>>3
先生は逃げたみたいなので代わりに回答.

仮想メモリがないとメモリが分断されまくる.
あ,でもメモリ空間が64ビットならば不要?
いや,年単位で連続運用するならやっぱいるか.
6login:Penguin:01/10/02 18:51 ID:E7mCRr2I
>>5
レスありがとうございます。
でもなかなか難しいですね。

カーネルの勉強するにはどこから入ればいいのでしょうか?
7login:Penguin:01/10/02 18:59 ID:OaJKhMPg
http://www.oreilly.co.jp/BOOK/kernel/

この辺でも読んでみれば?
俺は読んでないから(w、良いのかどうか知らんけど。
8login:Penguin:01/10/02 19:04 ID:E7mCRr2I
引き続きレスありがとうございます。
しかしこれまた難しそうですね(笑
でもカーネルを勉強するからにはやっぱり避けられないのでしょう・・・・
頑張って読んでみます。ありがとうございました。
9生徒A:01/10/02 19:15 ID:ozLMsuOI
Linuxカーネルは巨大なので,OS全般について学びたい
なら,マイクロカーネルのITRONやMINIXなど,小さいもの
から学ぶのが良いと思われ.

ファイルシステムも標準出力も無いが,メモリやプロセスの
管理など,基本的な部分が学べる.

ところでこのスレには,先月のLinux Kernel Conferenceに
参加した猛者はおらんのか? 漏れは猛者では無いが参加
した.カーネルの概要など,一般的な部分が多かったが,
勉強になった.
10login:Penguin:01/10/02 19:47 ID:OjgDyI7M
肥大化する前のコンパクトなバージョンなので、
このあたりから眺めてみるのもいいかも。
ftp://ftp.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.bz2
11login:Penguin:01/10/02 22:28 ID:6FKAXCY.
Linux使うならカーネルを勉強したいよね。

有名どころだけど
http://www.linux.or.jp/JF/
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html
12login:Penguin:01/10/02 22:30 ID:6FKAXCY.
カーネルまでいくと流石に簡単じゃないね。
でもカーネルに踏み込んでいって初めてLinuxの楽しさがわかりますなぁ。
13名無しさん:01/10/02 22:46 ID:zSfn87tE
slab accellarator のことを
くわしくおしえてください
14login:Penguin:01/10/02 23:05 ID:5C40lEU6
>>13
slab allocatorなら教えてあげられるけど・・
15名無しさん@お腹いっぱい。:01/10/02 23:11 ID:YMg.KQfs
http://www03.u-page.so-net.ne.jp/da2/h-takaha/internal24/
これはいいよ。おれもよく眺めてるw
16login:Penguin:01/10/02 23:17 ID:oluBGeaw
別にプログラムするのにカーネルのお勉強なんて無駄だよ(藁
なにお熱くなってるんだ?
17login:Penguin:01/10/02 23:22 ID:72q63jd2
>16
興味ない奴は、別に気にしなくてもいいよ。
18login:Penguin:01/10/02 23:49 ID:wFiCO6hI
>13

slab ってのは、

ページサイズより小さな領域を効率よく割り当てる

仕組み。いくつかの「オブジェクト」をまとめて割り当てて、そこから割り当てるようになってる。

特徴的には、Linuxだと

- キャッシュラインをずらしてキャッシュヒット率を上げてる。
- 2.4 だと CPU ごとのプールがあって、競合しにくくなってる。

ぐらいか。

オリジナルは Sun のやつで、論文がでてる。slab allocator Sun とかで検索かければたくさんヒットするよ。
Sun のは、無駄な再初期化を減らす方に主眼が置かれてたみたいだけど、Linux はそういう使い方はしてない。
19login:Penguin:01/10/02 23:53 ID:2Dl0has6
この板のレベル高い人は本当にレベルが高いからほんと勉強になります。
20login:Penguin:01/10/03 00:29 ID:qmOPlmH.
>>15
LinuxJapanのやつだよね。
雑誌のほうがきちんとかかれているので、高いけど我慢して買ってます。
21login:Penguin:01/10/03 00:30 ID:qmOPlmH.
>>19 同感
22login:Penguin:01/10/03 00:49 ID:hQhC8R6E
小学館から出ている
オープンソースコメンタリー(?)とかいうヤシは
参考になりますか?
23login:Penguin:01/10/03 15:39 ID:OoBvWckA
一昔前の(とはいっても未だに最先端に近い) UNIX カーネルの話題は、
UNIX Internals: The New Frontiers / Uresh Vahalia
(邦訳:最前線 UNIX のカーネル)
一冊でほとんど網羅してるので、質問する前に必ず読め。
24login:Penguin:01/10/03 19:06 ID:2CGhO19g
>>23
UNIXカーネルとLINUXカーネルは別物ではないですか?
25生徒A:01/10/03 20:26 ID:L1U0davc
>24 どうしてもLinuxのカーネルでないとだめ?
OSの構造なんて,大体似たようなもんだから,1つわかれば
別のOSについてもわかるので,わかりやすい物から攻略すべし.
って漏れも修行中なんだけど.

Solarisなんかは結構すっきりしていて良いかと.
26login:Penguin:01/10/03 20:34 ID:OZlrqpPM
>>22 ちと疑問です。

オライリーの新しいのもあります。これも難しい....

詳解 Linuxカーネル
ttp://www.oreilly.co.jp/BOOK/kernel/
2722:01/10/03 20:56 ID:hQhC8R6E
>>26
立ち読みしてみたけど。あまりよくないみたいっす。小学館。
詳解Linuxカーネル、買おうと思っていたんだけど、
ギリギリ足りなかったので、
「Lions' Commentary on UNIX」ってのを買いました。
最初、「ヤッチマッター」とか思ったんですが、
よく読むと結構面白いデス。
28??????:01/10/03 21:06 ID:bEXvgoqg
http://www.linux.or.jp/JF/JFdocs/linus-lecture/kernel-writing.html
の中で、
「カーネルはずいぶん巨大なプログラムになっているが、カーネルについて
勉強するとすれば、どこから手をつければいいのか?」
という質問に、リーナスさんが答えてます。
29login:Penguin:01/10/03 21:15 ID:WC8.1bjo
>最初、「ヤッチマッター」とか思ったんですが、
どの本も高いからね。失敗は許されない(笑

ところで生徒Aさんは理系の学生ですね?
「 . 」と使うのは理系の学生ということを最近知りました。
全然関係ないのですが・・・・・・

学生のあいだじゃないとKernelの勉強する余裕も暇も無いんだろうなぁ
30login:Penguin:01/10/03 21:33 ID:7HwwpjBY
>>27
Lionsの本はいいよ。まだ小さいころのUNIXだから楽に読める。
ただ、うちの学生に読ませるとPDP/11の構造とか昔のCの
特異なシンタックスとか、ユーザー空間とカーネル空間の
マッピングなんかが分かりにくいから少し丁寧に解説しなくては
ならなくてめんどい。

>>18 誤爆だよ。>>13はslab accellarator って書いてるんだよ。
3122:01/10/03 21:36 ID:hQhC8R6E
#別にコテハン名乗る必要ないですが。
>>29
Lions' Commentary on UNIX 、イイです。
他のカーネル解析本が5、6、7千円する中、
3800円という値段だし、ソースのコメントも、
解説も、厨房の漏れにも簡単に理解できます。
UNIX6thEditionのソースだけど。。。
ま、まぁ、かなり良書だと思います。

PDP-11モッテルヒトニトッテハナー (・∀・)
ヒガイシャハオレダケジャイヤダナー(・∀・)
カッテクレーカッテクレー (T∀T)
32 :01/10/03 21:59 ID:6FwjUW2s
そんなほんよんだところでやくにはたたへんで。
ほんまむだやで。
33login:Penguin:01/10/03 23:58 ID:eXoVUEs6
>>32
そうそう。カーネルを勉強したからといってどうせOSを作るわけでもないんだろ?
はっきりいって仕事でそんな知識は必要ありません。必要なのは体力、根性です(藁
34login:Penguin:01/10/04 00:06 ID:qcYQ0G.s
>>33
カーネルハックして、自分の環境に
より適合させたいってのはあるんですが。

それに、コンピューター関連の仕事なら
かなり役に立つらしいですよ。
35login:Penguin:01/10/04 00:19 ID:IJ/BVV8A
>>34
御意。カーネルを読むことによってプログラミング
することが楽しくなり、おまけにコンピュータに
関する様々な知識が得られるでしょう。
36login:Penguin:01/10/04 01:37 ID:TP.JpGmU
>>33
仕事でカーネルいじってますが、何か?
37生徒A:01/10/04 02:20 ID:BnS2BE2U
自宅から書き込んでいるので「、。」です。それはともかく、
本棚からお勧め書籍を紹介。

●A.S.タネンバウム, A.S.ウッドハル/ オペレーティングシステム
・設計と理論およびMINIXによる実装, ピアソン, ¥8,800
 個人的にはOSの本を1冊かうならコレ。マイクロカーネルのUNIX
(下位)互換のOS、MINIXの解説本。図版も適切でわかりやすく、
巻末に解説付きソースコードとCD-ROMが付属。

●A.S.タネンバウム / 分散オペレーティングシステム
(プレンティスホール)¥6,400
基本的に分散アーキテクチャの本だが、スレッドやセマフォ、
メッセージパッシングなどといったOSの基本を学ぶのに最適。
マルチプロセッサに関してもかなり詳しい。

ほかにも色々あるけど、とりあえず2冊。
38login:Penguin:01/10/04 05:17 ID:Up.CcwEM
>>32
カーネルデザインってのはソフトウェアエンジニアの一般教養の一つだろ。
一般教養はえてして practical には見えんもんだけど。
でも、物事に対する造詣の深さってのはそういう一般教養の積み重ねなんだよ。
薄っぺらいつまらんエンジニアで一生を終えたいんなら必要ないけどな。
39login:Penguin:01/10/04 12:17 ID:qcYQ0G.s
40login:Penguin:01/10/04 12:54 ID:7fdQf4Ts
414:01/10/05 00:23 ID:gYIiu.Dk
3日もかかった。
42login:Penguin:01/10/05 00:28 ID:x.kXOwPc
>>41
オメデトーアゲ
4341:01/10/05 19:30 ID:b1Ltl45Y
(*^_^*)
4441:01/10/05 19:30 ID:b1Ltl45Y
(*^_^*)
45login:Penguin:01/10/05 22:02 ID:s1QC/7Fg
>>41
(´-`).。oO(オメデト...)
46生徒A:01/10/08 17:37 ID:ckosTg1k
駄レスしか付いとらんな…。

>「C言語初歩段階」の私が、Linuxのカーネルを「読んで理解出来るよ
>うになる」段階に到達するには、一体どんな本を勉強すればよろしいの
>でしょうか?

別スレの質問だが、「C言語初歩段階」なんて言っているくらいなら
C言語をマスターするのが先。プログラム板でC言語関連の書籍を捜す
べし。

とりあえずC言語で1万行くらいのプログラムを書け。話はそれからだ。
期待しているよ。
47login:Penguin:01/10/08 17:59 ID:b/ngw8PE
ははは、言えてる。
classぐらいは理解できんときついわな!!
48login:Penguin:01/10/08 18:40 ID:a7vO/utY
>>46
コード数、UNIX6Editionの主要部分より
多いし。
49login:Penguin:01/10/08 21:03 ID:x5IDA3B2
SH4用のLinuxに使われている、IRE-Based IRQについて、
解説してくれる人いますか?

SE用の実装で、ILRの向こうの8259をどう扱えば良いか、悩んでるんですが。
50login:Penguin:01/10/08 21:04 ID:x5IDA3B2
↑IPR-Basedの間違いでした。
51生徒A:01/10/08 22:34 ID:YM3gMNoM
>>49-50

SH-4は割り込みが1本にまとめられていて、割り込み要因が
どれかはソフトウェアで判定しなければならないため、
PC/ATの割り込みコントローラをエミュレートする形で
割り込みを判定するルーチン…でいいのかなぁ。

もし全然嘘だったらごめんなさい。

念のため、Linux/SHのページを貼っておきます。
http://linuxsh.sourceforge.net/docs/abe/doc/linux-sh-kernel-bootup_J.php3
52login:Penguin:01/10/09 00:13 ID:bLcM5DEQ
10さんのファイル萌えるうううううううう・・・・・・ハァハァ
5352:01/10/09 00:16 ID:bLcM5DEQ
あ、、、でもLinusの自伝に、
できたてのころのカーネルはデバイスドライバがバグりやすいとか書いてあったなあ、
入れるのに少し抵抗が、、
54生徒A:01/10/09 01:04 ID:3eF2sAZg
>53 VMWare
5553:01/10/09 01:09 ID:bLcM5DEQ
>>54
なるほど・・!
VM上で動かせばディスク死んだりすることも無いということですね!
(勘違いだったら死脳ッ戸
レスありがとうございます。
56生徒A:01/10/09 03:03 ID:3eF2sAZg
>いまならオブジェクト指向言語で見通しよく書かれた
>OSを採用するべきではないかとおもうのですが

別スレの質問。技術的には言っていることは正しい(多分)。
ただ、そのような言語を理解できる人が少ないため、カーネルの
メンテナンス要因が激減すると思われ。

そのデメリットがメリットを上回っているのが現状。

「いいや違う」という反論はソースコードでのみ受け付ける。
もちろん、君がオブジェクト指向言語で書いたOSのコードでね。
57login:Penguin:01/10/09 20:44 ID:z4CgcBHE
アゲル アゲレバ アゲルトキ
58名無しさん@お腹いっぱい。:01/10/09 21:18 ID:P9P83zo6
何ヶ月か前にマ板C++スレでC++ではメタオブジェクトがないから
そんな言語でOS作ったら悲惨なことになるっていう結論が出てた
59login:Penguin:01/10/09 23:01 ID:z4CgcBHE
Objective-Cで作りませう!
60login:Penguin:01/10/09 23:43 ID:bAzeTfP6
Rubyで作りませう!
61  :01/10/14 09:30 ID:q04qm9lH
なるほど、今となってはOSの処理は相対的に
軽いから、デバイスドライバー部分とCPU周辺
チップのところ以外では、OSをインタープリター言語
で書いても十分実用になるのかな?
62login:Penguin:01/10/14 23:50 ID:bKvEFw2k
質問させてください。叩かれ覚悟です。

カーネル部分を作るには、アセンブリがわかる必要がありますよね。
全部Cってわけにはいかないと思うのです。どこで勉強すればよいか教えて
ください。(Cはわかります。)
それから、OSがどんな風に立ち上がるのか(ローダーってやつ?)なんかも
どこで勉強すればよいのでしょう。ハードディスクの先頭に何かアセンブリで
書いておくのでしょうか?
スレを汚してすみません。でも初心者スレでは無視されるだけだと思いますので。
お願いします。
63login:Penguin:01/10/15 00:06 ID:yWyIFyqv
>>62
http://www.linux.or.jp/JF/
読み漁れば脱初心者にはなれる。

>それから、OSがどんな風に立ち上がるのか(ローダーってやつ?)なんかも
>どこで勉強すればよいのでしょう。

上のサイトにも書いてあった気がするけど。
今月号のLinuxMagajineが特集してた。悪くない。
6462:01/10/15 00:12 ID:KoDPieN3
>>63
やさしいご指導ありがとうございます。
がんばります。
65login:Penguin:01/10/15 00:15 ID:IJzxys8Q
>>62
ほれ。
http://www.linux.or.jp/JF/JFdocs/From-PowerUp-To-Bash-Prompt-HOWTO.html

別に初心者スレでも無視しないけど。
6662:01/10/15 00:30 ID:KoDPieN3
>>65
ありがとうございます。
>別に初心者スレでも無視しないけど。
すみません。
67login:Penguin:01/10/15 00:30 ID:RTj/vcxR
つーか、Linuxカーネルに学ぶことなんてないじゃん。

NetBSDの方がおもしろいぞ。いっぺん見てみろ。
68login:Penguin:01/10/15 01:18 ID:0RSIU0Ev
LinuxとNetBSDを読み比べるのも一興かと。

OSの勉強するんだったら、BSD勧めとく。
386の勉強するんだったら、Linuxも悪くない。
69login:Penguin:01/10/15 01:25 ID:c0PMqbqd
RT-Linuxってどう?
70login:Penguin:01/10/15 03:51 ID:LRyZyG6E
>>68
確かに。ソースを読むのもいいけど、とりあえず、
-current の man.tgz を持ってきて、/usr/share/man/cat9 を
覗くだけでも宝の山。
hard link が多いから、ファイル選んで読むべし。
71login:Penguin:01/10/15 07:44 ID:RTj/vcxR
MINIX -> 386BSD -> NetBSD -> FreeBSD -> Linux -> Solaris

の順番で勉強せい。
MINIX、386BSDの挙動を完全に理解できたら、後のものはソースコードを眺めるだけでよし。

いきなりLinuxカーネルはきつすぎる。
良い意味で実用主義、悪い意味で「とりあえず動けばOK」。
ただひたすら読みにくい。

Linux、*BSDを読み終えたらSunだ。ちゃんと金払えよ。
そしてスレッドの美しさに酔いしれろ。
72login:Penguin :01/10/15 07:52 ID:fLIHewuG
>>71
Solarisんとこ、machやl4の方がいいと思うけど。
73login:Penguin:01/10/15 07:55 ID:fLIHewuG
UNIXの構造を勉強したい人にはthreadは関係ないんじゃねーの?
74login:Penguin:01/10/15 09:47 ID:1RSiSLer
Jolietの2byte文字を読めるように改良しようと思って、
ソースを眺めているがサパーリわからん。

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

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

売りポイントとしては、「実際に自分で作ったものを動かせる。
動かすことで理解が深まる」ってとこかな。
89login:Penguin:01/10/17 01:22 ID:kW1Ppu3x
90login:Penguin:01/10/17 01:27 ID:6udvZ9Dg
>>89
気になるのは、元にしてるのは2.2系なのか2.4系なのか、かな。
91login:Penguin:01/10/17 06:38 ID: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 が入手できるんだからそっち読んどくが吉。
92♯6411:01/10/17 11:04 ID:Nt5BAsRN
>>91
悪魔本でも、和訳の
「4.3BSDの設計と実装」
は、初心者には(もちろんエキスパートにも)
オススメじゃないよね?
…って、まだ版を重ねてんだろか?

原書嫁。

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

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

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

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

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

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

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

>>110
具体的に、どのあたり?
114110:01/10/28 02:37 ID:v7FYjkut
Linux 0.0.1カーネルだけど hd.c とか。
HDDコントローラ?の仕様とか見ながら書いたのかな
仕様って手に入るのかな・・。
115login:Penguin:01/10/28 02:51 ID:c0cZVdxb
116login:Penguin:01/10/28 02:53 ID:cJ0fmml8
>>114
0.0.1って....
あまり古すぎじゃないか?移植どころか、「とりあえず動かす」
ころのだろうから、ちょっと読むにも大変なんでわ?
コントローラの仕様ってのは、どっかで手にはいりそうだね。
とりあえずは、

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

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

インターフェースの増刊かなり最新ですね・・すぐ手に入りそうだ。
っていうかインターフェースって雑誌、今はじめて知りました・・
バックナンバーの目次とか眺めたけどすごく面白そう、何で今まで知らなかったんだろう・・
116さんに感謝・・。
118117:01/10/28 04:41 ID:v7FYjkut
↑の1行目 115さん116さん だった(恥
119login:Penguin :01/11/05 04:47 ID:zk7Lax0s
こんなのどうよ。呼んだ人いる?
http://www.amazon.co.jp/exec/obidos/ASIN/0471408824/
120教えて!!!:01/11/06 23:49 ID: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のところの*は環境によって違うということですが、それは具体的にどういう意味ですか?

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

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

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

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

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

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

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

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

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

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

元の Pth は、ユーザレベルのスレッド実装だけど、
ちゃんとM:Nになってるみたいだけど。
まだ、SMPではちゃんと動いてないみたいですね。
次のバージョンで対応するようですが。
145login:Penguin:01/11/11 12:59 ID: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/
146login:Penguin:01/11/11 12:59 ID:ZFz8sYwI
>n:mカーネルスレッド(無理か)

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

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

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

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

んなことないっしょ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

> もしかして tty すか?プ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

実はそのソフトウェアは、開発段階では Solaris と BSD でも動かしてたんだ
が (最終版は Linux のみ)、Solaris だけじゃなくて BSD でも問題なかったのね。
だから、これに関してはカーネルレベルでのプリエンプティブ性は必要ない。
Linux 版がなんか遅いなあと気づいたのは、比較対象があったせいなわけ。
172login:Penguin:01/11/13 23:27 ID:cEWualST
>>171
でも、システム全体のスループットをあげるのが必ずしも良いとは限らないよね?
そうすると公平性が損なわれない?
173login:Penguin:01/11/13 23:46 ID:36p1vksl
> でも、システム全体のスループットをあげるのが必ずしも良いとは限らないよね?

一般的にはスループットと応答性はトレードオフになることが多いからね。
でも、この件に限って言うと、スループットも応答性も両方とも向上する
ので、当てはまらない。

> そうすると公平性が損なわれない?

失われない。
sleep priority は、sleep から目覚めてからユーザーモードに戻るまでの間
しか適用されないから、もしそのプロセスが I/O するだけでなく CPU も沢山
使っている場合は、(sleep priority じゃない方の) 優先度が下がっているの
で、ユーザーモードに戻る時に、より優先度の高いプロセスにスイッチしてし
まうから。
174login:Penguin:01/11/14 00:00 ID:BJD7Ro88
>>171
> I/O intensive なプロセスに優先的に CPU を与えることは、
> システム全体の「スループット」(not only 応答性) も向上させるのよ。
> これ常識。
ん〜じゃほとんどI/OせずCPUをガンガン使うタイプのプロセスはあまりCPUを
使えなくなるような気がするのだけど。
175login:Penguin:01/11/14 00:13 ID:LEvOTgWY
2.2しか調査してないんなら、wake one が出来るようになった
2.4 で比較してみたら?
176login:Penguin:01/11/14 00:22 ID:LEvOTgWY
しかし、良く読めば、kernel 2.2 でネットワークの
性能があんまし出てないって話だったのね。

2.4 ではカードによっては zero copy が出来るようになったし、
32bitマシンで64bitDMAのbounce buffer なしのデータのやりとり
とかもできるようになってきてるし、ソフト開発で今更 2.2
がターゲットというのもどうかとおもわれ。
177login:Penguin:01/11/14 00:46 ID:IRaPmSaY
> ん〜じゃほとんどI/OせずCPUをガンガン使うタイプのプロセスはあまりCPUを
> 使えなくなるような気がするのだけど。

その通り。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 を比べた
・少なくとも直接の原因はスケジューリングにあった
ってことから導けるんだけど、面倒だからこれ以上の説明は省略。
これだけ書いとけば、あとは自分で考えれば分かる筈だからね。
178login:Penguin :01/11/14 00:47 ID:jil2no7j
ちょっと勉強したいのでSolarisのソースコードをMXに載せてくれないかな?
もうソース公開おわっちゃったみたいなので。
UNIX板だと煽られそうだからここの有志に期待。
179login:Penguin:01/11/14 01:02 ID:cZfNRmC/
ライセンス違反じゃん
180login:Penguin:01/11/14 01:06 ID:jil2no7j
まぁそうかたいこといわずに・・
181login:Penguin:01/11/14 01:45 ID:BJD7Ro88
>>177
> その通り。UNIX のスケジューラは、どれも基本的には、こうなっているよ。
> Linux だってそう。嘘だと思ったらスケジューラのソースを読んでくれ。
つーか良いスケジューラかどうかってハナシをしてるんだけど。これでいいの?
182login:Penguin:01/11/14 02:18 ID:IRaPmSaY
> つーか良いスケジューラかどうかってハナシをしてるんだけど。これでいいの?

良いからこうなってるんだ YO。
そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。
183login:Penguin:01/11/14 03:05 ID:BJD7Ro88
>>182
> そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
> スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。

やはりCPUバウンドとI/Oバウンドなプロセスがバランスよく動くことが理想だ
と思うわけ。画像のレンダリングとかをやるならCPUバウンドの方を優先した
方がいい。SVR4なんかはI/Oでなくて「イベント」でプライオリティを増減し
ているらしいけどこういう戦略の方が今っぽくはないかというハナシ。

例えばLinuxのsched.cなんかを読むと以前実行したプロセスとメモリを共有し
ているプロセスの優先度を上げるようになっているけどこういうのは駄目なの?

あと前も言ったけどLinuxのスケジューラは毎秒キューを再計算してないので
(再計算するのは全ての実行可能プロセスがカンタム時間を使いつくした時だ
け)プロセスが多くなると設定しなおす頻度が下がるからレイテンシが下がる
んだろうと思ったんだけど。こういうのも毎秒計算するよりはアリだと思う。

まぁ問題と言えば問題なんだけどそれはスケジューラのクセであって信用に値
するかしないかという問題ではないと思ってるんだけどどう?
184login:Penguin:01/11/14 08:20 ID:BJD7Ro88
おはよう
>>177
> その原因として Linux に sleep priority がない (他の UNIX には、全て
> ある) ことを疑っているんだけど、
他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
> あと、今回の件は wake one とか zero copy とか bounce buffer なしとか
> は、たぶん関係ないよ。どうしてそう想像できるかは、
俺も関係ないと思う。つーわけで出勤だよヽ( ´ー`)丿続きはまた今夜。
185login:Penguin:01/11/14 19:55 ID:IRaPmSaY
> やはりCPUバウンドとI/Oバウンドなプロセスがバランスよく動くことが理想だ
> と思うわけ。

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 なんてのは、すっぽり
抜け落ちてるでしょ。
186login:Penguin:01/11/14 21:32 ID:BJD7Ro88
>>185
> を使わないから優先度が下がって、優先度の高い 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 あたりでプリエンプティ
ブなスケジューラのパッチが流れてきてるんでそのうち入るのではないかな。

そういや君の案件ってリアルタイムプロセスにして動かすという手はなかったの?
187login:Penguin:01/11/14 22:18 ID:IRaPmSaY
> だからバランスよくと表現したんだけど。LinuxはPC用OSだよ?
> 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() で
スケジューラの変な挙動を回避する方が、マシな解決策だと判断したわけ。
188login:Penguin:01/11/14 22:43 ID:BJD7Ro88
>>187
> それこそ、リアルタイム・スケジューリングを使うべきアプリケーション
> じゃないの?
Unix的にはそうかも知れない。しかしLinuxはそういうプロセスにもCPUを割り振る
ようなスケジューラに*結果的*になっている。だからこの辺でいいんじゃないか
と手を打ったように見えるわけさ。それをクセと書いたわけ。

> この、必要だと思ったらってところの判断基準に納得いかない点があるんだよなあ。
> 今回の応用の場合は作り込みで問題を回避できたけど、一般論としては回避で
> きないこともあると思うんだが。
必要だと思ったらというより必要だと思ってパッチを出せる人がいたらってことかな。
却下されることはあまりないよね。

> > スケジューラの件も kernel-ml あたりでプリエンプティブなスケジューラ
> > のパッチが流れてきてるんでそのうち入るのではないかな。
>
> プリエンプティブ化と この件は、関係ないのでは?
あ。ごめん。>>154 の件。
189login:Penguin:01/11/14 23:16 ID:IRaPmSaY
> しかしLinuxはそういうプロセスにもCPUを割り振るようなスケジューラに*
> 結果的*になっている。だからこの辺でいいんじゃないかと手を打ったよう
> に見えるわけさ。

これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
知恵が使われてないのをみると、結構ガックリくるのね。
まあ、無視しても何の問題も出ないのなら、そういうのもありなわけだけど、
現実に、こっちとしては手間がかかってるわけだし。

> 却下されることはあまりないよね。

たとえば crashdump と kernel debugger が標準カーネルにいまだに入ってな
いのは、納得いってない。そりゃ Linus が必要としてないのは分かるが、
顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ。
190login:Penguin:01/11/15 01:29 ID:L5cES50v
>そりゃ Linus が必要としてないのは分かるが、
>顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ

そりは君のお仕事では?
191login:Penguin:01/11/15 02:42 ID:mJoL8gKI
>>189
> これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
> UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
> 違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
> 知恵が使われてないのをみると、結構ガックリくるのね。
シンプルで高速にってのがLinuxのモットーだしね。VM論争だってRikのロバスト
なVMよりAndreaの高速なVMの方が採用されてしまった。まぁそれもアリだとう思う。
既存のUnix的なものを求めるのならLinuxは向かないのかも知れない。
192login:Penguin:01/11/20 10:07 ID:VDFNCHJf
質問です。
Linuxのソースコードの中で読むと勉強になるファイルを紹介してください。
個人的にはlist.h、ghash.hが大変為になりました。
193login:Penguin :01/12/07 04:50 ID:pUngVfZJ
マルチメディア対応ってよく言われるけど、
スケジューラのどこをどう換えればよくなるの?
194生徒A:01/12/07 12:06 ID:Gi93BTz7
懐かしいスレageたな.

>193 リアルタイム化ってことでいいんじゃない? 具体的には,
カーネルプリエンティブにして優先度付きスケジューラ(Linuxで
言う優先度とはちょっと違う)を搭載すればマルチメディア対応で
いいのかな.

優先度継承機能とかもいるね.
195縞栗鼠(シマリス)の親方:01/12/07 12:19 ID:ohUthW+y
中央高等学院の従業員「西部」が女子トイレに闖入し
汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。

中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。

中央高等学院
http://www.chuo-school.ac/
http://chs-f.com/index.html 中央高等学院福岡校
196login:Penguin:01/12/11 19:44 ID:PbCyuzo0
> 優先度継承機能とかもいるね.

割り込み処理に優先度をつけるのも必要でしょ。
割り込み処理を、優先度付きのスレッド化するってのでもいいけど。
197login:Penguin:01/12/12 20:53 ID:VRHOlTvG
『詳細 LINUX カーネル』
買った age 。
198login:Penguin:01/12/12 21:32 ID:6ixMAsTN
>>197
ずいぶん前に買ったけど、まだ読んでないや。
細かいけど詳細ではなく詳解です。

#それじゃあLinuxJapan 10月号と同じ間違いだよ。(w
199197:01/12/12 21:50 ID:VRHOlTvG
>>198
やっちゃった…。 訂正ありがとう。
200login:Penguin :01/12/13 04:48 ID:GDrY1kNC
おれも今同じの読んでる。
これとソースコードをつき合わせてるから、
年内かかりそうなかんじ。
がんばりましょう!
201login:Penguin:01/12/13 07:24 ID:nHHZmC7z
本屋に行って実物見ると、禿厚だったのでウトゥ。
あんなのいつ読み終わるやら…。
現在、1章読み終わる!
残りページ見てまたウトゥ。

ま、ゆっくりと行きますか。
がんばりましょう。
202login:Penguin:01/12/13 07:26 ID:nHHZmC7z
なんとなく。

『速読ってどう?』
http://ebi.2ch.net/test/read.cgi/rikei/969547091/l50
203login:Penguin :01/12/13 07:31 ID:GDrY1kNC
モノホンのハッカーはソースを読むのが早いね。
もうあっという間に理解してたりする。
あういった技能は本を速読するのとは
また別の能力の気がするよ。
204login:Penguin:01/12/13 17:28 ID:3ZNfl0lP
でも『詳細 LINUX カーネル』ってカーネル2.2対応でしょ?
2.4もあまり変わりないの?
205login:Penguin:01/12/13 19:35 ID:P41LkMkd
>>204
執筆の時点の安定版カーネルが、 2.2 だったらしい。
でも、初版が 2001 年 7 月だから、本としては
カナーリ新しいんじゃなかろうか。
漏れなんかには違い分からないだろうし…。
206login:Penguin:01/12/13 20:20 ID:jXJ+WFgy
大まかな構造とかは同じだろうけど、
詳細な部分が違うだろうから本の趣旨からすると…
207login:Penguin :01/12/13 20:35 ID:GDrY1kNC
>>204
一応各章の最後に2.4.*のことについて書かれてる。
ほんの少しだけど。
>>205
原書は2001/1って書いてある。ってことは発売されたのは去年かな?
>>206
もとのタイトルには詳解なんて言葉はないです。日本のオライソーが
勝手につけた言葉です。

この本の目的はカーネルのソースを読めるようにすること
って書いてあるから、本だけ見て細部を隈なく理解できるように
なると期待するほうが間違ってると思う。
208login:Penguin :01/12/14 09:22 ID:pLOVOTkt
マルチメディア用のIOとは何ですか?
特別にシステムに関数とかを用意したりするんでしょうか?
209login:Penguin :01/12/24 12:51 ID:UsKcZqV7
パラダイムシフトはまだですか?
210login:Penguin:01/12/29 11:32 ID:QLo22gE5
デバイスにアクセスするには
/dev以下のノードを介する方法しかないのでしょうか?
よろしくお願いします。
211login:Penguin:01/12/29 12:03 ID:mYAbtgDl
>>210
/dev 以下以外にもデバイスファイルは作れます。
man mknod
212login:Penguin:01/12/29 12:19 ID:4LQmsDwQ
他のマシンの/devをNFSマウントして、そこの/dev/hdcとかを直接
フォーマットとかしようと思ってmke2fsとかやったら
自分のところのマシンをフォーマットしちゃったわけよ。

デバイスファイルって結局そこにあるメジャー番号とかマイナー番号
とかしか参考にしないわけで、誰のものかなんて考慮してないよね。
(かならず自分のデバイスだと思ってる)

たしかネットワーク経由で他のマシンのデバイスを直接操作する
機能というか仕組みがあったと思うんだけど、なんて名前だっけ?
213login:Penguin:01/12/30 00:17 ID:5UM9dPtt
>>210
最近はデバイスファイルでは扱いにくいハードが増えたから
(マルチメディア系・プラグアンドプレイ)
なんで、デバイスファイルじゃなくて、
そのハードを扱うシステムコール作って、
システムコールであつかうのもいいんじゃないかな?
214login:Penguin:01/12/30 00:30 ID:vlB/mJ24
ネットナンパ必勝法を格安販売中!


出会いを求める男性へ!!


http://chevy.sites.cc/
215login:Penguin:01/12/30 00:55 ID:L5DsFMps
みなさんレスありがとうございます。

>そのハードを扱うシステムコール作って、
>システムコールであつかうのもいいんじゃないかな?

これはカーネルに手をつけるということですよね。
そこまでしなければデバイスファイルを経由しないといけないという事でよろしいのでしょうか?
216login:Penguin:01/12/30 02:50 ID:FBPpTPsC
>>212

>他のマシンの/devをNFSマウントして、そこの/dev/hdcとかを直接
>フォーマットとかしようと思ってmke2fsとかやったら
>自分のところのマシンをフォーマットしちゃったわけよ。

最初UNIX Kernelをわかってないなぁって思ったんだけど、でも、確かにネットワーク越しに相手のデバイスファイルを触るという発想はちょっと面白いかも。
Kernel側がどう一貫性を維持しようとするかが問題だけど。
217212:01/12/30 03:07 ID:UzGpkVqi
>>216
ネットワークブロックデバイス というのがあるみたいッスね。
(ようやく名前がわかったですよ)

カーネル2.2にもあるみたいなんだけど試すのおっかないなぁ
218login:Penguin:02/01/01 12:59 ID:fIVu4F/o
カーネル空間とユーザー空間というのは頻繁に交代されているのですか?
また交換するには具体的にどのような過程を通しているのでしょうか?
お願いします。
219login:Penguin:02/01/01 20:33 ID:BcEtv31+
しょっちゅう切り替わっているよ。切替えのタイミングは
ハードウェアによる割込み、ソフトウェア割込み (システムコールはこれ)、
モード切替え用の命令、メモリ保護違反、不正な命令の実行、等いろいろ。
まずは JF の
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html
読んで勉強しな。
220login:Penguin:02/01/01 20:57 ID:fIVu4F/o
ありがとぅ
221login:Penguin:02/01/05 15:23 ID:7OyjHkMf
カーネル初心者です。
以下の本は買う価値あるでしょうか?
実習Linuxカーネル 理論と実習カーネルを効率的に理解するための実習書
出版社名 : ピアソン・エデュケーション
222login:Penguin:02/01/06 03:54 ID:Dq18r+Gi
っていうか、お前らLinuxカーネルの解析に役立つツール
カキコしてください。

とりあえず、global
223login:Penguin:02/01/06 03:56 ID:I+MzFQ0/
>>222
grep
224login:Penguin:02/01/06 04:06 ID:Yl828KDR
>>222
echo, printf
225login:Penguin:02/01/06 04:18 ID:OZczuKpf
printk
226login:Penguin:02/01/06 04:51 ID:QV/kUS0W
http://www.vogue.is.uec.ac.jp/~koike/papers/bit/vlinda.gif
↑こんな感じでLinuxカーネルを激しいインパクトと共に
表示してくれるツールないのか?
227TOM:02/01/06 05:29 ID:VAV/Hk1R
インストール済みのlinuxでwindows同様にIPアドレスとサブネット
マスクを設定したいのですが、どのようにやればいいのでしょうか?
228TOM:02/01/06 05:31 ID:VAV/Hk1R
すみません書くところ間違えました(m--m)。
229global:02/01/06 07:29 ID:6O0PvUPf
cd /usr/src/linux
gtags
htags
って何時間ぐらいかかりますか?

5時間動かしてて、まだ、終らないんですけど。
230login:Penguin:02/01/07 02:12 ID:9E3jZ+kY
っていうか、お前らglobalのオプションカキコしてください。
とりあえず、

htags -aF
-a:英字インデックス
-F:フレーム対応

linux2.4.17、PenV733で4時間ぐらいだった気がする。
231229:02/01/07 20:12 ID:hX8x2Oiv
再挑戦して半日経ちますが、まだgtagsが終りません。
linux2.4.17をPentium3 500でやってます。

よかったら
GPATH
GRTAGS
GSYMS
GTAGS
のサイズ教えてください。
僕のは今のところ
2 MB
92 MB
13 MB
19 MB
で、GSYMSがちょっとづつ増えています。

sortが遅いのかな?(2.0.16)
232login:Penguin:02/01/09 14:16 ID:YpXVFRRT
task_struct構造体とproc構造体の違いと役割を教えてください。よろしくお願いします。
233login:Penguin:02/01/11 10:22 ID:aBKMHgnQ
ISAボードのデバイスの自動検出ってどうやってやってるんですか?
やっぱり片っ端からチェックしてるだけなんでしょうか?
234login:Penguin:02/01/11 22:24 ID:VauQghNo
interfaceでLinuxのデバイスドライバーの特集やってたね。
みんな買って読んでる?
235login:Penguin:02/01/11 22:34 ID:OhKVZ3uP
デバドラのデバッグ方法がわかりやすくてベネ
236login:Penguin:02/01/11 22:43 ID:J9+ERyxt
>>233
個々のドライバの初期化処理で、ありそうなアドレスを片っ端からチェックしてる。
237デフォルトの名無しさん:02/01/12 21:54 ID:Osm3xSog
238SsS:02/01/13 16:44 ID:1HgPfsgv
>234
デバックにprintfk を使うってほんと???
239login:Penguin:02/01/13 17:17 ID:ften7Xof
>>238
ほんとう
240セマフォ:02/01/13 22:51 ID:byNjLBNZ
セマフォについてわかりやすく実装方法を教えて!
241デビットカトラー:02/01/13 23:12 ID:byNjLBNZ
Linux のスケジューラは、どのプロセスを走らせるかを一つのファイルの中で処理しているおもしろいプログラムだから。

といいますが、具体的にどのファイルで処理しているのでしょうか?
242login:Penguin:02/01/13 23:30 ID:QSg7wIlW
>>241 SDのインタビュー記事からか?
linux/kernel/sched.o だろ(藁
ソースコードはlinux/kernel/sched.c だな
243super:02/01/14 00:12 ID:d6cd8xHD
デバイスドライバを作るということは
open やclose などに対応したデバイス独自の関数を
作成しそれらへの関数ポインタをひとまとめにしたテーブルを
作成するということ
といいますが、
もうすこし、わかりやすく説明してください
244login:Penguin:02/01/14 00:34 ID:/7fIIVht
qsort(3)は、第三引数に関数へのポインタをわたすよね。
これは「比較を行う関数」というものをqsort本体からは
抽象化して、実装は別にしているわけだ。

同様に、あるキャラクタディバイスに対してread()やwrite()
を行った際の動作を、カーネルが扱う際に抽象化する為に
関数へのポインタを渡すことで実現している。
245login:Penguin:02/01/14 01:00 ID:HmpJulBQ
>>240
semaphoeで検索すれば、いくらでもヒットするんでは?
もしかして、test and set命令とか、そのレベルから
教えてという話?
246login:Penguin:02/01/14 01:24 ID:qUNfVGwW
semaphore
247login:Penguin:02/01/14 05:38 ID:yv5BYGJ8
>>243
そういうテーブルを作ると、ドライバの親分が
必要に応じて呼び出してくれるんです。
248super:02/01/14 22:10 ID:hh4sVRcA
age
249login:Penguin :02/01/15 21:02 ID:blfk2QjY
>242

http://pc1.peanuts.gr.jp/~kei/Kernel-Snapshot/linux/kernel/sched.c

Lion みたいにわかりやすく解説して!
250login:Penguin:02/01/15 21:07 ID:blfk2QjY
sched.c は
1269ステップ数あります

みなさん249のページをコピーして
秀丸に貼り付けて下さい!
251login:Penguin:02/01/15 21:08 ID:blfk2QjY
98行目
static union {
struct schedule_data {
struct task_struct * curr;
cycles_t last_schedule;
} schedule_data;
char __pad [SMP_CACHE_BYTES];
} aligned_data [NR_CPUS] __cacheline_aligned = { {{&init_task,0}}};

では何をやっているのでしょうか?
252login:Penguin:02/01/15 21:13 ID:blfk2QjY
static inline struct task_struct *find_process_by_pid(pid_t pid)

は何を意味していますか?
253login:Penguin:02/01/15 21:43 ID:blfk2QjY
あげ
254名無しさん@お腹いっぱい。 :02/01/15 23:02 ID:myRSFpvn
>251
具体的にどの部分が分からないのか不明。

currにn番目のプロセッサで実行中のタスクが入る。
unionで__pad入れてるのは、構造体のサイズをcache境界の単位にあわせるため。
__cacheline_aligned は構造体そのものをcache境界に整合した番地に置くため。
NR_CPUS定数はCPUの数。

>252
>find_process_by_pid
関数名そのまんま。PIDからタスク構造体を取得するだけだと思うが。
255login:Penguin:02/01/15 23:06 ID:iytjqY0j
>> 251
/*
* We align per-CPU scheduling data on cacheline boundaries,
* to prevent cacheline ping-pong.
*/

>>252
pidが0なら、現在のタスク情報の構造体へのポインタを、
そうでないなら、指定されたpidがしめすタスクの構造体への
ポインタを返してる。
256login:Penguin:02/01/16 00:02 ID:NXnK8I7n
sched.c について

Lionsに紹介されている(P94)のsched.c
とLinuxのSched.cとは全然違うように思います

これはLinuxが独自の仕様ということでしょうか?

Bach本でスケジューリングのアルゴリズムを説明しているソース
はLion本に近いソースで説明しているのですが
257login:Penguin:02/01/16 00:03 ID:NXnK8I7n
unionで__pad入れてるのは、構造体のサイズをcache境界の単位に
あわせるため

もう少し詳しく!
258名無しさん@お腹いっぱい。 :02/01/16 00:13 ID:MlDa/kr2
>>257
http://lse.sourceforge.net/counters/statctr.html
#Statistics Counter Maintenance
のところに詳しく書かれてる。
259login:Penguin:02/01/16 00:15 ID:lZaXRnQU
>>257
cacheの問題だっていってるんだから、そこに因われることは
無いと思われ。
「あー、高速化の為に、unionつかってイイ感じにやってんのねー」で
十分じゃねーの?
260login:Penguin:02/01/16 00:38 ID:NXnK8I7n
smpって言葉がでてるけど、mp環境だから
256のいうように、ソースが複雑になっていると
いうことでしょうか?

ちなみにSCHED.C ってlINUXの中ではわかりずらいソースなのでしょうか?
261名無しさん@お腹いっぱい。 :02/01/16 00:58 ID:MlDa/kr2
__padによるCache単位(キャッシュライン)への整合はMP環境で大きな意味を持つ。
つまり、キャッシュラインに対して構造体1つがピッタリはまっていれば
その構造体以外のアクセスで、その構造体があるキャッシュラインがフラッシュされることがなくなる。
もし、構造体のサイズ!=キャッシュラインサイズであれば、
あるプロセッサによって無関係のデータの読み込みが行われた場合でも
他のプロセッサ全てのキャッシュラインの更新が行われてしまう可能性がある。
そしてメモリアクセスが増えて性能が落ちる。わずかだけど。

キャッシュラインのイメージ図(*が構造体の部分 Xが無関係のデータ)
(1). [**********][XXXX] <-構造体のサイズ!=キャッシュラインサイズの場合
(2). [****************] <-構造体のサイズ==キャッシュラインサイズの場合
(1)の場合は無関係のデータにアクセスされてもそのキャッシュラインがフラッシュされてしまうので無駄。
(2)の場合は構造体にアクセスする場合だけそのキャッシュラインがフラッシュされるので効率がいい。

       ∧_∧
       ( ´Д`)  <わかったかな?
      /    \ 
   _  | |  ∬ | |_..∬
  |\ ̄ ̄ ̄旦 ̄ ̄ 旦.\
 ./..\\          \  
/   \|================| 
\    ノ             \
  \                .\
    \               ..\_
      """"""""""""""""""″″′
262login:Penguin:02/01/16 01:09 ID:DfshrX4d
>261
thank you
263Be名無しさん:02/01/16 22:11 ID:NXnK8I7n
あげあげ
264Be名無しさん:02/01/16 22:31 ID:NXnK8I7n
static inline int goodness(struct task_struct * p, int this_cpu, struct mm_struct *this_mm)
{
int weight;

/*
* select the current process after every other
* runnable process, but before the idle thread.
* Also, dont trigger a counter recalculation.
*/
weight = -1;
if (p->policy & SCHED_YIELD)
goto out;

/*
* Non-RT process - normal case first.
*/
if (p->policy == SCHED_OTHER) {
/*
* Give the process a first-approximation goodness value
* according to the number of clock-ticks it has left.
*
* Don't do any other calculations if the time slice is
* over..
*/
weight = p->counter;
if (!weight)
goto out;

#ifdef CONFIG_SMP
/* Give a largish advantage to the same processor... */
/* (this is equivalent to penalizing other processors) */
if (p->processor == this_cpu)
weight += PROC_CHANGE_PENALTY;
#endif

/* .. and a slight advantage to the current MM */
if (p->mm == this_mm || !p->mm)
weight += 1;
weight += 20 - p->nice;
goto out;
}

/*
* Realtime process, select the first one on the
* runqueue (taking priorities within processes
* into account).
*/
weight = 1000 + p->rt_priority;
out:
return weight;
}


なにをやっているか解説して下さい

140行目からです
sched.c
265Be名無しさん:02/01/16 23:00 ID:NXnK8I7n
struct mm_struct {
int count;
pgd_t * pgd;
unsigned long context;
unsigned long start_code, end_code, start_data, end_data;
unsigned long start_brk, brk, start_stack, start_mmap;
unsigned long arg_start, arg_end, env_start, env_end;
unsigned long rss, total_vm, locked_vm;
unsigned long def_flags;
struct vm_area_struct * mmap;
struct vm_area_struct * mmap_avl;
struct semaphore mmap_sem;
};

構造体の中に構造体がある場合はどう理解すればいいのでしょうか?

sched.h
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-15.html
266もなー君@お腹いっぱい。 :02/01/16 23:37 ID:MlDa/kr2
>264
goodnessは、指定されたタスクが実行し続けるにふさわしいか判断するための関数。
戻り値が大きいほど「実行しつづけた方がいいよ」という意味になる。

この関数だけ見てもしょうがないので全体的に説明すると。
#RTプロセス周りは省略

> weight = p->counter;
このcounterは可変優先度式スケジューラの動的優先度に相当する。
動的優先度については>171あたりを参照。

>#ifdef CONFIG_SMP
> (省略)
> if (p->processor == this_cpu)
> weight += PROC_CHANGE_PENALTY;
>#endif
プロセッサはそれぞれにcacheとTLBを持っているため、
1つのタスクがいくつものプロセッサにまたがって実行されると性能が低下してしまう。
従って、「なるべく同じプロセッサ上で実行し続けた方がいいよ」という意味。

>if (p->mm == this_mm || !p->mm)
> weight += 1;
これも同様に、別のメモリ空間(ページテーブル)に切り替えるとTLBが無駄になってしまうから
「なるべく切り替えない方がいいよ」という意味。

       ∧_∧
       ( ´Д`)  <PROC_CHANGE_PENALTYとかの値は推測的に決められているから
      /    \  <どれほど性能が改善されるのかをLinus君に問いたい、問い詰めたい、
   _  | |  ∬ | |_..∬ <小一時間ほど問い詰めたいところではある。
  |\ ̄ ̄ ̄旦 ̄ ̄ 旦.\
 ./..\\          \ 
/   \|================|
\    ノ             \
  \                .\
    \               ..\_
      """"""""""""""""""″″′
267あげあげ:02/01/17 13:09 ID:fKwmqdxC
>266

Thank You
268login:Penguin:02/01/17 20:28 ID:P7SYmdjd
Linuxカーネル2.5.2がUSB 2.0をサポート
http://www.zdnet.co.jp/news/0201/17/e_usb.html
...カーネル2.5.2には,OSの重要な部分となる「スケジューラ」も実装されている。

ワロタ
269名無しさん@XEmacs:02/01/17 22:57 ID:MexfPvJZ
実際に使っているけど、結構いい感じ。
気に入った。
270Be名無しさん:02/01/18 23:07 ID:SjcLc3oq
>linux/kernel/sched.o だろ(藁
>ソースコードはlinux/kernel/sched.c だな

自分で,sched.c を一部書き換えて、sched.o を作って
linux/kernel/sched.o と置き換えてもうまく動作しますか?

ソースを一部書き換えて、それをリナックスでコンパイル
させる方法教えて下さい。
例えば、sched.c
271login:Penguin:02/01/18 23:11 ID:SjcLc3oq
C勉強中です

http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-5.html#ss5.5

にある図表(4.2) プロセスの仮想メモリ
は構造体が二つネストして、task struct から3階層目で
実際のメモリにアクセスしていると考えればいいのでしょうか?

struct
(struct
(struct
ってかんじですか?
272270:02/01/18 23:21 ID:SjcLc3oq
例えば
sched.c の
http://pc1.peanuts.gr.jp/~kei/Kernel-Snapshot/linux/kernel/sched.c
1157行目
if (xtime.tv_usec >= 1000000) {

if (xtime.tv_usec >= 900000) {

に変更して、これをLinuxに組み込みたいときは具体的に
どういう手続きでできますか?

273名無しさん@Emacs:02/01/18 23:51 ID:YW/sCNj0
>>272
1. time.c を編集
2. /usr/src/linux あたりで make vmlinux
でダメかい?

274270:02/01/19 00:44 ID:jiC3xKcw
>273

sched.cを編集したので、sched.c をコンパイルして
sched.o をつくってと言う流れにはならないのでしょうか?
275名無しさん@Emacs:02/01/19 00:58 ID:qDPmIUv5
>>274
sched.c編集後に kernel/
でmakeって打ったらどうなる?
276 :02/01/19 03:29 ID:EPNncPjO
親切な分厚い本が何冊かでているから、それを読んで勉強
するのがもっとも効率がよいぞ。それでも判らないところは
メーリングリストや掲示板で尋ねなさい。
277login:Penguin:02/01/19 10:14 ID:s4mGpeNh
>>256
なんとか本は読んだことがないのだけれど、
伝統的なUNIXなら、スケジューラにはMLFQ
を使っているんじゃないでしょうか?
LinuxのスケジューラとMLFQは違うの? と
いう質問に対する答は、「違うよ」です。

MLFQ:Multi Level Feedbak Queue
278penguin:02/01/19 10:27 ID:Nn4Hdk9S
>276
以外にsched.c を編集して差し替える方法ってのはのってないです
オらいリーにも、バッハにはもライオンにも
279perl:02/01/19 19:19 ID:6UZoY/KQ
>275

Target /Rules.make をmake するターゲットがありません
と表示されます
280login:Penguin:02/01/20 01:25 ID:PW5h4b9T
>>279 そうなるでしょ?
だから君は /usr/src/linux あたりで makeしろ
と言われるわけだ
なんでこうなるかは, Makefileなどを読めばわかるから読んでみなよ

>>274 もちろん そうすることもできる
があまり一般的でない気がするし
この程度のこと自分で調べるとか試すことができんと
先にすすめんと思うぞ.
281202.221.45.130:02/01/20 01:26 ID:RJR5ycOG
202.221.45.130

俺のIPアドレスだ、おめーらの技量じゃハックデきね〜だろうけどw
282login:Penguin:02/01/20 01:33 ID:6rBCbXPR
>>281
プロバイダはケーブルネット新潟か、、
icmpが通らないどころかtcpのどのポートも開いてないじゃん。
283A:02/01/20 18:44 ID:cVcKPlLa
>280
http://www.zdnet.co.jp/help/howto/linux/kernel24/03.html

みたいな感じでやるの?
284T:02/01/21 12:53 ID:Wml0Xzg3
コンパイルされたカーネルはどのディレクトリにありますか?
REaHATです
285login:Penguin :02/01/21 20:15 ID:vTi6jywZ
>>284
/linux/arch/i386/boot/bzImage

ところであまり綺麗ではないと言われるLinuxのソースですが、
どのあたりが*BSD*やその他のカーネルと比べて不味いのでしょうか?
自分には十分綺麗にまとまっているようにも思いますが。
286名無しさん@EMACS:02/01/21 20:43 ID:a+jXfduo
>>285 比較対象によるが洩れにもそんなに汚くは内容に見える
ただデバイスドライバの中には汚いのも散見する気がするので
ここらへんが不味いと言われるかもしれないです
287Be名無しさん:02/01/21 22:15 ID:RLDBnvZL
goodness関数のソースを見たいのですが、どこにありますか?
288login:Penguin:02/01/22 03:27 ID:sIyQ1wuj
kernel/sched.c
289名無しさん:02/01/22 21:27 ID:qC2FYqJq
最近カーネルに加わったっぽい
bioとかdriverfsってどういうのですか?
290safda:02/01/23 17:16 ID:FOpw4p0s
goodness って 140行目の
static inline int goodness(struct task_struct * p, int this_cpu, struct mm_struct *this_mm)
{
int weight;

/*
* select the current process after every other
* runnable process, but before the idle thread.
* Also, dont trigger a counter recalculation.
*/
weight = -1;
if (p->policy & SCHED_YIELD)
goto out;

/*
* Non-RT process - normal case first.
*/
if (p->policy == SCHED_OTHER) {
/*
* Give the process a first-approximation goodness value
* according to the number of clock-ticks it has left.
*
* Don't do any other calculations if the time slice is
* over..
*/
weight = p->counter;
if (!weight)
goto out;

#ifdef CONFIG_SMP
/* Give a largish advantage to the same processor... */
/* (this is equivalent to penalizing other processors) */
if (p->processor == this_cpu)
weight += PROC_CHANGE_PENALTY;
#endif

/* .. and a slight advantage to the current MM */
if (p->mm == this_mm || !p->mm)
weight += 1;
weight += 20 - p->nice;
goto out;
}

/*
* Realtime process, select the first one on the
* runqueue (taking priorities within processes
* into account).
*/
weight = 1000 + p->rt_priority;
out:
return weight;
}

desune
291login:Penguin :02/01/25 04:17 ID:dOURaakd
カーネルをコンパイルしたはいいけど、
どこが原因で止まっているのか分からないときは
どのようにデバッグしたらいいのでしょうか?
起動時に
'PCI: Enabling device 00:07.2 (0000 -> 0001)'
と表示して終わります。
(arch/kernel/pci_i386.cのpcibios_enable_resources()関数で出力)

ここまではgrepだけでなんとか分かるのですが、この先どこでおかしく
なっているのかさっぱり分かりません。

kernel debugオプションでログを解析したいのですがやり方等
分かる方がいらっしゃれば何か教えて下さい。
292login:Penguin :02/01/25 06:15 ID:dOURaakd
こんなの見つけました。
User-mode Linux Kernel
http://user-mode-linux.sourceforge.net/
これを動かしてはコンパイルを繰り返すことで
大体のことが勉強できそうなので、
まずは基本からやり直します。

辛いな(ワラ
293safda:02/01/25 09:19 ID:SWm1VQvW
プログラムとは、実行イメージとしてディスクに保存されたマシン語の命令とデータとのセットである。

*http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-5.html#ss5.5

といいますが、ここで使われている実行イメージとは?
詳細に説明して下さい
294 :02/01/25 10:44 ID:Cy8BPQOb
295login:Penguin:02/01/25 10:55 ID:dOURaakd
次は誰かがLinuxにタダ乗りすればいいのでは?>>295
296login:Penguin:02/01/25 10:56 ID:dOURaakd
×295 ○294
297anonymous:02/01/25 12:58 ID:SWm1VQvW
>プログラムとは、実行イメージとしてディスクに保存されたマシン語の命令とデータとのセットである。

上はメモリに保存されたとういことではないのでしょうか?>>ALL
298login:Penguin:02/01/25 13:28 ID:GUMC5F4J
>>291
もう一台PCがあって、カーネルデバッガが起動できるようならリモートデバッグ

それ以外だと、オプションをOFFしまくった小さなカーネルが起動できるかチェックし、
起動できたら少しずつ足していくか、モジュール化しといてinsmod手打ちで落ちる所を捜す

動くカーネルとのオプションの違いや、コンパイラが腐ってないかなどはあらかじめチェックすること
299login:Penguin:02/01/25 13:34 ID:GUMC5F4J
>>297
ディスクで正しい、メモリをメタな意味で用いているならそれも正解
300login:Penguin:02/01/25 13:52 ID:GUMC5F4J
>>293
実行イメージは単体(OSは介在していい)でプロセスの起動まで持っていける
プログラムとデータなどをまとめたもの。
LinuxでOSがプログラムとデータを認識できるようにELFというフォーマットを
主に用いる。ELFは複数のプログラムとデータをチャンク(セクションと呼ばれる)として
持つ、イメージ的にはプログラムやデータの個々のファイルを、アーカイバで1つにしていると
考えるといい。
ELF内のプログラムはフツー再配置情報へのリンクを含んだ実行コードそのものと、
再配置情報、シンボルなど複数のチャンクとして格納されている。データも同様で
初期化の他のデータや、あらかじめ獲得するデータ領域などに分けられ格納される。
その他、デバッグ情報や、チャンクの配置情報などもチャンクとして格納される。

デバッグ情報などチャンクのなかで、さらに別なフォーマット(coffなど)として
格納されているものもある。

OSは実行イメージをプロセスとして変換する際、これらの情報から実際に実行可能な
コードと適切に配置されたデータを生成し、実行スケジューリングに追加する。
301anonymous:02/01/25 14:16 ID:SWm1VQvW
>300

Thank You
302名無しさん:02/01/25 15:15 ID:IiT72Jq6
303 :02/01/25 20:29 ID:gMh2q5dU
>>302
話題のやつですね。使ってみた人います?
FreeBSDのcrashdumpやkerneldebuggerは使ってみたことあるんですが、
crashdumpは便利だったけどkerneldebuggerは・・・て感じだったんで、LKSTはどうなんだろう?と。
Docを読んだ限りではdebuggerではなくtracerだな、て感じでしたが。まあ名前のとおりなんですが。
304もなー君@お腹いっぱい。 :02/01/25 21:40 ID:bz8Zsrcu
>>300
実はELF-DOSはMZ形式のEXEじゃなくて、ELF(386)形式をサポートしてるんだYO!

とかいってみるテスト
305kernel:02/01/25 22:45 ID:AiDxywi8
http://www.linux.or.jp/JF/JFdocs/readkernel.html#ss2.1

にある
メモリー上のアドレス 0x7c00

の  0x7c00  って?
306もなー君@お腹いっぱい。 :02/01/25 22:59 ID:bz8Zsrcu
>>305
0x7c00は、ブート時にBIOSがディスクからIPLセクタを読み込んで配置するアドレス。
IPLセクタには、ブートマネージャやOSローダなどが書き込まれている。
つまり、BIOSによってディスクの先頭セクタ(IPL)が0x7c00番地にロードされ、実行される。

       ∧_∧
       ( ´Д`)  <1セクタ512バイトしかないから、IPL上で他のセクタをロードして
      /    \  <ブートアップしていくのが普通。
   _  | |  ∬ | |_..∬
  |\ ̄ ̄ ̄旦 ̄ ̄ 旦.\ 
 ./..\\          \   
/   \|================|  
\    ノ             \
  \                .\
    \               ..\_
      """"""""""""""""""″″′
307IBM:02/01/26 00:58 ID:qkQVL9nG
>306

Thank You
308login:Penguin:02/01/26 01:36 ID:UX7CiKAA
>>307
おぃおぃお前がゆーな
つか答えろ
309IBM:02/01/26 02:08 ID:qkQVL9nG
Linux カーネル 2.4 の最新動向(第3回)!!

http://www-6.ibm.com/jp/linux/developers/ISEtechinfo/linux003.html
310login:Penguin:02/01/26 20:51 ID:zSXZ5gOy
age
311login:Penguin:02/01/27 05:29 ID:r2XC415p
各モジュールの依存関係と参照関係を管理しているデータ構造がよくわからん。
struct module の
depsメンバーと, refsメンバー
だれか図に書いて教えて
312login:Penguin:02/01/27 11:31 ID:Z/G/YqfA
age
313login:Penguin:02/01/27 17:48 ID:jQmpel0O
VRAMに直接データを書き込んでディスプレイに描画するサンプルプログラムプリーズ
314login:Penguin:02/01/27 23:16 ID:Frv9vH0P
>>313
ってか、何がしたいの?
それって、Frame Bufferでいいんでは?
jfbterm のソース見れば?
http://www3.justnet.ne.jp/~nmasu/linux/jfbterm/indexn.html
315login:Penguin :02/01/27 23:25 ID:sK7/TLsv
お前ら人に教えてもらうんじゃなくて
少しは自分で解析しろよw。
皆そうしてやってんだからさ。
316login:Penguin:02/01/28 00:11 ID:QstxY/nc
皆さん一緒に「オマエモナー」
317Su:02/01/30 20:26 ID:AvPSuSyK
あげ
318APC:02/01/30 20:35 ID:AvPSuSyK
http://www03.u-page.so-net.ne.jp/da2/h-takaha/internal/node11.html#SECTION02140000000000000000
スケジューラはidleと呼ばれる何もしないプロセスに実行権を渡す。


これはソースのどのあたりを読めばいいですか?
319login:Penguin:02/01/30 20:59 ID:Lx5WPMzl
>>318 スケジューラなので kernel/sched.c
repeat_schedule: あたりか?
320名無しさん:02/01/30 21:37 ID:650NkqOF
>>311
include/linux/module.h を眺めたが
struct moduleのdepsとrefsって
module_ref でこいつはただのlinked listちゃうの?

|module|
^
| dep
|
|module_ref|-next_ref->|module_ref|-next_ref->...
|
| ref
v
|module|

|module|-next->|module|-next->...

思いきり簡略化するとこんなかんじとちゃう?
321名無しさん@お腹いっぱい。:02/01/30 23:27 ID:BrO/yEox
http://www.amazon.co.jp/exec/obidos/ASIN/4894714566/
これはよいかも。おれ明日買いにいってみる。
322login:Penguin:02/01/31 00:59 ID:o+EauUH6
どなたかLinuxデバイスドライバに関するスレを作っていただけないでしょうか。
当方大手プロバイダな物でnew Thread("Linuxデバイスドライバ")できません。

イーサネットドライバの書き方教えてくださいませ。
一応ソース読んだけど挫折中、、、
323login:Penguin:02/01/31 01:11 ID:t3s191ys
じゃ、作るよー。
324323:02/01/31 01:16 ID:t3s191ys
たてたよ。
いい加減で悪いけど。
325login:Penguin:02/01/31 01:48 ID:R8TIzJku
ディバイスドライバをハックしよう
http://pc.2ch.net/test/read.cgi/linux/1012407270/l50
326anonymous:02/01/31 17:35 ID:XkNXES9H
>319

sched.cには
repeat_schedule
というモジュールはないです。
sched.cの何行目くらいでしょうか?
327telnet:02/01/31 17:41 ID:XkNXES9H
mmap メモリマッピングは具体的に
Linuxではどういうケースでどういうケースで使うのでしょうか?

メモリマップの具体的なしくみははじめて読む486で理解しています

328319:02/01/31 18:01 ID:VzRMG8cD
gotoのlabelだからモジュールぢゃないと思うが、
vesion 2.4.17だとこんなかんじです。

603 repeat_schedule:
604 /*
605 * Default process to select..
606 */
607 next = idle_task(this_cpu);

idle_task()を追いかければ分かると思われ。
329anonymous:02/01/31 19:40 ID:bRdhNRMb
>328
Thank You
330login:Penguin:02/01/31 21:41 ID:U++Ss/ms
http://www.zdnet.co.jp/news/0201/31/e_linux.html
LinuxはもはやTorvalds氏の手に余るのか

ってここに貼っていいんだっけ?
331☆中身丸見えなネットキャバクラ嬢HP:02/01/31 21:55 ID:qyVVAuwK
現役サクラがやってるHPなんだけど
中を見ると、ネットキャバクラの派遣業務(スカウト)も
やってるんだけど、セキュリティ甘すぎで
応募してきた女のデータが丸見え(藁
こんな甘いセキュリティーでいいのか??

ついでに書くけど、派遣やスカウト業務って
労働大臣に報告しないとやっちゃいけないんだってね。

テレギャル日記
http://book-i.net/shiyo/

参考
http://school.2ch.net/test/read.cgi/part/1012407397/l50
http://school.2ch.net/test/read.cgi/part/1001553767/l50
332login:Penguin:02/01/31 22:13 ID:VzRMG8cD
>>330 cvs使っとけてことだろ(藁
そこんとこどうよ? >>333
333anonymous:02/01/31 22:24 ID:gjVN0d1d
リーナスは21歳でLinuxを書いたそうだが、
はっきりいって驚きです
334login:Penguin:02/02/02 10:57 ID:ZMxM5ZSu
2つ質問させていただきます。

1.全てのプロセスはユーザースタックとカーネルスタックの2つのスタックを持っているという認識は合っていますか?
2.プログラムカウントレジスタが指しているアドレスは論理アドレスですか?それともリニア、物理アドレスですか?

よろしくお願いします。
335login:Penguin:02/02/02 11:27 ID:QwE3ggcc
>>334
テスト勉強は、友達か先生に聞いてください。
336login:Penguin:02/02/03 20:10 ID:urBW9ceP
mapファイルはいつ、どこに作られるのですか?
System.mapは作られるタイミングわかったんですけど
mapはどこで作られてるのか・・・さっぱり
337336:02/02/03 22:07 ID:urBW9ceP
たとえばCD-ROMインストールするときなどは
CD-ROMからカーネルを持ってくると思うんですが
カーネルをコピーしたあとに LILO を打つのに
map=/boot/map
のこのmapはどこから持ってくるんですか?
とりあえずDebianのCD-ROMの中にはありませんでした。
338オリスレ1:02/02/04 16:32 ID:zNf2nkG9
少しでも技術的なスレをあげましょか。

厳密に言えばmapファイルはKERNELとはあまり関係がない。これはLILOが使う
情報ファイルであり、この情報を使わないローダーを作ることも可能。
/boot/mapは、lilo.confを変更した後に実行する"/sbin/lilo"により作られる。
この時に同時に1st loderに2nd loader、/boot/mapのセクタ位置も書き込まれる。
実際にLILOが/boot/mapを読むコードはsecond.sのldsc:というラベルの辺りにある。
339login:Penguin:02/02/05 21:13 ID:JQSzVmkT
LINIXはノンプリエンティブ カーネル
Widows9Xは プリエンティブ カーネル
もう少しわかりやすく説明して下さい
340login:Penguin:02/02/05 21:17 ID:8yPPH2y0
>>339 Windows9Xカーネルは糞だということ。
341login:Penguin:02/02/05 21:18 ID:cjWnFjQH
ん? Windows 9x の*カーネルが*プリエンプティヴなの?
342login:Penguin:02/02/05 21:45 ID:3XUKmv4C
Windowd9xは擬似(以下略)だね
343login:Penguin:02/02/05 21:48 ID:xTemToT9
Mac OS 9 以下もね。
344login:Penguin:02/02/05 22:09 ID:JQSzVmkT
>342
日経バイト(つまらん雑誌だが)に
Windowsのロードマップを解説してあり、その中に
Windowsをプリエンティブカーネルと紹介してあった
345 :02/02/05 22:36 ID:ac3U4odz
win9xのカーネルってどこまでを指すんだろね?>>344
346login:Penguin:02/02/06 00:15 ID:CkGAoDS/
Linux の*プロセス*はプリエンティブである!
347login:Penguin:02/02/06 18:11 ID:CbSD5861
http://www.atmarkit.co.jp/fwin2k/special/win9xorwin2k/win2kprocess_4.html
こんなんがあったぞ。
win のことだけど初心者にとってはスケジューリングの仕組みについて参考になるかも。
茶を濁したようだったらスマソ
348login:Penguin:02/02/07 20:45 ID:KeZhLQ6z
age
349REd:02/02/08 10:59 ID:SBI5gws8
make の意味が初心者にもわかりやすく解説してあるサイト、書籍希望
350login:Penguin:02/02/08 11:51 ID:/7nCIwuy
>>349
1987年あたりのOh!X12月号

85年だったかな?
351名無しさん@Emacs:02/02/08 11:54 ID:/gFPMDAN
>>349
漏れも興味があったので探してみた。
http://www.google.co.jp/search?hl=ja&q=GNU+make+%89%F0%90%E0++%8Eg%82%A2%95%FB++Makefile++-Amazon&btnG=Google+%8C%9F%8D%F5&lr=

↑一応の検索結果
みつかんないことないじゃん。

ttp://kofukan.nmn.jp/jp/Yamadori/make.shtml
ttp://www2.startshop.co.jp/~68user/unix/pickup?gmake

でも、Hit数が多すぎて寄りわけが大変(w
352login:Penguin:02/02/08 12:54 ID:yqzyJOrB
パッチ管理システムって何をするための物なんですか?
cvsじゃ、だめなんだろうか。
353@@@:02/02/09 19:07 ID:BxQSwRbk
MINIXのソースのアセンブリ言語で書かれている部分て
どんな文法ですか?(なんか変な質問)
あと、MINIXのソースはどうやってコンパイルするのですか?
354名無しさん@Emacs:02/02/10 04:09 ID:/Yna3/+b
>>327
> mmap メモリマッピングは具体的に
> Linuxではどういうケースでどういうケースで使うのでしょうか?

FreeBSD PRESS 読め。
355login:Penguin:02/02/17 03:11 ID:wXNMmwBm
age
356login:Penguin:02/02/17 04:43 ID:q2RiODNo
                   ,、
                  / .\
                /ζ 禿  \
              / ̄ ̄ ̄ ̄\.\
. ________,/         \\________
 \           //\    \  /  | ̄\            /
   \  叩   /  |||||||   (・)  (・) |  \  騙   /
    \   /   (6-------◯⌒つ |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      \/    |    _||||||||| | < カツヲめ、またワシを召還しおったな!
      /\     \ / \_/ /   \___________
    /   \   (( \____/ ))    ./   \
   /  逝   \                 /  煽   \
 /         \ ________/         \
   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               \  氏   ./
                \   /
                  \/
http://www.puchiwara.com/hacking/
357login:Penguin :02/03/02 22:12 ID:acfYBPiM
Lion's Commentary on UNIX を今日買った。
358484:02/03/03 01:05 ID:T7JEzMm9
Linuxカーネル2.2あたりをよむ方がいいような
359login:Penguin:02/03/03 17:08 ID:WsSnuBVI
>357
多分学生さんだと思いますが,
どうですか 読んでみて
360login:Penguin:02/03/03 17:24 ID:1pDkR8wB
学生じゃないとLinuxのソース読むような暇は取れないよな
学生時代にどれだけ基礎体力を蓄えるかでSEとしてのその後の人生が決まると思ふ
361357:02/03/03 23:14 ID:1ClZlz9s
>359
malloc.cで挫折しました。
私にはまだこの本を読むだけの素養がないことを痛感致しました。
362名無しさん@お腹いっぱい。:02/03/04 02:48 ID:r500tR00
363login:Penguin:02/03/06 00:04 ID:j2wxpcrr
>「メインメモリ」が不足した場合に、その不足部分をハードディスクの一部の領域に待避させて、代替させることができます。この場合に、ハードディスクの中の待避領域を「仮想メモリ」といいます。

Linuxカーネルを語るときに使う「仮想メモリ」と上記のWindowsでのSwapの意味での「仮想メモリ」って別物ですよね?
364login:Penguin:02/03/06 00:36 ID:VoZ13GuD
>>363
基本的には同じでわ?
365login:Penguin:02/03/06 06:04 ID:pruE8kEE
>>363
仮想メモリ=リニアアドレス空間
っと思ったりする。
366名無しさま:02/03/06 22:14 ID:lCrfYxtD
VM上のメモリ?
367login:Penguin:02/03/07 23:39 ID:mjFXHr66
>> この場合に、ハードディスクの中の待避領域を「仮想メモリ」といいます。

> Linuxカーネルを語るときに使う「仮想メモリ」と上記のWindowsでのSwapの
> 意味での「仮想メモリ」って別物ですよね?

確かにこの説明は、仮想メモリじゃなくて、スワップ領域の説明だが、
Windows が Linux と違うんじゃなくて、単にこの説明書いた奴が分かってないだけ。
Linux でいう場合の仮想メモリと、Windows でいう場合の仮想メモリは同じ物。

> 仮想メモリ=リニアアドレス空間
> っと思ったりする。

おいおい。
物理メモリだって、リニアアドレスだったりするだろう。これも変だ。
368login:Penguin:02/03/10 13:20 ID:9TPve/Qe
>> 367
多分365が言っているリニアアドレスはx86用語でのもの。

virtual address(?) -> セグメントによる変換
-> linear address -> ページングによる変換 -> physical address

それにしても仮想メモリとリニアアドレスは違うけど。
369login:Penguin:02/03/10 16:40 ID:XxAqk7rT
bootsect.S
などで書いたコードを
フロッピーのブートセクタに入れる場合と
ハードディスクのブートセクタに入れる場合の
両方をそれぞれ教えてください。

よろしくお願いします。
370 :02/03/10 16:59 ID:KLNVRDiw
フロッピー dd if=bootsect.o of=/dev/fd0
ハードディスク dd if=bootsect.o of=/dev/hda1
371login:Penguin :02/03/14 01:02 ID:SAjWxZmX
久しぶりにあげてみよう
372365:02/03/14 17:29 ID:8ZESikIV
>>368
リニア・アドレスってx86以外でも使われる
用語なのか。知らなかった。
リニア・アドレス空間って物理メモリorハードディスクなどに
マッピングされるよな。で、ハードディスクにマッピング
された領域が仮想メモリになるのだろうか。
なんとなくしっくりこないなぁ。
メモリ(物理メモリやハードディスクに問わず)を抽象化した
リニアアドレス空間ってのが仮想メモリ空間。<間違っているだろうか?
373368:02/03/15 22:07 ID:GKIFJfj9
>>372
おれも「リニアアドレス」という用語はx86以外では聞いたことはない。
ただ367がリニアアドレスを線形なアドレスという意味で書いているようなの
でx86では特別な意味があると書いただけだ。

仮想メモリというのはメモリを抽象化するというシステム、あるいは概念を
示す言葉であって手段(スワップファイルとかhogeアドレス空間とか)を示す
ものではないというように理解しているがどうよ?
374名無しさん@Emacs:02/03/16 06:42 ID:O4su64/c
仮想メモリってリニアとは限らないよね。
今時はふつうリニアだろうけど。
375365:02/03/16 08:51 ID:NOghNGWY
> 仮想メモリというのはメモリを抽象化するというシステム、あるいは概念を
> 示す言葉であって手段(スワップファイルとかhogeアドレス空間とか)を示す
> ものではないというように理解しているがどうよ?

なるほど、”仮想メモリは概念”っていうのはすごくしっくりくる。
x86系だと普通はプロセッサのメモリ抽象化サポートと
カーネルのページングメカニズムのサポート、この2つによって
仮想メモリは実現されるが、他のOSの場合はそうとは限らんしな。
376login:Penguin:02/03/19 18:33 ID:GPZ5tDZe
377login:Penguin:02/03/23 05:06 ID:U94iusfQ
カーネルに、main()はありますか?
378login:Penguin:02/03/23 18:14 ID:3L96kgxa
>>377
ないっぽ
379login:Penguin:02/03/24 18:24 ID:p75aMmZg
>>378
マジっすか。
main()でなくてもいいんだけど、ここからスタート! っていう
目印なところが無いというか。
380もなー君@お腹いっぱい。 :02/03/24 18:29 ID:FVW+u6eT
>>379
( ´ー`)y-~~~ ↓ここに詳しく載っている。
http://lkh.linux.or.jp/24kernel/source/html4/boot.html
381login:Penguin:02/03/26 12:05 ID:nV5s0H8I
BIOSコールというのはROMに書き込まれている関数を呼び出す事ですか?
そうだとすればどんなBIOSコールがあるのでしょうか?
382login:Penguin:02/03/27 14:43 ID:BgVFN3rf
383login:Penguin:02/03/27 18:30 ID:sGm5Hb2n
384login:Penguin:02/03/27 20:23 ID:DIx0PeFc
385login:Penguin:02/03/28 03:30 ID:ZK8cq26O
bootsect.S
とLiloは別物ですよね?
386login:Penguin:02/03/28 03:46 ID:msez0qYs
>>385
どうしたらその2つが同じものに?
387login:Penguin:02/03/30 16:23 ID:SfYnsylz
結局どこからソースを読みはじれめればいいんだい?
388login:Penguin:02/03/31 13:19 ID:WhFkwY90
ふつうならstart_kernelからでいいんでは?
389login:Penguin:02/04/01 23:59 ID:8vevsllb
hage
390login:Penguin:02/04/02 21:20 ID:9DbcWQiH
本屋行ったらLinuxカーネル2.4インターナル
とかいう本の訳本が置いてあったんですけど、
誰か買った人います?

ちょっとプロセスの辺だけ眺めたたら
訳が下手だったんで買いませんでしたが。
391login:Penguin:02/04/02 21:22 ID:9DbcWQiH
スマソ書名まちがえた

Linux 2.4 インターナル
http://www.shoeisha.com/book/Detail.asp?bid=1339
だたよ
392名無しさん@お腹いっぱい。:02/04/05 22:27 ID:8Q1S/UyJ
>391
読む目的がないとソースよんだって意味がない
目的は?
393login:Penguin:02/04/05 22:36 ID:e8an97D8
>>390
下手なんてもんじゃないだろ。排水溝の底のヘドロみたいな訳だ。
394login:Penguin:02/04/05 23:51 ID:1X3bLXpd
Solarisカーネルインターナル超面白いぞ!買え!
そしてパクってLinuxにマージするのだぁ!
395login:Penguin:02/04/09 00:20 ID:O0rtlCLU
「entry.S」のentryテーブルにあるシステムコールの定義はどのファイルでしてるの?
396login:Penguin:02/04/09 01:04 ID:4N3q8p7g
>>359
ユーザーランド側はglibcじゃない?
カーネル側はsys_hogecall()を
asmlinkage void sys_hogecall()
としてそれぞれの関係するところで宣言してる。
asmlinkageはinclude/linux/linkage.h
かな。
397login:Penguin:02/04/09 10:17 ID:Sk6YzNPZ
398名無しさん@お腹いっぱい。:02/04/10 05:42 ID:uJzcEA3d
>>397
ありがとう。わかりやすかったよ、そこは。
399 :02/04/10 07:52 ID:0lkBeC02
>>397
/. でも話題になってたね。
http://slashdot.jp/article.pl?sid=02/04/09/0723249&mode=nested&threshold=-1

> O(1)スケジューラに対してはさまざまなベンチマークが取られており、
> いずれの結果からも大きく性能が伸びることが示されている。
> Molnar氏が取ったベンチマーク結果では、スケジューラの性能が通常の
> 単一CPUシステムでも数十%、SMPシステムでは最大600%近い伸びを示すなど、
> 大きな成功を収めている。

それにしても、O(1)スケジューラすごいなー。
400login:Penguin :02/04/11 21:02 ID:paUG3Ip4
400get!!!

ところでLinuxではトラップに対して切ってある定数は
どこで定義してあるんでしょうか?
401login:Penguin:02/04/12 01:05 ID:6kq0713T
>>397
漏れも勉強になた。ありがと。

ついでにSamba 3.0の記事も読んじゃったYO!
402login:Penguin :02/04/12 05:44 ID:FjR6S1/8
>>394
それにはおれも同意。
あの本は凄いよ。
403login:Penguin:02/04/12 18:03 ID:LUY70a8V
詳解Linuxカーネルの方が優れもの
404login:Penguin:02/04/14 16:15 ID:1Jdu/56r
こんなパッチがKernel MLに流れたが、どうも目立ちたがりやの
中学生なのではないかと思う。
http://www.uwsg.indiana.edu/hypermail/linux/kernel/0204.1/att-1011/01-3c59x.patch
405login:Penguin:02/04/14 22:59 ID:rMaBm7Ab
>>403
読んでから言ってね
406login;:02/04/15 00:09 ID:oRH5PO1X
ありゃ,Linux2.4インターナル立ち読みせずに発注しちゃったYO...

Lions Commentary はイイYO!

悪魔本とか読んで,イキナリカーネルソース読んで挫折して...を
繰り返した後読むと,スイスイと...
407login:Penguin:02/04/15 03:45 ID:GiNG6vcB
>>405
このパッチが出てきた文脈を知らないんだけど、なんか別のパッチの一部?

これ単体では意味をなさないような
408login:Penguin:02/04/16 00:00 ID:Gq3Gz/c2
LinuxのスレッドってWindowsより性能が悪いと思ってたけど、
そうでもないようですね。

http://www-6.ibm.com/jp/developerworks/linux/020412/j_l-rt7.html
409login:Penguin:02/04/16 00:09 ID:r9JjnCrt
>>408
スレッドの生成スピードだけが全てではないけれど、
それにしても意外なベンチマーク結果だね。
Windows もカーネルベースのスレッドなんだろうか?
410login:Penguin:02/04/16 00:25 ID:r9JjnCrt
>>407
ん? >>404 のパッチの事? Tagged VLAN 対応っしょ。
411login:Penguin:02/04/16 02:00 ID:toifQdqP
>>410
商用UNIXがあたりまえのようにtagged vlanに対応してるけど、
linuxの対応はちょとね
412login:Penguin:02/04/16 03:18 ID:Ped1nJiT
高橋さんのzerocopy NFS 速そうやね。
413login:Penguin:02/04/16 03:26 ID:Ped1nJiT
>>411
2.4.x にも 2.5.x にもモリモリ入ってるYO。
NICのハードウェアtvlanに対応しているのもあるし。
414login:Penguin:02/04/16 08:04 ID:yHB8Yz14
>>412
そのコードどこにあんの?
415login:Penguin:02/04/16 09:53 ID:Ped1nJiT
416login:Penguin:02/04/16 11:07 ID:yHB8Yz14
>>415
さんきゅー
読んでみるわ
417名無しチェケラッチョ:02/04/21 23:08 ID:ccHtxK1Q
418デフォルトの名無しさん:02/04/23 12:39 ID:f2RdN7Qr
419login:Penguin:02/04/27 23:04 ID:e5IKsX9A
scsi error handling rewrite 期待 age

http://www.andante.org/scsi_eh.html
420名無しさん@お腹いっぱい。:02/04/30 16:36 ID:0lZUrbHd
Linux システムコールプログラムって本どうですか?
421login:Penguin:02/04/30 16:40 ID:ozCXgXAB
不要。APUE を読め。
422login:Penguin:02/04/30 16:42 ID:MJcEiblG
>>420
似た名前の本がいっぱいあるから、amazoあたりへの
リンクぷりーず。
423名無しさん@1周年:02/04/30 21:11 ID:TGbiUZt2
>>422
アスキーから出ている本です。
かなり前に出版された本ですが、
版を重ねて新しいのが常に店頭にあります

読んだ感じは、わかり易い。
有名なシステムコールについて、わかりやすくかいている
fork ,exec
それ以外は421の言うとおりかもしれない
424login:Penguin:02/04/30 21:25 ID:x3t7pobP
mallocに関して、
外人が、sbrkを使うとフラグメンテーションの問題があるから
memmapを利用するという投稿をニュースでチラッと見た記憶が
あるけど、これ間違ってない?
最近別スレで128kb境界問題が出てきて思い出した。
425login:Penguin :02/05/15 15:53 ID:rs0ae66r
カーネルのソースって2.2系から比べてもどんどんと汚くなってることない?
gccと比べたらまだいいのかもしれないけど。。。
426login:Penguin:02/05/15 16:28 ID:Rs+cx4KM
具体的にどこがどう汚くなった?
427もなー君@お腹いっぱい。 :02/05/20 00:01 ID:f4n8AHGc
良スレ保守
428login:Penguin:02/05/27 03:28 ID:k9GgAUwV
良スレage
429☆解説キボーン!☆:02/05/29 00:33 ID:46fyOTxK
誰か解説してくれ!
--------------------------------------------

TSSの制限:
・104バイトのメモリを一度にロード,アンロードする必要があり,遅い。
・プロセスのカーネルスタックとタスク状態が,カーネルアドレス空間に存在しない。
・各プロセスのスタックが,アクティブ時に同じ仮想アドレス空間に存在する。
・ネスト可能な配置の複数プロセスからなるスレッド群を構築できない。
・プロセス終了時に,終了しようとしているコンテクストでアドレス空間を復元できない。
430login:Penguin:02/05/29 02:03 ID:WGjCN8PQ
>>429
ウゼェ厨だねお前。
431login:Penguin:02/05/31 22:43 ID:AGbA9dZA
>>409
win32もカーネルベースのスレッド。
つか1スレッドの作成に1msもかからないのね。もっと遅いと思ってた。
432login:Penguin:02/05/31 22:58 ID:sbY2Cg79
5/29(水)〜5/31(金)、「LINUX WORLD」をやっていましたが、
どうでしたか?

行きたくても、行けなかった、へぼな技術者より。
433people:02/06/09 01:09 ID:hI+hJJCq
利ナック巣はノンプリエンティブなカーネルだが、プリエンティブな
カーネルはどうして尾バーヘッドが大きくなってしまうのか
434login:Penguin:02/06/09 04:26 ID:eXI64/k4
2.5カーネルではプリエンプティブ機能も取り込まれてるよ。
コンフィグで設定可能。

オーバーヘッドは大きくなるが、応答性やスループットがよくなる。
435people:02/06/09 17:40 ID:hI+hJJCq
応答性やスループットがよくなる原因は?
436login:Penguin:02/06/26 14:22 ID:knPs+H7Y
437login:Penguin:02/07/27 14:50 ID:YRW6HDbB
保全sage
438ANONYMOUS:02/08/04 19:52 ID:OQzedWlY
age
439つち ◆AdmGVg7c :02/08/05 20:44 ID:Su+a+rqn
てっきり忘れていた。
>>432
のときの資料がここにPDFであります。

http://www.valinux.co.jp/technical/event/va_kernel_forum.html
440login:Penguin:02/08/09 22:24 ID:NfDvV172
Linux Japan の Kernel2.4 解説記事の連載は,
書籍にならないのかな.
441login:Penguin:02/08/10 13:18 ID:RJXz1T6O
最終号で全連載のPDFがCD-ROMに収められたって事は
書籍にならないんじゃない?
連載時からだいぶ時間がたってるから今の2.4カーネルと食い違ってる
ところもあるし。
442login:Penguin :02/09/03 02:51 ID:rckhdKiC
>>435
ハードウェア割り込みにより、
カーネルモードで動作してるプロセスから制御を奪えるからかな。

間違っていたら訂正キボンヌ。
443login:Penguin:02/09/03 04:58 ID:/eCx0MNB
>>442

それは、応答性が上がる説明にはなっても、スループットが上がる説明には
ならんよ。基本的に、応答性とスループットは、チューニングの上では相反
することが多い。特にハード・リアルタイム性の保証というレベルで
応答性を重視した場合、スループットは犠牲になると考えるべきだ。

リアルタイム・カーネルを使ってスループットがもし向上したなら、それは
TSS的手法でのスループット向上の余地がまだまだあるということを意味して
いると考えた方が良い。
444login:Penguin :02/09/03 08:25 ID:rckhdKiC
>>443
激しい突っ込みどうもです。
445login:Penguin:02/09/03 09:05 ID:0hIwx27+
>>441
>連載時からだいぶ時間がたってるから今の2.4カーネルと食い違ってる
>ところもあるし。

改訂版が出る可能性も。
446login:Penguin:02/09/03 09:25 ID:rckhdKiC
>>445
詳細を知りたかったら自分の興味あるバージョンのカーネルの
中に入っていかないとだめでしょ。うちはUnderstanding〜の
2.4 anticipatingでとりあえずは満足です。
447login:Penguin:02/09/04 21:45 ID:LYCQm1JB

PS/2キーボードのaキーを押して端末にaの文字が表示されるまでの仕組み
を教えてくれろ。
448login:Penguin:02/09/04 22:03 ID:Wi+p0yRy
bならおしえてあげる (´ε`)チュッ
449login:Penguin:02/09/05 01:34 ID:DWBmmIUd

その先もきぼん。
450login:Penguin:02/09/05 01:42 ID:OpRaeHU5
>>448
恋のB級アクション か・・・懐かしいな。 かーみーかーぜーのー
451名無しさん@Emacs:02/09/05 06:50 ID:dV7dMjTj
2.4になってからUSBとかかなり使いやすくなったけど
2.6で新しく入る機能でいちばんつかえるものってなにになるんだろ。。
452login:Penguin:02/09/05 07:33 ID:9CK0WvFX
そりゃもちろんACPI対応でしょう。これで腐れBSDより一歩抜きん出た。
453login:Penguin:02/09/05 08:23 ID:jbkaZ2a1
AIBOが/dev/aiboで制御できるようになります。
2.6最大の目玉です。
454login:Penguin:02/09/05 14:29 ID:kYgJBhoQ
AIBOクレ
455login:Penguin:02/09/05 19:35 ID:DWBmmIUd

数年前に最前線UNIXのカーネル読んでみたけど、完全に忘れてるし
全く身についてない。
ソース読んでみても、何をやってるのかは分かるが、その後なんか
生かされたかっていうと、そんなこともない。
Linux Japan のカーネル解説は毎月読んでたけど、読んだだけでは
分かった気がしないし、身についてる気もしない。
単なるコンピュータ好きの理系学生です。

プログラミングするのは好きなんですが、
こーいうのは向いてないのでしょうか?
なんか、楽しくカーネルハックする方法ってないですかね?
456login:Penguin:02/09/05 19:40 ID:PHblvNqM
>>455
まず 2ch に来るのをやめれ。
そしてプログラミング以外の趣味を見付ける事だ。
457login:Penguin:02/09/05 19:43 ID:DWBmmIUd

>>456のいわんとしてることがわかりかねる
458へぼ:02/09/05 22:24 ID:yOuLsem/
>>455
カーネルはいじらないとわかんないとこが多いよ.
たとえば,コンソールに"Helo"と出力するだけのシステムコールを作ってみては?
うまくいったら,次は,cat /proc/helo で "Helo"を出力するカーネルモジュールを
作ってみよう.
459login:Penguin:02/09/06 11:28 ID:pbumUvTr
>>457
学生のくせに偉そうだな。
460login:Penguin:02/09/06 12:53 ID:GXI6GQhX
>>459
園児のくせにえらそうでちゅ..
461login:Penguin:02/09/06 16:26 ID:/rYnSyOH
>458
ありがとうございます。
なんか、温かい言葉をかけてもらって涙ぐみました。
462login:Penguin:02/09/06 17:47 ID:Y7BSSDDG
このスレは絶対、Part2を立てるぞ、ゴルァ!
とりあえず>>970が次スレ立ててくれ。
463970になる予定:02/09/06 18:27 ID:MYpQaAKh
>>462
ヤダ。おまえが立てろ
464login:Penguin:02/09/06 21:40 ID:J1Wkvxow
2.5.xでgrub-0.92で、MBRに書き込む方法教えて。
起動すると、固まるんだ。プロセスがSに成る。
465login:Penguin:02/09/06 21:46 ID:x9S5w6Pj
>>464
2.4.xにする
466login:Penguin:02/09/07 19:50 ID:KVnNwClL
>>465
2.4.xだと書き込めるんだけどね。
みんなLilo使っているのかな。
467login:Penguin:02/09/18 10:38 ID:sPjt+sc2
2.5.35のソースについてのことです。

linux/fs/exec.cのde_thread( )関数内において
wait_task_inactive( )関数を呼び出しているのですが、
この関数はlinux/kernel/sched.cにおいては
CONFIG_SMPで囲われています。
つまり、SMPマシンでないとどうしてもコンパイルエラーが
でるということになりますが、みなさんはどう対処され
ましたか?

問題の関数を呼び出しているところだけCONFIG_SMPとした
だけでいいものなんでしょうか。。。
468login:Penguin:02/09/18 13:00 ID:sPjt+sc2
467です。2.5.36のパッチがさっき出たようです。
とりあえずfs/exec.cの該当個所にも手が入ってるので
それを試してみます。どうもすみませんでした。
469login:Penguin:02/09/20 12:18 ID:DfRVVlpc
新しいスレッドPOSIXスレッドライブラリは
結局 N-on-M モデルではなく 1-on-1 に
なった模様。
470login:Penguin :02/09/22 05:27 ID:qgNMD4Z1
>>469
ソースは?
471login:Penguin:02/09/22 11:36 ID:U79Ebj4m
>>470
冷静に考えても N-on-M を採用するとは考えられないだろ?
理由がわからないならお前はLinux使う価値なし。

まーどうせわかんないんだろうけど(w
472login:Penguin:02/09/22 13:59 ID:uJodz/km
>>471
君もちゃんと勉強して早く理解しようね。
473login:Penguin:02/09/22 18:17 ID:n3nilxsR
本物のPOSIXスレッドライブラリ
http://slashdot.jp/article.pl?sid=02/09/21/1613222
474people:02/09/22 19:02 ID:RIhA1MQQ
N-on-M モデル について解説希望
475login:Penguin:02/09/22 19:15 ID:L7SWaJdw
複数のCPUで複数のスレッドが動くってやつか?
476login:Penguin:02/09/22 19:57 ID:ZMoD+eSk
複数のスレッドを複数のLWPに割り当てるやつ。
477login:Penguin:02/09/22 20:30 ID:EPpsCLH7
スレッドとプロセスって何が違うの????????
478login:Penguin:02/09/22 20:40 ID:ZMoD+eSk
このスレどんどん馬鹿になっていくな。
479login:Penguin:02/09/23 00:11 ID:SuKTDRxG
ベンチマーク来たー

http://www.uwsg.iu.edu/hypermail/linux/kernel/0209.2/1581.html
NPT(NativePosixThread)はNGPTの4倍速いそうだ。
480login:Penguin:02/09/23 02:33 ID:oSMBuhdV
4倍とは穏やかじゃないね。
481login:Penguin:02/09/27 23:32 ID:nDbC1gzq
スレッド NT
プロセス UNIX

482login:Penguin:02/10/05 20:06 ID:IheoajWb
現在カーネルをメンテナンスしている18歳のブラジル人について詳細希望
483login:Penguin:02/10/05 20:25 ID:IheoajWb
ftp://mirrors.unagi.org.uk

REd hat 8 どうなんでしょうか?
484login:Penguin:02/10/05 20:36 ID:CZ0W55rF
485login:Penguin:02/10/05 20:46 ID:IheoajWb
Unix のその他の実装 (AIX または Solarisのような) とは違って、Linux カーネル自
身は、複数のカーネル・スレッドを 1 プロセス内でまとめることができる抽象化機能
を持っていません。代わりに、fork() システム・コール (clone() とも呼ばれる) が
実装され、ユーザーは、子プロセスをその親と同じアドレス・スペースで実行するよう
指定できます。次いで、このシステム・コールは、Linux スレッド化ライブラリーによ
り使用され、ユーザーにスレッド・プログラミングの抽象化機能を提供します。ユーザ
ー・インターフェースの観点から見れば、すべての POSIX スレッド・インターフェー
スは、実際、Linux の下で全面的にでサポートされていますが、実装面では 信号 に
問題があって、完全には POSIX に準拠していません
486login:Penguin:02/10/05 20:52 ID:qui8pQ9v
で Linuxカーネルが、
そのPOSIXとやらに完全準拠するとパフォーマンスが大幅に向上すると?
487login:Penguin:02/10/05 21:02 ID:IheoajWb
488login:Penguin:02/10/05 21:04 ID:CZ0W55rF
NPTL(linuxthreads2)でPOSIX準拠とパフォーマンスの両方が
改善される.待つべし
489login:Penguin:02/10/05 21:43 ID:IheoajWb
Linuxでプロセスとスレッドの違っている部分はどこかといいますと、
タスクを生成する時にメモリと、シグナルハンドラとファイルディスクリプタが
別個の存在になっていればプロセス、共有していればスレッドとなります。
処理単位(タスク)として見た場合だと、扱う側(スケジューラ)からは見分けが
つかないようです。
490login:Penguin:02/10/05 23:40 ID:CZ0W55rF
>>489
kernel内なんかどうなっていても,user spaceが適切な機能を
正しく高速に実現できるような機能を提供できればそれでいいじゃん?
491login:Penguin:02/10/06 02:07 ID:bFXVWfMC
Threads are "light weight processes" (LWPs).
The idea is a process has five fundamental parts:
code ("text"),
data (VM),
stack,
file I/O,
and signal tables.
492login:Penguin:02/10/06 02:21 ID:bFXVWfMC
493login:Penguin:02/10/06 12:28 ID:enH5nZqJ
>>491,492
そのような一般論をお書きになっても、ここは/.JPでは
ありませんので誰もプラスモデレートしてあげられません。
Linuxの方針はアホだとかScheduler Activationや
KSEは所詮論文ネタにすぎないといった殺伐とした
カキコを期待します。
494login:Penguin:02/10/15 00:44 ID:QWvdQZ6c
実は6〜7年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。
確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。
その子のお父さんは「すみません」と恥ずかしそうに謝っていた。

しかし、それだけでは終わらなかった。
俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。
お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が
聞こえてきた。すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。
すると男湯、女湯の両方からくすくすと笑い声が聞こえた。
俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。
その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん
上にいっちゃったの〜、パオーンしてるの〜」と女湯に向かって叫んだ。男湯・女湯同時に
大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。
それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。
俺は逃げ出すようにして銭湯から出て行った。

その日以来、その銭湯へは行かなくなった…。
495login:Penguin:02/10/15 01:28 ID:fNmJTfkz
>>494
なつかしいコピペだな。
496login:Penguin:02/10/20 19:44 ID:ibUwKkfe
Linuxのカーネル勉強ねえ。そんなこと勉強して何かに役に立つ?
そんな時間あるなら、道路工事のバイトでもしてソープ行った方が何倍もいい。
497login:Penguin:02/10/20 19:56 ID:g7nwg/f0
>>496
凄い煽り文句だなあ
498login:Penguin:02/10/20 20:38 ID:IzpswdB0
>>496は”正しい”
適性と本能とを十分に吟味すると・・・
499login:Penguin:02/10/20 21:29 ID:o5SkVp+g
>>496
面白いから許す。
500login:Penguin:02/10/20 21:53 ID:g68BLgUd
>>496
なにをいっておるのか.カーネルをヨム.こんな悦楽は他にはない.
ヨムだけで飽き足らなくなったらカイてみるのだ.
カイたコードがパニックしてみろ.射精する.
コードをカクのは極楽だあ.セックスだあ.
..では今夜も逝ってくる.
501login:Penguin:02/10/22 20:14 ID:AiS+bb4w
悔しいけど、やっぱり496は正しいと思う。
Linuxのカーネルなんかよりも、綺麗なネエチャンとHする方が絶対いいと思う。
つーか、Hするよりも、Linuxのカーネルに触れたいと思う香具師っているの??
502login:Penguin:02/10/22 20:21 ID:nhAAklvz
>>501
そりゃ居るだろうよ。
世の中Hするのが面倒って香具師もいるし。
503login:Penguin:02/10/22 21:16 ID:JDhHENtH
みもふたもない話だ
504login:Penguin:02/10/23 16:12 ID:Y8yrR3XD
500はどう見てもイタ過ぎる。頼むからROMっててくれ
505名無しさん@Emacs:02/10/24 00:42 ID:bb9TFS/Q
ねぇねぇ BitKeeper 使ってる人いる?
506login:Penguin:02/10/24 01:00 ID:ET3a/VkV
>>505 ライセンス大丈夫だっけ?
507login:Penguin:02/10/24 19:57 ID:b/KVmODi
そりゃあセクースしてる時や美味いもん食ってる時は、誰だって幸福を感じるよ。

だけど、四六時中できるもんじゃないし、それだけじゃ、時間が余ってしまう。

だから他の楽しみを見つけるわけだ。音楽でも映画でも、ゲームでも何でもいい。

Linuxだって、いっぱいある楽しいことの中のひとつ。
508login:Penguin:02/10/26 01:12 ID:rW1xbOyc
ここはカーネルの仕組みを勉強するスレです。
509login:Penguin:02/10/26 06:57 ID:D0xVkV9N
勉強して、どうするのですか?
510login:Penguin:02/10/26 15:04 ID:UK314aqB
>>509
そういう質問しないでくれ
511login:Penguin:02/10/26 16:27 ID:hpgBvCrL
勉強しないでどうするのですか。
512login:Penguin:02/10/27 04:11 ID:9Wnyh1Y2
スレッドを作る方法がいまいちわかんない
Pスレッドで作ってもなんかプロセスが見えるんだけど
そういうもんだっけ?
513login:Penguin:02/10/27 10:33 ID:67Tkky68
>>512
cloneで作ってるなら見える。
linux-threadはclone使うし。
514login:Penguin:02/10/27 20:02 ID:9Wnyh1Y2
>>513
(゚∀゚)サンクスコ
Pスッドレは中でclone呼んでるっぽいし
しょうがないのか
515login:Penguin:02/10/29 06:45 ID:JuHHTy9a
LinuxをC++なぜで書かないのかって質問に、カーネル開発者は
・開発初期のg++コンパイラが良くなかった。
・今から書き換えると、(コードの行数を作業時間で割って)とてつもなく無駄だ。
と言う理由らしいのは周知かと思いますが、
実際仮にC++でこれから書いたとしたら、どうなりますか。
実行速度や、開発のしやすさとか、いろいろありますが。
(質問が抽象的でゴメソ)
516login:Penguin:02/10/29 07:58 ID:U+AOr944
このOSはboot部以外C++で書かれてるな
http://sourceforge.jp/projects/higepos
517login:Penguin:02/10/29 14:33 ID:rOSc35bh
2.4.20-pre*
のパッチって、何に当てるんですか?
2.4.20にあてるのかとおもったけど、まだでてないよ
2.4.19にあてるの?
518login:Penguin:02/10/29 14:40 ID:kF5lRjj2
C++でのメリットってあるかなぁ。
519login:Penguin:02/10/29 14:54 ID:3y33Wm74
>>517
ノーミソにでも当ててなさい。
520login:Penguin:02/10/29 14:59 ID:rOSc35bh
>>519
ヒントお願いします
521login:Penguin:02/10/29 15:08 ID:3y33Wm74
>>520
-preのイミをかんがえろ。

ここは勉強スレであって質問スレではない。
522login:Penguin:02/10/29 15:27 ID:rOSc35bh
>>521
pre=前
だから、pre20だったら20個前、pre1ならひとつ前=最新
ということ?
523login:Penguin:02/10/29 15:52 ID:kF5lRjj2
>>247
2.4.20は出てないけど、
2.4.20-preは出てる。
524login:Penguin:02/10/29 16:17 ID:U+AOr944
2.5.44でxconfigしようとするとエラーになるんだが..
525login:Penguin:02/10/29 16:29 ID:bTPS0Lxn
せめてエラーの内容くらい書けや。
何とも言えん。
Tcl/Tkのバージョンが上がったとかじゃないのか?

…あと、開発版カーネルで文句があるならさっさとバグレポートしてcontribute。
526login:Penguin:02/10/29 16:36 ID:rOSc35bh
結論は
2.4.19のソースに2.4.20-pre*を当てるってことか
527名無しさん@Emacs:02/10/29 16:49 ID:7wlFWLa1
528login:Penguin:02/10/29 17:28 ID:rOSc35bh
>>527
そんなのないじゃん
rc*って出てるやつにあたるんじゃないの?
529login:Penguin:02/10/29 18:25 ID:F8Jhdnom
>>528
rc の意味を考えてみレ.それとさぁ >>527 のリンク先見たの?
530login:Penguin:02/10/29 18:32 ID:rOSc35bh
>>529
見たよ。
rcってのもpreと同じく一つ前のにあたるってこと?
531login:Penguin:02/10/29 18:37 ID:rOSc35bh
だいたいマスターした
532login:Penguin:02/11/02 09:32 ID:HLU1eDtI
三連休、リナックスで遊んでるヤツは不幸だと思う。
533login:Penguin:02/11/02 16:08 ID:bV/vZkvY
>> 532
世の中は三連休。リナックスで仕事してる漏れは幸せだね。畜生!
534login:Penguin:02/11/02 16:58 ID:Dd2p8WWe
3連休ってなんのこと?
535login:Penguin:02/11/03 23:04 ID:I26+7Mmp
3Com(R) Megahertz(R) 10/100 LAN PC Card
Product 3CCFE574BT
をサポートするカーネルのヴァージョンが知りたいのですが
いろいろ調べたのにわかりませんでした。
ちなみにSlackware 3.5.0 Ker.2.0.2 です。
536login:Penguin:02/11/03 23:18 ID:YjxntTz6
>>535
スレ違いな気もするが…

まずは対応しているpcmcia-csを調べろ。
カーネルはたぶん2.2以降。
537login:Penguin:02/11/03 23:32 ID:I26+7Mmp
ありがとです。一応2.2以降を調べたんですが。。。
538login:Penguin:02/11/03 23:51 ID:eky+Yott
>>537
手元の pcmcia-cs 3.2.1 の SUPPORTED.CARDS によると
3c574_cs.o で使えるよ。
539login:Penguin:02/11/03 23:54 ID:YjxntTz6
>>537
そいつのドライバが入ってるのは、pcmcia-csだから、
そっちからあたった方がいいよ。
2.4ならkernel pcmcia-csで対応してると思うが。
540login:Penguin:02/11/05 18:27 ID:Mw3FkA2f
皆さんが優秀なハッカーの方たちと見込んでお聞きしたいのですが、
RedHat7.2上でデバイスドライバを作っていて、それを最近リリースされた
RedHat8に移植しようと思っているのですが、何故かコンパイルが
通ってくれません。
自分のソースに不具合があるのかと思い、
ttp://ime.nu/www.hemamu.com/dev/linux/pci/index.html
で公開されているソースをコンパイルしようとしましたが、
それでもできませんでした。

どなたかこのような不具合の解決方法をご存知でしたら、
ご教授下さい。
541login:Penguin:02/11/05 18:36 ID:5JSfVnIm
>>540
たまにあるけど、構造体の定義が変わってるとか。
kernel-headerをインストールしてなかったと言うオチは禁止。
542login:Penguin:02/11/05 18:41 ID:aQPE60cC
>>541
かなり落としてしまいますが、kernel-headerの意味が
わかりません(´д`)
たぶんOSのインストールの際の事だと思うのですが…。
現在のシステムは7.2からのアップグレードで、
少し不安があったのでフルインストール(Up Grage)
しました。
543login:Penguin:02/11/05 20:14 ID:D2HLArIF
kernel-headerの意味が分からなくて、デバドラ作った君に乾杯。
(´・ω・`)
544login:Penguin:02/11/05 20:18 ID:Kq5dWAfB
>>542
Red Hat 7.2 までは kernel-headers パッケージが存在したのだが、
Red Hat 7.3 以降では無くなってしまった。
代わりに kernel-source パッケージをインストールして、
/lib/modules/バージョン/build/include/ にあるカーネルヘッダを使え。
/usr/include/linux/modversions.h も見れ。説明が書いてある。
545login:Penguin:02/11/05 23:12 ID:Unrjw0px
>>542 コンパイルが通ってくれません
であれば、原因しぼれるでしょ。動きませんなら少し難しいけど。そんなファ
イル無いとか、そんなstructのメンバ無いとか、そんなのとちがう?

546login:Penguin:02/11/05 23:20 ID:f6UdnBSq
>>544 カーネルのこと全くわからないのですが、glibc-kernheadersってのは代替じゃないのですか?
547login:Penguin:02/11/05 23:30 ID:iivfSIhp
>>545
ええ、struct inode やstruct file
などのファイルがないと、いわれました。

それだけではなく、file_operationの構成も
違うって怒られました。
その他あげたらきりがないです(爆

エラーの予想は付いていたのですが、OSのインストールの際にも
Kernel開発用のパッケージをインストールしたのですが、
それでもダメでした。
548login:Penguin:02/11/05 23:40 ID:zerF/jtC
>>547
kernel-source パッケージはインストールした?
/usr/src/linux-2.4 を/usr/src/linux にシンボリックリンク張ってる?
549login:Penguin:02/11/05 23:43 ID:iivfSIhp
>>548
あります。
ちなみに7.2でコンパイルしたデバドラを
-f オプション付きでinsmod したら組み込むときに
文句をいわれましたが、正常に動作してくれました。
550login:Penguin:02/11/05 23:47 ID:5JSfVnIm
>>549
/usr/src/linux/include/asm
ある?
なかったら、そこでカーネルを一回作る。
551login:Penguin:02/11/05 23:48 ID:iivfSIhp
549です。
しかしMakefileなどを使って自動的に
インストールできるようにしたいので、
コンパイルの必要性が出て来たのです。
552login:Penguin:02/11/05 23:51 ID:iivfSIhp
>>550
すいませんが、今すぐには確認できません。
そこでKernelを一回作るというのは、現在の
Kernelを再構築する、ということでよろしいのですよね?
そうするとasmディレクトリが構築される、
と言う解釈でよろしいでしょうか?
553550:02/11/05 23:58 ID:5JSfVnIm
>>552
そう。
configだけでもいいんだけど。
再構築しておけば、いろいろ試せるはず。
554login:Penguin:02/11/06 00:02 ID:yIb370Cf
>>553
make configですね。
では試してみます。
ありがとうございました。
555login:Penguin:02/12/18 21:52 ID:2+/TSmSd
ここまで読んだ。
カーネルを全然知らない香具師がデバイスドライバを作ったと主張
する珍妙なスレであった。
556login:Penguin:02/12/18 23:47 ID:cj+DVOLQ
どのソースから読み始めましたか?
557Tovacox:02/12/19 00:00 ID:D9IEsFe0
./kernel/sched.cですね。
とりあえずカーネルの中身を見るときなどは、
なぜか。
%emacs kernel/sched.c
って打ってしまいます。。。
558login:Penguin:02/12/19 00:22 ID:bALO5RwS
>>556
init/main.cだったと思います。基本ですね。
最初に読んだのは1年以上前なので、よく覚えてないなー。
最近はarch/某archとかinclude/asm-某archしか見てません。
559login:Penguin:02/12/22 14:09 ID:ouHor4+l
>>556
grep -r cache kernel
だったかと。
いやね、freeで表示されるbufferとcachedの違いがわからなくてさ。
560login:Penguin:03/01/05 01:38 ID:CxZrKX7Y
スレ間違えたのでここで質問します。。。
Kernel構築してるんですが、ほとんどmoduleにしたらbzImageが2MB位。
そのmoduleってどこにあるんですか?
561login:Penguin:03/01/05 02:25 ID:bcfTdkeO
>>560
くだ質で聞け。
562login:Penguin:03/01/05 18:21 ID:qGyrapmd
ほとんどモジュールにして、
どうして2Mもいくのかが不思議だ、、、
563login:Penguin:03/01/05 18:39 ID:CxZrKX7Y
2.5.54だからかな...
564login:Penguin:03/01/06 02:25 ID:polLPkwq
FreeBSDなのでスレ違いかもしれませんが、、、
カーネルを間違って、削除してしまいました・・・(TT;
(ファイルを整理していたら、誤ってrm /* を実行してしまったようです。)

カーネルを修復する方法はありますでしょうか??

当然の如く、再起動したらカーネルが見つからないと言われ、起動できなくなってしまい。
WEBで調べましたが、再構築の情報ばかりで、削除してしまった場合の対処方法はあまり載ってませんでした・・・

重要なデータが残って、仕事に影響が出るので、再インストールは避けたいのですが、
すいません、助けて下さい。。。
565login:Penguin:03/01/06 02:40 ID:+ybouD2I
>>564
スレ違いじゃなくて板違い
http://pc.2ch.net/unix/

rootでファイル整理か。おめでてーな。
566login:Penguin:03/01/07 16:55 ID:YuiOuLjn
567login:Penguin:03/01/09 02:42 ID:2Y8NA8K9
IPの記録はまじでやめてほしい
568login:Penguin:03/01/09 04:13 ID:qciTMwbB
泣くなよw>ID:ZBsKvw39
569login:Penguin:03/01/13 21:12 ID:+j4oRwV/
Kernel 2.4.20でUDFのPacket Writeを有効にしたいんですが、
どうしてもチェックが入りません。なんで?
570login:Penguin:03/01/13 22:30 ID:oIjkg+Y+
>>569
CONFIG_EXPERIMENTALを有効にしないとダメらしいが。
571login:Penguin:03/01/13 23:53 ID:+j4oRwV/
>>570
くだらないこと聞いてスマソ。。。
572山崎渉:03/01/15 11:22 ID:dWXij4Sa
(^^)
573login:Penguin:03/01/17 22:57 ID:quy9Xyzw
全貌を現したLinuxカーネル2.6[前編]
 〜 エンタープライズ向けに刷新されたカーネル・コア 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_01a.html
574login:Penguin:03/01/17 23:37 ID:eB0uQzq3
>>573
未来の日付が。。。
575login:Penguin:03/01/18 01:25 ID:xFnceJeM
>>574
あそこはいつも翌日の日付を付けてるみたいだ。
こまかいことは気にせず、まぁ読んでみ。

あ、図が動いてる。
576login:Penguin:03/01/20 12:36 ID:+ihWiA7A
後編期待age
577login:Penguin:03/01/26 14:47 ID:/P1ziCIb
これのPDFはよさゲです。
http://slashdot.jp/linuxkernel/03/01/23/0722212.shtml?topic=2

Understanding the Linux Kernel, 2nd Edition(第二版です)
http://www.oreilly.com/catalog/linuxkernel2/
578henoheno ◆g2j80BX5do :03/02/05 04:36 ID:az2yyDu5
こんにちは。

 MINIX, Linux 0.x / 1.x, ITRONの様な、主に参照しにくい
ソースをCVSリポジトリに入れてWWW上で公開しています。
 CVSリポジトリの実体も別の場所で公開しています。
学習・実験用にご自由にお使い下さい。

 ttp://minix-up.sourceforge.jp/cgi-bin/l.cgi/

※上記にある全てのリポジトリは下記ツールのための
 テストビルドであり、正確さを保証するものではありま
 せん

 ttp://cvsknit.sourceforge.net/
579554:03/02/10 09:52 ID:XA+hpjDH
>555
今日久々にコンパイルの問題を考えてみました。
するとnetでgccの代わりにkgccを使えばいいとあったので
つかってみたら、何の問題もなくコンパイルできました。

カーネルを全然知らない香具師のぼくには、何でかの原因は
わかりませんが、とにかく解決してよかったです。

以上報告終りです。
580login:Penguin:03/02/10 11:16 ID:Ytep6YkN
>>579
赤帽ですか。
gccのバグに引っかかって失敗すると言うやつですな。

581login:Penguin:03/02/22 01:02 ID:Aw4V0i4X
全貌を現したLinuxカーネル2.6[中編]
〜 サポート・アーキテクチャ/デバイスの拡充 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_02a.html
582login:Penguin:03/02/22 05:16 ID:IqNw328W
こんにちは.
最近カーネルの勉強をし始めました.バージョンは2.4.18です.

手始めにprocファイルシステムのインターフェースを使って,
タイムエポックからの経過時間を読みとるモジュールを書こうと思っています.

で,時間に関するグローバル変数xtimeの定義を調べると,
/usr/src/linux/include/linux/sched.hにexternで外部参照しています.
http://lxr.linux.no/source/include/linux/sched.h?v=2.4.18#L576
これはどこのやつを参照しているのですか?
/usr/src/linux/kernel/timer.cのやつでしょうか?
http://lxr.linux.no/source/kernel/timer.c?v=2.4.18#L35
timer.c:35 struct timeval xtime __attribute__ ((aligned (16)));
というか,カーネルヘッダファイルの変数はexternで参照しているやつが多いですが,
それは何か理由があるのですか?
583login:Penguin:03/02/22 06:21 ID:OJUfFhm2
> これはどこのやつを参照しているのですか?
そこで正解。
基本的にカーネル内は一つの名前空間で作るので、どこのxtimeもそこを参照します。
> それは何か理由があるのですか?
.h といえば extern か static inline だろー。それ以外に何を期待したの?
584login:Penguin:03/02/22 15:40 ID:RdpbwtMM
レスありがとうございます.
>583
>.h といえば extern か static inline だろー。それ以外に何を期待したの?
externは「参照」であって「定義」ではないわけですよね.
なぜヘッダファイルでexternをつけないで「定義」していないのかなあと思いまして.
__attribute__で16バイト境界にxtimeを割り当てるのは.hファイルではできないとか?
static inlineって普通のstaticとどう違うのですか?
585login:Penguin:03/02/22 19:31 ID:U6el7Ruf
>>581
またアニメーションGIFが使われとるね。
後編が楽しみage
586login:Penguin:03/02/22 20:48 ID:mMuNz1JW
>>584
そもそもexternなんて付けなくてもいいんだから。
けど一応付けとくのが作法とされてるだけでは?
587>586:03/02/22 22:05 ID:kUvFWPe5
C言語では,
何も付けずに外部変数を宣言→実際にその変数のために記憶領域を割り当てる=定義
externをつけて外部変数を宣言→その変数のために記憶領域を割り当てない=参照
というのがルールですよね?
その意味で付けると付けないのとは全く意味が違うと思うのですが・・
(実際にminixではEXTERNというマクロを宣言して区別しています)
それともLinuxは特別なルールがあるのでしょうか?
588login:Penguin:03/02/22 22:57 ID:VOGO6EsT
>>587
.hの中で実体を定義すると、二ヶ所でインクルードした時悲劇がおきます。
と言うことでいいのかな?
気にした事ないけど、.hでは実体を作らないルールなんでしょうね。
589>588:03/02/23 01:52 ID:6VcEAka+
>気にした事ないけど、.hでは実体を作らないルールなんでしょうね。
そうなのですか.ありがとうございました.
実体の定義が一カ所にまとめられていないのを初心者なので何となく気持ち悪く思って.
ここの掲示板は親切に答えてくれる人が多いのでいいですね.
他に日本語でカーネルに関するページ
(JFなどの一般的な情報ではなく疑問を掲示板などで活発に議論しているところ)
を教えていただけると嬉しいです.
590login:Penguin:03/02/23 20:25 ID:7b0qPt9M
>>584
そのexternの行はきっと参照ではなく宣言です。プロトタイプ宣言。
宣言は .h に
定義は .c で .hをインクルード(このときexternは嘘だが無視)
参照は .c で .hをインクルード
だろー。
なおstatic inline は、externに定義/参照されない真のinlineですよ。
だから 実体を定義をしてはいけない .h 内に書いても大丈夫。

>>587
嘘を無視なのでEXTERNはつかわないみたい。
ただし、extern inlineの場合は一箇所で定義して、他で参照しないといけな
いので、EXTERN_INLINE をdefineする例があるみたい。asm-alphaあたり参照。
591login:Penguin:03/02/23 20:27 ID:7b0qPt9M
>>589 補足
あ、「linuxのカーネルでは」という話ね。嘘を無視するかどうかは特に。
592>590,591:03/02/23 23:24 ID:OBPg6wzG
「嘘を無視する」というのはexternを使って参照宣言をしたくせに,
実体定義を同じモジュールでやるということですよね?
593login:Penguin:03/02/24 00:53 ID:7yiUwah3
>>592
うん。そういう意味(外と宣言しておきながら中で定義をする)で使ったの。
Cの仕様もgccの仕様も読んだことないので、正しくないのかどうかは知らないの。

594login:Penguin:03/02/24 16:17 ID:sjK/nEKg
>>593
ありがとうございました.
595login:Penguin:03/02/25 23:59 ID:o0sc4vrn
カーネルの前にC言語を勉強するひつおうがあるのではないかもし
596login:Penguin:03/02/26 05:17 ID:xM3Oh9Db
自分で書いたカーネルモジュールがコンパイルできません.
自分で書いたコードより以前のヘッダファイルで大量のエラーが出ます.
kernel-sourceもkernel-headersもあるし,includeファイルもリンクされているのですが・・
(以下statの出力の抜粋)
File: "/usr/src/linux" -> "linux-2.4.18"
File: "/usr/include/asm" -> "../src/linux/include/asm"
File: "/usr/include/linux" -> "../src/linux/include/linux"
何かファイルがないのかと思い,試しにカーネルをコンパイルしてみましたが,
何の問題もなくカーネルイメージを作成できました.

ネットで調べてみましたが,コンパイルでつまずくことはあまり無いらしく,
原因を突き止められませんでした.
また,ネット上のカーネルモジュールのサンプルコードを使ってコンパイルしたときも
ヘッダファイルに大量のエラーが出て,コンパイルできませんでした.
考えられる原因は何でしょうか?
どうか宜しくお願いします.
597login:Penguin:03/02/26 06:20 ID:aNK4cICn
-I/usr/src/linux/includeを付けるとコンパイルできました.馬鹿すぎる・・
すいませんでした.あまり本は信用できませんね.

ってか,シンボリックリンク張ってるのになぜ??
598login:Penguin:03/02/26 06:26 ID:awPWSoM5
>>597
$ man gcc
$ info gcc
599login:Penguin:03/02/26 22:59 ID:5ThntVhs
>>598
マニュアルは質問する前に読みました.
問題は"/usr/include/linux" -> "../src/linux/include/linux"
というシンボリックリンクが張られているにも関わらず,
gccで-Iオプションを付ける必要があったということなんですが・・
600login:Penguin:03/02/27 00:58 ID:1e6KPqQp
私も同じsymlink貼ってあるけど-Iなしでちゃんと動くよ?
601login:Penguin:03/02/27 04:16 ID:a1jqWrjy
>>600
はい.カーネル本やサイトでのコンパイルの書式にも-Iオプションは含まれていませんでした.
シンボリックリンクがあるから当然なことかもしれませんが.
カーネルコンパイルの時にモジュールもコンパイルしたのですが,その時には-Iオプションを
付けていたのでもしかしたらと思い,-Iオプションを付けるとコンパイルできたのです.
602login:Penguin:03/02/27 13:43 ID:t9JDv6rv
>>>601
リンク張った先がincludeの検索パスに入っていなかったとか。
603login:Penguin:03/02/27 21:05 ID:K7wez/ac
>>602
/usr/includeがパスに入っていることは確かです.
他のユーザプログラムはちゃんとコンパイルできましたから.
/usr/includeがパスに入っていれば#include <linux/kernel.h>とすれば,
/usr/include/linux/kernel.hがインクルードされると思うのですが・・
で,"/usr/include/linux" -> "../src/linux/include/linux"なので,
/usr/src/linux/include/linux/kernel.hがインクルードのはず.謎です.
604login:Penguin:03/02/27 22:07 ID:U6VMdoGi
>>603
asmは?
605login:Penguin:03/02/27 23:34 ID:ysi2QcED
"/usr/include/asm" -> "../src/linux/include/asm"
"/usr/src/linux/include/asm" -> "asm-i386"
です.ちなみに今回のモジュールは>>582のやつです.
asmはincludeしませんでした.
コンパイル後は正常に動作しています.
606login:Penguin:03/02/28 00:14 ID:oFO1qwF8
>>605
おぷしょんは? -nostdinc がついてるとかいわない?
607login:Penguin:03/02/28 03:36 ID:Ph9QX781
>>606
-Iオプションを付けない場合のエラーの行数が膨大すぎてよくわかりません.
出力のリダイレクトもできないようですし・・・
試しに-nostdincを付けてコンパイルするとincludeファイルが無いという
エラーが出るだけです.
608login:Penguin:03/02/28 12:46 ID:oFO1qwF8
>>607
ちょっとまった。
もとのエラーはなに? includeファイルがないってエラーじゃなかったのかな?
それと、リダイレクトなら make >& ファイル でできるとおもう。
609login:Penguin:03/02/28 13:55 ID:ij45/eSj
>>608
includeファイルがないので、そこでの宣言に依存する部分が
山ほどエラーになるって事では?

>>607
リダイレクトするなら、-v付けて途中経過も見れた方がいいかも。
610login:Penguin:03/02/28 16:12 ID:HFAciNpD
>>608
>もとのエラーはなに? includeファイルがないってエラーじゃなかったのかな?
はい.ヘッダファイル内での大量のparse errorやundeclaredです.

>>608,609
結局端末のスクロール行数をでかくして見てみました.エラーは
/usr/include/linux/kernel.h:73: parse error before `size_t'
/usr/include/linux/kernel.h:75: parse error before `size_t'
/usr/include/asm/string.h:47: parse error before `size_t'
/usr/include/asm/string.h: In function `strncpy':
/usr/include/asm/string.h:61: `src' undeclared (first use in this function)
/usr/include/asm/string.h:61: (Each undeclared identifier is reported only once
/usr/include/asm/string.h:61: for each function it appears in.)
/usr/include/asm/string.h:61: `dest' undeclared (first use in this function)
/usr/include/asm/string.h:61: `count' undeclared (first use in this function)
.....という感じです.
611login:Penguin:03/02/28 18:52 ID:Mjgg1ddG
>>610
わかったよ、ママン
612login:Penguin:03/03/01 00:24 ID:jndZSd0z
>>610
/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
ユーザプログラムで使うヘッダだよ。

あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
613login:Penguin:03/03/02 03:29 ID:Lshpa1Id
>>612
>/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
>ユーザプログラムで使うヘッダだよ。
そうだったのですか.
カーネル空間のプログラムを作るときは使うべきではないのですね.

>あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
そうします.リンク先をミスするのを防ぐためですね.

ありがとうございました.
614login:Penguin:03/03/02 05:04 ID:FJ0TV1/o
>>612
マジスか。知らんかった・・・
というかどこかで
/usr/include/linux -> /usr/src/linux/include/linux
とすべし というのを見たことがあったので鵜呑みにしてた
ちょっと調べるかな
615login:Penguin:03/03/02 14:03 ID:Oyof/yxm
カーネルのincludeのなかでも、カーネル用とユーザでも使う定義と混在して
いて#ifdef KERNEL 等できりわけてあるの。で、glibcとkernelの開発が順調
ならここは同期するので、コピーしてもいいのですよ。
新しいカーネルで古いglibcを使うとかなると、だめになる状況が発生するの。
glibc はパッケージ化するときに glibc-kernelheaders として、その glibc
をコンパイルしたときに期待したカーネルのヘッダをとりこむので、どっちかっ
ていうとこっちを使ったほうが安全だけど、基本的にはlibcはカーネルと合せ
てつくらないとだめです。
616login:Penguin:03/03/10 22:33 ID:/SdozaOc
全貌を現したLinuxカーネル2.6[第3章]
 〜 ファイルシステム/ボリューム管理機能の進化 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_03a.html
617 :03/03/10 22:36 ID:2NUIK5HA
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/
618login:Penguin:03/03/17 21:44 ID:7QyIeJjo
全貌を現したLinuxカーネル2.6[第4章]
〜 IPv6、UML、セキュリティ機能の統合 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04a.html
619login:Penguin:03/03/19 03:08 ID:suPCGW2S
2.4把握もしてないのに…厳しい
620login:Penguin:03/03/19 11:34 ID:N7reRNVS
オライリーの「詳解Linuxカーネル」で勉強中なのですが、
この本はKernel2.2用にかかれています。
2.2を学んだあと、2.4になって変更された部分などを知るのに適した
書籍などってありますでしょうか?
621login:Penguin:03/03/21 00:19 ID:DvPk6Xi8
まずはコレでも読んでおいて
http://www.changelog.net/log/1999/special/wwol2.4/
622Jet Charles:03/03/25 20:22 ID:Px5e54WH
カーネルモジュールに定義する関数で大きめの構造体を渡す
とときどきpanicになってしまいます。再現性が低いのですが

構造はstruct {unsigned int spectrum[2048],int start,int end};
な感じです。

ポインタで渡すことにしたら問題は無くなったかに見えるのですが、
いまいちピンとしません。

C言語ではこういう配列わたしちゃいけないのですか?(仕様など)
or
カーネルではいけないのですか?(サイズなど)

ユーザスペースで動くテストプログラムはうまく走るので
バグ混入を恐れつつ開発継続中。

どなたかご存知の方がいればよろしくお願いいたします。
623login:Penguin:03/03/25 21:03 ID:fjRYSSzY
>>622
カーネルスタックはそんなに容量ないです。
でかい領域が欲しければ、素直にkmallocしましょう。
624名無しさん@Emacs:03/03/25 22:11 ID:7wu3YUNo
>>622
カーネルスタック小さいからだめ。Cの仕様ではかまわない。
でもね。実際的にはだめ。コストを考えなさい。
625Jet Charles:03/03/27 06:23 ID:Kwn8SiQb
ありがとう。>623、624
おかげで不安は減りました。
スタックのサイズは同時にはしる全てのモジュールが
関わるにもかかわらず、OSが落ちるというのも考え
ものですね、、
626login:Penguin:03/03/27 08:09 ID:10DBd27v
>625
なんのためのオープンソースなのですか?このプロセスがあるから、
キミのような腐ったモジュールが排除されるのです。
lkmlでは自動的にスタックをたくさん使っている関数を列挙するツールや、
それで見付かったスタック喰いの関数の書き直しを精力的にやってますよ。
627名無しさん@Emacs:03/03/27 08:11 ID:AAL7v3K2
>>625
確かに、ユーザ空間のようにスタックを保護してくれると便利かもしれないの
ですが、OSだったりファームウェアの場合は必ず、ユーザアプリも多くの場合
は、スタックの量を、事前にちゃんと設計しないとだめです。
それに、残念ながら、Linuxではドライバは、スタックに限らず、どんな破壊
工作でもできるので、スタックだけ保護してもさほど意味ないのですよ。弱ー。
628login:Penguin:03/03/27 13:25 ID:mo6iAXIT
>>625
ドライバでそういう事するのが、そもそも間違っているという説もあります。

>>627
カーネルとドライバが同じ権限で動いている限り、どのOSでも避けられない問題のような気がしますが。
629login:Penguin:03/03/28 14:56 ID:LjzZGjYj
>>628
2.6からなんとかする模様
630名無しさん@Emacs:03/03/28 23:27 ID:tgiw/vfZ
>>627 > カーネルとドライバが同じ権限で動いている限り、どのOSでも避けられない....
うん。つまり、カーネルとドライバが違う権限で動いているOSでは避けられる。
631名無しさん@Emacs:03/03/28 23:28 ID:tgiw/vfZ
あうん。レス先まちがった。>>628 の誤記。
632山崎渉:03/04/17 12:11 ID:PWISM87M
(^^)
633山崎渉:03/04/20 06:09 ID:X64WTq1+
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
634login:Penguin:03/05/04 17:20 ID:ide68tWq
そろそろ、2.6の季節なのですが。
635login:Penguin:03/05/06 20:57 ID:/f1wWtEt
http://japan.linux.com/kernel/
にLinuxカーネルについての解析資料が移動したらしい。
636login:Penguin:03/05/14 17:38 ID:+1wC02Dw
インテル C++ コンパイラ で最適化したバイナリ群で構成されたディストリビューションってありますか?
あるいはgccでガチガチ最適化カマしたやつとか。
637ヽ(´ー`)ノ:03/05/15 09:38 ID:MQgHohK4
>>636
Intelコンパイラは知らないけど、gcc で最適化するのなら自分でリビルドすればいいのでは?
イマドキのマシンなら30分くらいで終わるっしょ。

// 俺のじゃ丸半日掛かるけどなー
638login:Penguin:03/05/15 20:15 ID:tl6lLPOq
>636

そんな貴方にGentooLinux

(iccも使える、、と思うけど、そっちはよーしらん)
639login:Penguin:03/05/15 21:50 ID:fOOiJy16
>>636
なぜCではなくC++? なのかは置いておいて、
今のバージョンのintel C compilerだとLinux kernelがコンパイルできんので無理。
というか羊頭狗肉になっちまう。
次期バージョンでkernelがコンパイルできるようになったら
それを売りにするディストロも出てくるかもな。

gcc最適済ディストリは今は無き?stampede Linuxがやってたが、
gentooとかなら自分でできるだろ。
640山崎渉:03/05/22 02:18 ID:VfjbtMwi
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
641login:Penguin:03/05/24 02:05 ID:pFXNmjMb
プロセスディスクリプタ構造体task_structに新しいメンバを加えたいのですが,普通に加えても大丈夫でしょうか?
ソースのコメントに「これらのオフセットはハードコードされている.注意して扱うように.」みたいなことが書いてあるのですが.
642login:Penguin:03/05/24 02:12 ID:B4Q+JvDP
>>641
忠告に従ったほうがいいかも。
どっかの地雷をふむかもしれないよ。(w
643login:Penguin:03/05/24 02:46 ID:Ac66WbG3
>>641
archによる。
アセンブラのコードで直接見ていることがある。
Cの方はオフセットがずれて困るところはないはず。

644login:Penguin:03/05/24 03:01 ID:B4Q+JvDP
>>643
いぁ、ちょと見てみたんだが。
Cでtask_struct構造体ポインタに対してaddする個所があった。(ちなみにi386ね)
grepしてみたけど修正してできない量ではない。
けど、結構気をつけないといけないかも。
645初めて:03/05/24 11:12 ID:3ITeRmp+
今カーネルの再構築しているのですが、
何度やっても
Uncompressing ... Ok,booting the kernel.
で止まってしまいます。
理由がわかりません。
なにかチェックする項目を飛ばしているのでしょうか?
2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。

これだけでの情報では原因を推測することは無理でしょうか?
OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
どなたかアドバイスを頂けないでしょうか?
よろしくお願いします。
646643:03/05/24 11:21 ID:Ac66WbG3
>>644
そんな所あったっけ?
しばらくi386依存部分は触っていないから、記憶が薄れつつあるなー。

>>645
おとなしく2.4.20を使う。
2.5.69はハードウエア構成によっては、そういう問題がおきます。
647login:Penguin:03/05/24 14:44 ID:im3d3bk6
>>645
問題が起きたらデバッグしてください。2.5シリーズというのはそのためのものです。
648644:03/05/24 15:13 ID:PMIRyT6T
>>646
copy_thread関数での以下の個所

int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
    unsigned long unused,
    struct task_struct * p, struct pt_regs * regs)
{
    struct pt_regs * childregs;

    childregs = ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1;
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ここ
649644:03/05/24 15:31 ID:PMIRyT6T
>>645
>2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。
>これだけでの情報では原因を推測することは無理でしょうか?
>OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
make oldconfigではなくmake mrproperからmakeしてみては?
650643:03/05/24 17:06 ID:Ac66WbG3
>>648
ああ、それか。
先頭アドレスを使うだけなので、サイズが変わっても問題なし。
651644:03/05/24 19:06 ID:PMIRyT6T
>>650
ん、そうか。
これは、最適化するためのページサイズでのコピーか。
スマソ
652645:03/05/24 19:30 ID:3ITeRmp+
すいません。初歩的な質問なのですが、
make oldconfig
というのは、
そのフォルダにある、.configをもとにして足りない所を補い,新たな.configを
作成するというのであっているのでしょうか?
そのとき作成にしようした.configはoldとかにリネームして。

よろしくお願いします。

653login:Penguin:03/05/24 19:43 ID:b1IFVpVt
>>652
linux/scripts/Configure
読みなされ。
足りないところは聞いて来るはずだが。

>>645 の症状ってカーネル2.2の時の経験だと、
以降のboot messageがserialに出力されていた事があるけど、
これって2.4の話? 2.5の話?
654643:03/05/24 20:17 ID:Ac66WbG3
>>650
じゃなくて、お子さまプロセスのカーネルスタックの位置を計算しとるのですよ。
んで、計算した所に親の情報をコピーすると。

>>653
2.5はKconfigになってもーたので、scripts/Kconfig/confです。
挙動は変わらんが。

シリアルコンソールは、起動時に"console=〜"渡さないと有効にならないと思ったが。
655644:03/05/24 21:10 ID:PMIRyT6T
>>654
((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1;
これって親のtask_structからレジスタ情報を取得してるってこと?

で、
struct_cpy(childregs, regs);
親プロセスの現レジスタを子スレッドのレジスタにコピーして、

childregs->eax = 0;
childregs->esp = esp;
子スレッドのスタックを初期化して、

p->thread.esp = (unsigned long) childregs;
p->thread.esp0 = (unsigned long) (childregs+1);
親のスレッドスタックに生成するスレッドとその次のスレッドを設定して、

p->thread.eip = (unsigned long) ret_from_fork;
親スレッドの実行開始ポインタにcloneの戻り値を設定して、

savesegment(fs,p->thread.fs);
savesegment(gs,p->thread.gs);
親スレッドのセグメントレジスタを子スレッドに設定して、

unlazy_fpu(current);
struct_cpy(&p->thread.i387, ¤t->thread.i387);
ここらがよくわからんが。

ってこと?
656645:03/05/25 00:25 ID:XrZOXyc/
646,647,649,653の皆様、お答えいただきどうもありがとうございました。
657643:03/05/25 00:59 ID:Ix3J6K8u
スレタイらしい話しになってきたな。

>>655
> ((struct pt_regs *) (THREAD_SIZE + (unsigned long) p)) - 1;
自分のスタックのアドレスを計算してるのです。
task_structのアドレス=カーネルスタックの先頭アドレスなので、
そこにサイズを足してカーネルスタックの最終アドレスを求めて、
これからセットするデータの分だけ手前にもどす。

> struct_cpy(childregs, regs);
正解。

> childregs->eax = 0;
> childregs->esp = esp;
> p->thread.esp = (unsigned long) childregs;
> p->thread.esp0 = (unsigned long) (childregs+1);
大体正解。cloneの戻り値はeax

> p->thread.eip = (unsigned long) ret_from_fork;
自分に制御が回ってきた時、ret_from_forkから実行開始。

> savesegment(fs,p->thread.fs);
> savesegment(gs,p->thread.gs);
正解。

> unlazy_fpu(current);
> struct_cpy(&p->thread.i387, ¤t->thread.i387);
コプロのレジスタをコピーしているのです。
658641:03/05/26 12:16 ID:L9Tg8SeE
>質問に答えてくださった方々
ありがとうございました.
皆さん凄いっすね.
659login:Penguin:03/05/26 22:52 ID:IXHBibv2
make のときのメッセージの出し方が変わったね。
CC kernel/timer.o
CC kernel/user.o
みたいな感じでなかなか新鮮
660_:03/05/26 23:12 ID:5mPv2JRl
661bloom:03/05/26 23:13 ID:8OPOVfmH
662login:Penguin:03/05/27 00:44 ID:Tx2/4y2m
>>659
そのへんもだいぶ変わったからねえ…
make depなくなったし。Makefileの書き方も変わったし。
まあ、そのへんはどうでもいいんだけど、Kconfigの書き方が未だによくわかりません。
昔のドキュメント位詳しい物を早く書いてくれ。
663login:Penguin:03/05/28 02:46 ID:ZVfjfeIZ
2.4系でシステムコールをインターセプトしてコンソールに文字列を出力するモジュールを書きましたが,
うまく動作しません.
664login:Penguin:03/05/28 02:55 ID:ZVfjfeIZ
すみません.663は僕です.
以下がソースです.
#define MODULE
#define __KERNEL__
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <sys/syscall.h>
MODULE_LICENSE("GPL");
int (*real_setuid)(uid_t);
extern void *sys_call_table[];

int new_setuid(uid_t uid){
printk("system call was intercepted(setuid).\n");
return (*real_setuid)(uid);
}

int init_module(){
real_setuid = sys_call_table[SYS_setuid];
sys_call_table[SYS_setuid] = (void *)new_setuid;
printk("system call intercept(setuid) attached.\n");
return 0;
}

int cleanup_module(){
sys_call_table[SYS_setuid] = (void *)real_setuid;
printk("system call intercept(setuid) detached.\n");
return 0;
}
このモジュールをinsmodで組み込んでsetuidを実行する簡単なプログラムを実行してみましたところ,/var/log/messagesには意図した文字列が出力されません.
自分でもがいてみましたが,原因が分かりませんでした.どなたかご教授お願いします.
665山崎渉:03/05/28 16:40 ID:4u9ffZfO
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
666login:Penguin:03/05/28 20:52 ID:c/4bMbQp
>>664
モジュールから上書きしていいものかどうか知らないけど、

int init_module(){
real_setuid = sys_call_table[SYS_setuid];
sys_call_table[SYS_setuid] = (void *)new_setuid;
printk("sys_call_table=%p,sys_setuid=%p,new_setuid=%p\n"
,sys_call_table,sys_call_table[SYS_setuid],new_setuid);
printk("system call intercept(setuid) attached.\n");
return 0;
}

みたいにして、予定通り書き変わっているか確認するしか無いでしょう。
667login:Penguin:03/05/29 06:56 ID:4nmgTop1
(・∀・)renice!
668_:03/05/29 07:04 ID:yrkPpXVA
669bloom:03/05/29 07:13 ID:pdJrRzE3
670login:Penguin:03/05/30 22:16 ID:fuM2ZNep
このスレなんか息吹き返してますな
671login:Penguin:03/05/30 23:09 ID:XCgqHAqg
最近もうカーネルの勉強する暇が無いよ。トホホ…
672直リン:03/05/30 23:13 ID:t6UbAlau
673login:Penguin:03/05/31 03:10 ID:DvCwdjkR
OpenBSDで"スタック領域実行不可能"っていう技術が取り込まれたらしいけど、
i386系はMMUで実行権限の可、不可ってできなかったように
思えたけど(実際には読み込み権限と書き込み権限があって、読み込み権限=実行権限)
実際、OpenBSDはどういう実装なんでしょうかね?
674login:Penguin:03/05/31 10:26 ID:pCrUKetP
>>673
i386は実装中じゃなかったっけ?
思い付くのは、P落としておいて例外処理でごにょごにょ…って激しく遅くなりそう。
675login:Penguin:03/06/02 04:39 ID:CgaTSeAj
>>666
ありがとうございます.
やっぱりちゃんとアドレス自体は書き換えているようです.
で,他のシステムコールは正常にフックしています.setuidだけ(全てを確かめたわけではありませんが)が変なようです.
ライブラリを使わずに直接例外でsetuidを発行するとフックできました.
glibcのソースを見てみましたが妙なところは見あたりません.フツーのスタブのようです.
他のユーザID変更のシステムコールを使って発行しているのかな,とか思ったりします.
いずれ確かめます.
676login:Penguin:03/06/02 15:53 ID:Sji9M+OK
ある負荷のとても高いサーバで、sysstatで監視をしだしたら午前5-6時に
RT signalを100%使い切るという結果がでてます。。。
loglotateでこーなるのか???
RT signalってなに??
いろいろ探してみたのですが、なんでかわかりません。。。
だれかおしえてください。すみません。おねがいします。
677login:Penguin:03/06/02 15:58 ID:mduTnBfC
スレ違いでつが?
678login:Penguin:03/06/02 16:10 ID:Sji9M+OK
すみません。聞き直します。

RT signal = リアルタイムシグナル と想定、

http://www.mmjp.or.jp/sunami/linux/kernel/ によると、

なんらか(ソフトウェア、ハードウェア)のシグナルの割り込み処理が
いっぱいいっぱい発生しているものと理解。

loglotateなどディスクをすごく使いそうな処理でこういう自体が
発生しているものと予想。

カーネルにとってRT signalのリミット100%を使い切るような処理
は日常茶飯事であって別に心配するこたぁないのか。
なんらかの対策をするべきことなのか、知りたいのです。

/proc/sys/kernel/rtsig-max が現在1024ですが、使い切っている
から安易に調整するべきものなのか、それとも運用を変えるべきなのか。。。
679login:Penguin:03/06/02 17:20 ID:tEGqhx7S
早朝にslocateとか動いてるんじゃないの?cron.dailyなんかのスクリプト
はずせば?

俺、リアルタイムで画像を記録するサーバ書いたんだが、slocateとかの
おかげで取りこぼしがでたからスクリプトはずしたよ。
680login:Penguin:03/06/12 03:53 ID:+ZjTB6j3
664のようにシステムコールをフックするモジュールを数十種類のシステムコールについて
試したのですが,唯一execveをフックするようにした時のみアプリケーションの起動で
segmentaion faultが起きます.アプリケーションが何も起動できません.

カーネルの中で起きているのでgdbが使えません.
皆さんはカーネルデバッグはどうしているのですか?
やっぱりUML+gdbとかですか?
それとカーネルモジュールのデバッグもUMLとかでやれるのでしょうか?
681login:Penguin:03/06/12 08:32 ID:9LpMpr/G
kgdbよろ
682login:Penguin:03/06/12 10:26 ID:uPg3Erb9
>>680
あの方法を使ったら、そうなるでしょうねえ。
(v)fork/clone/execveはアセンブラ使わないと無理でしょう。

デバッグは大体printkで。
kdbを使ってみたいなーと思う事もあるけど
2.5に対応していないので、使えない。
683login:Penguin:03/06/12 11:20 ID:+ZjTB6j3
>>681
kgdbは確かデバッグを行う別のマシン(OS)が必要ですよね?
家は一台しかlinuxにさけるPCがないので,仮想マシンにするならUMLを使いたいです.

>>682
>あの方法を使ったら、そうなるでしょうねえ。
>(v)fork/clone/execveはアセンブラ使わないと無理でしょう。
なぜそうなるのでしょうか?
また,アセンブラでどのようにすれば実現できるのでしょうか?
というか,特定のシステムコールのフックは通常は
モジュールを使わずに直接sys_*の中を変更すべきなんでしょうが・・
684682:03/06/12 16:28 ID:uPg3Erb9
>>683
kgdbなら、i386-elfを読めるgdbが動けばlinuxでなくても使えるはず。

んで本題。
arch/i386/kernel/process.cを読めばわかりますが、
system_callの所で作ったスタックフレームの構造に依存しているので、
スタックの状態を維持したまま呼んであげないといけません。

アセンブラなら、
 call 自前の処理
 mov 元のアドレス,%%eax
 jmp %%eax
てなかんじで呼べば問題無いはず。
(i386のアセンブラは最近書いていないので参考程度に)

もう少し汎用的な書き方にならないかなーと思いますが、
CPUコンテキストが絡む話なので難しそうだな。
685login:Penguin:03/06/13 02:15 ID:Ntzc1lmu
知っている勇者いたら教えてくれ。

Linux2.5.64のソースにmachとかいうディレクトリがあるのだが、あれは一体なんなんだろうか。
ついでにもう一つ訊きたいのだがmach-voyagerとかいうのもあるのだが、あれは一体なんなんだ?

教えて君ですまん。
686login:Penguin:03/06/13 08:39 ID:EXw4iEhu
>685
machine architecture じゃないの? m68kのmacとかsun3みたいに。
voyagerは確か昔のia32の超SMPマシン(といっても32くらい)、
って、linux/Documentation/voyager.txt があるやん。
687685:03/06/15 16:25 ID:TNnPLPxB
>686

Think!ミスター。あんた最高だよ。
688login:Daemon:03/06/15 18:47 ID:wufUnmIS
高橋さんの Linux V2.4 カーネル内部解析報告と同程度にざっくり
*BSDのカーネルについてかかれたものはないですか?
689login:Penguin:03/06/15 18:48 ID:vowloLzR
スレタイ嫁
690login:Daemon:03/06/15 18:51 ID:wufUnmIS
そんなこと言わずにおしえて(はあと
691login:Penguin:03/06/15 23:09 ID:x0Igtqsi
>>688
悪魔本
692login:Penguin:03/06/16 03:19 ID:P+dwJ3I8
>>607 >>608
亀レスですが、script(1)というのもあります。
693login:Penguin:03/06/16 04:49 ID:kWhRIl9x
>>684
ありがとうございます.
ユーザプロセスのTSSが保存されたカーネルスタックにforkの場合はcopy_threadで親プロセスのものをコピーし,
execveの場合は search_binary_handler(合ってますか?)でTSSが保存されたカーネルスタックを初期化するので,
これらの(struct pt_regs型を引数を持つ)システムコールをフックする場合は,
フックした関数の中でsys_*を呼び出してはいけないのですね.

で,アセンブラで書くにしてもどうやってモジュールで呼び出せばいいのでしょうか?
自前の処理の関数へのアドレスはどうやって取得すればいいのでしょうか?
それとも/usr/src/linux/arch/i386/kernel/entry.Sのcall *SYMBOL_NAME(sys_call_table)(,%eax,4)
の直前にアセンブリコードを入れるということでしょうか?
できるだけオーバーヘッドを避けたいので,これをやるなら特定のsys_*の中で処理を記述したいです.
694login:Penguin:03/06/17 00:03 ID:JrPl/8fu
>>693
そゆことです。

実際のコードは.cの中にインラインアセンブラで書くか、
別に書いてリンクすればいいのではないかと。
entry.Sをいじる必要はありません。
例のサンプルならnew_setuidをアセンブラで書けば目的は達成できます。

後はカーネルと関係なく、Cとアセンブラを混ぜる話なので、
その方面のスレで聞いて下さい。

#なんでシステムコールを書き換える必要があるのか謎ですが…
#libcでoverrideすれば間に合いそうな気もしますが。
695login:Penguin:03/06/24 17:33 ID:/u6LQEV0
いまさらなんですが、この説明って、微妙に間違ってません?
初代Linuxから、1プロセスがディスクI/O待ちしている間、他のプロセスが停止したり
しないはずですよね。...MINIXじゃないんだから(笑)

Linuxカーネル2.5 最新開発動向
http://www.atmarkit.co.jp/flinux/special/kernel25/kernel25b.html
|■プリエンプティブルカーネルサポート
|         :
|音楽を再生するときは、通常アプリケーションからオーディオバッファへ数ミリ〜数十ミリ秒
|間隔でデータを転送し、オーディオバッファにためられたデータが順次再生されていく。だが、
|次の音をバッファに転送しなければならない状態であるにもかかわらず、ディスクアクセスな
|ど、場合によっては数十ミリ秒程度の遅延時間がかかるシステムコールを処理してしまうと、
|その処理時間にCPUが引きずられる。

正しい説明は、こっちで合ってますか?(こっちは kernel2.6 だけど)
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04a.html
696login:Penguin:03/06/24 21:10 ID:lLx7L/ff
>>695
その引用は2.4までのものでしょ?
2.4までは実行中のプロセスが完了するまで割り込めないと思うけど。
バッファにデータを転送する前にディスクアクセスするようにスケジュールされていたらそうなるんじゃない?
で、引用元には2.6ではカーネルプリエンプションが可能になるのでこういった事態を抑制できると書いてある。

プロセスA,B,C,DがA→B→C→Dの順でスケジュールされいて、Bの実行中にAが割り込みをかけたとする。

【2.4系以前】
Bの実行終了後に再スケジューリング。続いてAを実行する。

【2.5.4-pre6以降】
Bの実行を中断し、再スケジューリング。Aが実行された後でBが再開する。

最も優先順位の高いモジュールで他のモジュールのコントロールを行えば、
リアルタイムでI/Oをコントロールできるから組込みにも向いてると思ってるんだけど。
あってるかな?
697login:Penguin:03/06/24 21:26 ID:/u6LQEV0
>>696
>その引用は2.4までのものでしょ?

ええ、そうです。
で、言いたかったのは、2.4以前だって、引用に書いてあるほどタコな動きは
してないでしょ、と。

2.4以前だって、disk I/Oを開始する時には、(preemptive ではないにしろ)
自主的にsleepして、CPUを他のプロセスに開放するから、ディスクI/Oの間、
他のプロセスが実行待ちになったりはしないでしょ、という意味なんですが。
698login:Penguin:03/06/26 01:32 ID:9kOqx0yK
>>697
ディスクI/Oという点に限れば697の言うとおりだが、
non-preemptiveだと、なかなかsleepしないシステムコールが
他のプロセスの足を引っ張ることは実際にあるように思う。
例えばsyncとか、多分ディスクI/Oというより、バッファ周りの
話なんだろうけど…
699login:Penguin:03/06/26 12:15 ID:w+qYBtvX
>>698
それは解ります。

言いたかったのは、DiskI/O の話だけなので...

DiskI/O で他のプロセスが待たないって話は、タネンバウム論争でも、MINIXとは違う点
として、強調していたポイントなのに、なんで、2.4 -> 2.5 への preemptive 化の説明に
これを持ち出すかなぁ、と。
700login:Penguin:03/06/26 20:31 ID:wJ+hhIcy
詳細Linuxカーネルの第2版が出ましたね。
まだまだ初心者なんですけど、
この本を全部読みきって70%理解したら大分詳しくなれるんでしょうか?
他にはどんなことを勉強すればいいのでしょうか?
厨房な質問ですいません。
701login:Penguin:03/06/26 21:09 ID:8PE+W9mO
>>700
で、何をやりたいの?
702743:03/06/26 23:58 ID:Ryip/f5b
すいません、kernel.orgから落として来た linux-2.5.73.tar.bz2を
コンパイルしようとすると、make modules のところで、

CC [M] drivers/net/defxx.o
drivers/net/defxx.c:202:2: #error Please convert me to Documentation/DMA-mapping.txt
make[2]: *** [drivers/net/defxx.o] エラー 1
make[1]: *** [drivers/net] エラー 2
make: *** [drivers] エラー 2

といったエラーを出して止まってしまいます。
ググッてみても解決につながる情報が見つからなくて・・・
そもそもこの#error Please convert me というのは
何なのでしょう? どうすればエラーを回避できますか?
703login:Penguin:03/06/27 07:48 ID:47Hwz5yO
kernel 2.5.73 を 入れてみた。
$ dmesg | head -1
Linux version 2.5.73 (root@=======) (gcc version 3.3 (Debian)) #1 Fri Jun 27 06:46:45 JST 2003

"module-init-tools" の0.9.9以上が入っていないとカーネルをコンパイルしたあとで最後にdepmodするところでこける。
その他 Documentation/Changes の"Minimal Requirement"に記載されている、特定のバージョンのパッケージが必要。

最初 "Preemptible Kernel" を試したが、bashをexitするときなどに
ときどきカーネルがOopsとかナイスなメッセージを出すので、外した。

カーネルモジュールの名前がFreeBSD式の"なんとか.ko"になっている。

bdflushがどうので/sbin/updateがobsoleteだからinitscriptを直せ、とか警告される。

サウンドモジュールがなにやら"unsafe"とかで。
lsmod すると
> cs4281 49152 1 [unsafe]
のような間抜けなステータスが出る。rmmodできない。

i810のdrm/agpgartカーネルモジュールがまずいらしく、Xのdriを有効にできない。
> (II) I810(0): [agp] GART: no dcache memory found
> (II) I810(0): [dri] Unable to allocate backbuffer memory. Disabling DRI.
~~
> (WW) I810(0): xf86AllocateGARTMemory: allocation of 1024 pages failed
> (Cannot allocate memory)
---
とりあえずvtを切替えても落ちることはない(以前はよく落ちた)。
dri.sourceforge.netにあるカーネルdriモジュールは kernel2.5では使えないようだ。

これ以外は、今のところちゃんと動いているが、ちょっとだけ不安。
704702:03/06/27 21:05 ID:z7RNnbMR
ひょっとしてカーネルコンパイルの設定とかはクダ質にすべきでしょうか?
705login:Penguin:03/06/28 00:51 ID:V5nJnO59
>>704
親切に
Please convert me to Documentation/DMA-mapping.txt
と言ってくれているので、まずはドキュメントを読んで見ればいいのでは?
706login:Penguin:03/06/28 13:49 ID:Vom+2tH9
>>697 >初代Linuxから、1プロセスがディスクI/O待ちしている間、他のプロセスが停止したり...
もちろん。そして、そのもとの文も、そうはいってないと思う。
それは、プロセスaのdiskI/Oまちの間プロセスbが止まると読むのではなく、
(おそらくだれか(a)の要求に関連する)disk I/Oの処理がプロセスbのスケジュー
リングを遅延させることを言ってるのだとおもう。プリエンプティブカーネル
(と、プライオリティつきスケジューラ)はそれを改善するものだから。

707login:Penguin:03/06/29 13:50 ID:S956rOO5
>>706
>それは、プロセスaのdiskI/Oまちの間プロセスbが止まると読むのではなく、
>(おそらくだれか(a)の要求に関連する)disk I/Oの処理がプロセスbのスケジュー
>リングを遅延させることを言ってるのだとおもう。

うーむ。
何度読んでも、そうは読めないなぁ。それと、そもそも

>エンプティブカーネル (と、プライオリティつきスケジューラ)はそれを改善するものだから。

という理解も間違ってませんか?
2.4だって、I/O処理自体が、スケジューリングを遅延させているわけではないですよね?
自主的 sleep が入らないような類いのシステムコールが、再スケジューリングの遅れ
を発生させるのではありませんか?

http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04a.html
上のURLでは、I/O処理完了にともなうハードウェア割り込み用ルーチンが起動した
場合にも、再スケジュールするようになりました、といっている感じですよね。
708login:Penguin:03/06/29 23:08 ID:/oTz8bWl
>>707
漏れの理解でもそうだと思う
2.4では、自分でsleepするか、システムコールの終わりの
ユーザランドに戻る直前でしか、コンテクストスイッチは起きない。
カーネル内でいくら割り込みが起きても、割り込まれたプロセス
の実行に戻る。

プリエンプティブカーネルならば、割り込みがおきたところが
クリティカルセクションでない時には、割り込みハンドラの実行が
終わった所で再スケジューリングされる。
709login:Penguin:03/06/29 23:53 ID:mQ4EYUec
>>708
割り込みから抜けるときも、ユーザーモード実行中でneed_resched立っていれば
schedule呼びます。

でないとcpu握ったままのプロセスがつくれてしまう。
710login:Penguin:03/07/02 01:58 ID:VujfXoME
(・∀・)renice!
711login:Penguin:03/07/02 02:11 ID:kUFisWUN
./arch/i386/kernel/smpboot.c, do_boot_cpu() の
エイヤと、5秒待ち合わせ!みたいな良い加減さは
Linux らしくて涙チョチョ切れるね。
2 - 4 SMP くらいだと、問題にならないのだろうけど。
712login:Penguin:03/07/06 21:37 ID:VzJQlVRa
task_struct構造体に
int did_exec:1;
というメンバがあるんですが,これはどういう意味でしょうか?
713直リン:03/07/06 21:42 ID:wYFJkOTE
714login:Penguin:03/07/06 21:54 ID:/k97neyg
>>712 C言語講座受けてくるか?
715login:Penguin:03/07/06 22:50 ID:wK3uN9NX
>>712
bit fieldだね。
"int did_exec:1"と書くと
did_exec変数の下位1bitのみだけが有効になり、
0か1しか設定されないのさ。
716login:Penguin:03/07/07 00:12 ID:WcWZ6n6e
>>715
0か-1ではないのか?

717login:Penguin:03/07/07 00:18 ID:XJtR7Wyv
>>716
普通は1に解釈しない?
どーせ1bitしかないからnot 0であればいいんだが。
718712:03/07/07 00:51 ID:CYZ75cVf
自分では使ったことがないので完璧忘れてました.
アホな質問してすいません.
今度からはもう少し調べてから質問します.
719login:Penguin:03/07/07 22:00 ID:kPsRFwM6
>>717
うん。0,1でいきたいので struct { int a:1; } s = {1};とか初期化しちゃう
けど、結局のところ解釈はコンパイラがやるので、例えば s.a >0 ? は偽です。
てか s.a==-1? が真になる。上位1bitが符号だから、それで正しいんだと思う。
0,1にしたければ unsigned int ですね。初期化とも矛盾しちゃって気持悪いし。
720717:03/07/07 22:07 ID:XJtR7Wyv
>>718
そうか、単純に符号拡張すれば-1か。
実装依存なのかな。

721login:Penguin:03/07/08 00:16 ID:wvWko+bE
>>712, >>714-720
っていうか、task_struct構造体の
did_exec変数は、名前の通りフラグに使うわけだから
0か0以外の値で判定するだけいいわけです。
実際にsys.cファイルには
>if (p->did_exec)
> goto out;
ってなってるし。

ちなみにsys.cファイルのコメントには以下のメッセージが。(w
* Auch. Had to add the 'did_exec' flag to conform completely to POSIX.
722login:Penguin:03/07/08 01:23 ID:a4iER9hA
(・∀・)renice!
723login:Penguin:03/07/12 12:47 ID:Q71PnbZR
(・∀・)renice!
724login:Penguin:03/07/13 22:08 ID:UrPfG9sV
2.4.22-pre5を使ってみたけど、2.4.21よりもdisk I/O処理時に
おいての応答性が上がったけど、コストパフォーマンスが落ちた
ような気がする。
やはり、応答性とコストパフォーマンスはトレードオフなのかな。


以下は自作プログラムによるテスト結果

【1分間のファイル読み書き回数】
   |2.4.22-pre5|2.4.21
―――|――――――|―――――
1回 |2588771  |2808551
2回 |2573318  |2865419
3回 |2569311  |2878404
4回 |2576775  |2870706
5回 |2578199  |2868286
6回 |2571464  |2865638
7回 |2588162  |2868531
8回 |2595950  |2863878
9回 |2606366  |2878016
10回|2604069  |2869487
平均 |2585238.5 |2863691.6

2.4.22-pre5の方が1分間のファイル読み書き回数が減少している。
725login:Penguin:03/07/13 22:14 ID:TbuOUgH9
コストパフォーマンスの評価式は? それともパフォーマンスのことなのかな。

アレ(Xとかの応答性向上パッチ)がはいったんだっけ? もしあれなら、あれは
いままで相対的にI/OにCPUが渡りすぎてたのを、そっちを減らしてかわりにX
に割り当てる量を増やす"改善"をするパッチだから、当然I/O性能はおちます。
726login:Penguin:03/07/13 22:28 ID:UrPfG9sV
>>725
>コストパフォーマンスの評価式は? それともパフォーマンスのことなのかな。
自分が言いたかったのは、多重プロセスがI/O処理中におけるCPU応答性のことです。

>アレ(Xとかの応答性向上パッチ)がはいったんだっけ? もしあれなら、あれは
>いままで相対的にI/OにCPUが渡りすぎてたのを、そっちを減らしてかわりにX
>に割り当てる量を増やす"改善"をするパッチだから、当然I/O性能はおちます。
それは、agp関連の事ですか?

ちなみ、GUI環境ではなくCUI環境でテストしました。
727login:Penguin:03/07/13 23:14 ID:ujCbFKxO
>>725
ChangeLogを見る限りは入ってないなぁ。
io schedulerの修正入ってるから、そっちの影響かも。
関係あると思えないBUG fixなんだけど。
728724:03/07/13 23:29 ID:UrPfG9sV
しくりました。わけわかんないこと言ってました。
>>726で言ってる、
>>コストパフォーマンスの評価式は? それともパフォーマンスのことなのかな。
>自分が言いたかったのは、多重プロセスがI/O処理中におけるCPU応答性のことです。
ではなくて、プロセスがdisk I/O処理が終了するまでの合計処理時間です。
729login:Penguin:03/07/14 02:53 ID:YDflspfA
age
730login:Penguin:03/07/15 03:41 ID:kOKraebZ
カーネルが非SMPでもプリエンティブになったんだっけ?
ヤバくない?
731login:Penguin:03/07/15 03:57 ID:v95prNRE
もちろんやばい作りのものデバドラとかはヤバいですよ。
カーネルがサポートしたなら、それは今やデバドラのバグです。
でもSMP対応しているものなら大丈夫な"ハズ"ですよ。そーゆートリックですから。
732山崎 渉:03/07/15 11:16 ID:doz396Fq

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
733login:Penguin:03/07/15 11:57 ID:Fo16Kpwc
(・∀・)renice!
734login:Penguin:03/07/16 01:23 ID:g/ls7vVV
>>730
>カーネルが非SMPでもプリエンティブになったんだっけ?
>ヤバくない?
SMP、非SMPのどちらであろうがカーネルはプリエンティブになっている。
何でやばくなるの?

>>731
>もちろんやばい作りのものデバドラとかはヤバいですよ。
>カーネルがサポートしたなら、それは今やデバドラのバグです。
もし、それでヤバくなるデバドラならそのデバドラの設計ミスでしょ。

>でもSMP対応しているものなら大丈夫な"ハズ"ですよ。そーゆートリックですから。
もしかしてテキトーに言ってますか?
735login:Penguin:03/07/17 03:08 ID:X2zI67Ch
>>734
> もし、それでヤバくなるデバドラならそのデバドラの設計ミスでしょ。
もち。そういう意図の発言です。

> もしかしてテキトーに言ってますか?
spinlockがプリエンプションのポイントになっていることを指して言っています。

736login:Penguin:03/07/18 01:34 ID:Ad3cqyqT
要するにカーネルのソースにクリティカルセクションを
守るためのロックプリミティブがちゃんと書いてあれば
いいということだろ。
SMPならばtest and setとかの本当のlockをすればいいし、
プリエンプティブのときにはプリエンプション可能かを見る。
従って、CONFIG_SMPとCONFIG_PREEMPT(?)は独立に
できるはず。
と、テキトーに思ってみるわけだが。
737login:Penguin:03/07/18 21:26 ID:7TXfJdj/
>>736
SMPとPreemption-kernelは初めから独立して設定できる。
Preemption-kernelのコードはSMPとそれ以外で場合分けされてる。

Preemption-kernelのコードは2.4向けのパッチを見ると良いかも。
738login:Penguin:03/07/22 11:26 ID:6WQ9WMDa
(・∀・)renice!
739login:Penguin:03/07/25 12:51 ID:NH3LXVfX
(・∀・)renice!
740login:Penguin:03/07/28 12:56 ID:YIr5Dzm4
(・∀・)renice!
741ぼるじょあ ◆yBEncckFOU :03/08/02 05:08 ID:GfRe8vK7
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
742login:Penguin:03/08/02 10:31 ID:0p3phC6s
(・∀・)renice!
743login:Penguin:03/08/10 11:15 ID:t5VAEY5s
(・∀・)renice!
744login:Penguin:03/08/11 11:53 ID:5aoknCTf
今のkernelて、何stepくらいあるの?
745login:Penguin:03/08/15 17:22 ID:aL8WrViO
(・∀・)renice!
746abc:03/08/15 18:53 ID:D/wj3em9
747山崎 渉:03/08/15 22:11 ID:ep0zwfOh
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
748山崎 渉:03/08/15 22:35 ID:ep0zwfOh
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
749login:Penguin:03/08/16 00:02 ID:+8Yy95I5
(・∀・)renice!
750login:Penguin:03/08/16 00:25 ID:CSEwRIa6
>>744
linux-2.6.0-test3+αで
find -name '*.[ch]'|xargs cat|wc -l
の結果。
5,254,674行
全部把握できたらまちがいなく神。

ちなみに、
find drivers -name '*.[ch]'|xargs cat|wc -l
が、2,516,767行なので、半分ぐらいはドライバだな。
751login:Penguin:03/08/16 14:38 ID:oSWJJuxF
USAGIカーネル(ver2.4.21)を入れたのですが、USBマウスを認識できません。

Initializing USB Keyboard: modprobe: Can't locate module keybdev
というNGが出ていたので、
make xconfig で
Input core support を m
Mouse support を m

 USB support の USB HIDBP Mouse (basic) support を m
としたところ、エラーは消えました。

ですが、マウスを動かしても反応してくれませんでした。
m ではまずいのかと思い、上記のところを y にしてみると今度はNGが
出てしまいました。


もう一つ質問です。
IPv6対応にしたいのですが、Networking options の
The IPv6 protocol(EXPERIMENTAL) を m とし
それによって増えた項目全部を y としたところ
make module_install 実行時

depmod: *** Unresolved symbols in /lib/modules/2.4.21/kernel/net/ipv6/ipv6.o
depmod: find_transform_by_name_R027c72c5

と言われました。
これはどのように対処すればいいのでしょうか?
ifconfigをやってもIPv6のIPがまったく出てこなくて・・・・・・・

長い文章で申し訳ございませんが、ご指導よろしくお願いいたします。
752login:Penguin:03/08/25 09:44 ID:ZYMvu5IH
(・∀・)renice!
753login:Penguin:03/08/28 07:10 ID:ssaojeEB
しつもーん。

NFS経由の多段リンクとかしてたらスタックオーバーフロー
とか言ってハングするのだが・・・スタック領域って拡張できるの?
754login:Penguin:03/08/28 10:48 ID:GLbP7FQB
>>753
カーネルスタック?
カーネル作りなおせば増やせるけど、どこに影響が出るかわからんぞ。
755login:Penguin:03/08/29 13:31 ID:UPtCxfjb
>>753
多段リンクの意味がよくわからない。
symlink -> symlink -> realfile ってこと?
756login:Penguin:03/09/01 11:50 ID:MpWyDbPw
(・∀・)renice!
757eiji:03/09/02 13:56 ID:DWK7xXkc
linuxとwindowsのカーネルの仕組みの違いについて教えていただけませんでしょうか。
お願いします。
758login:Penguin:03/09/02 14:53 ID:BTzOKWIc
>>757
そんな漠然とした質問に答えられる香具師は居ないと思われ。
カーネルといったって規模が大きいからな。
カーネルとは何ぞや、ということを先ず本か何か読んで調べるのが吉。
759login:Penguin:03/09/02 15:08 ID:pHfbPm/9
>>757
宿題は自分でやれ。
760login:Penguin:03/09/03 16:28 ID:iWz7WMbL
windowsといってもWindows/386の流れとNTの流れで別物だし。
761login:Penguin:03/09/04 22:39 ID:fsrmdR87
>>754
>>755
ありがとー。実は客にきかれててさー。
カーネルスタックかぁー。触らない方がよさだよなぁ。
でも説明せんといけないし。なんか参考になるサイトないすか?

あ、あと多段リンクはこれであってる。
説明がなかったな。スマソ
一応、制限が5段までで怪しいパッチをあてると8段まで
いけるらしいんだけど、スタックオーバーフローになる。

762login:Penguin:03/09/05 02:29 ID:sR5Y928W
>>761

スタックオーバーフローって、カーネルじゃなくて、
アプリケーションがタコなだけな気も。

カーネル的には、symlink は 20段程度やそこらは大丈夫だったと思ったけど。
(つーか、symlink の循環を検出するために、一応、限度を設定してるだけで、
 カーネルでのスタック消費がどんどん増えていく、とかはないはず)

いずれにしても、カーネルで他段symlink限界を超えたときは、ELOOP でしょ。
単に、アプリケーションが自前で lstat() や readlink() を使った挙げ句、
爆死してるとかじゃない?
死んでるのは、なんてソフト/コマンドなの?
763login:Penguin:03/09/05 06:48 ID:NvZ0a9K7
杖はどっちの手に持ってるんですか?
764login:Penguin:03/09/06 02:38 ID:6wacLc6H
>>751
IPv6対応にしたいのですが、Networking options の
The IPv6 protocol(EXPERIMENTAL) を m とし
それによって増えた項目全部を y としたところ

usagi/doc/CONFIG.linux24
あたりを読め。意味がわからんやつをyにするな。
765login:Penguin:03/09/08 22:57 ID:hx2KIDDj
>>762
ありがとう!そんな答えが欲しかった。

実は客が何やってるのか今一つかめてないから
判ったらまた書くよ。またよろしく。
766login:Penguin:03/09/15 10:49 ID:I+VNLCRD
(・∀・)renice!
767login:Penguin:03/10/11 22:31 ID:seR0x92U
アックス・・・やばいよ・・・
768login:Penguin:03/10/18 22:04 ID:cV4cEMzM
>>767
アックスってやばいの? 死期神を作っている会社だよね?
769login:Penguin:03/10/18 23:05 ID:iEnCwFBH
お金関係は問題ないのでは?
広報は…昔からなのであきらめて下さい。
770login:Penguin:03/10/19 04:24 ID:vsa+A4dY
いや、なんつーか
セミナーがあまりにアホ過ぎて
笑いを通り越した
771login:Penguin:03/10/19 15:14 ID:P4K7wAI7
それは提携している所の問題じゃないかと。
772login:Penguin:03/10/24 01:06 ID:8mSLFw8A
ヘッダファイルでexternではなくstatic inlineで記述してある関数には何か理由があるのでしょうか?
773login:Penguin:03/10/24 01:44 ID:IA1XAa8m
inlineの意味を調べればわかる。
774login:Penguin:03/11/01 18:25 ID:BY3sdtX9
task_struct構造体の最初の初期化はlinux/include/sched.hのINIT_TASKマクロっすか?
それとメモリ領域の確保にはget_free_page、kmalloc、vmallocのどれがベターなんすかね?
調べた限りでは

get_free_page ページフレーム単位での割り当て(4kB)
kmalloc 連続したメモリ領域の確保
vmalloc 非連続メモリ領域の確保

たぶん割り当てるデータの種類・頻度によって使う方法が違うと思うんですが、
いまいちこういうデータにはこれがいい、という判断ができないもので。
775login:Penguin:03/11/01 18:44 ID:UJpXfS4u
おまいら、qemuのお話はしないのか。
776login:Penguin:03/11/01 19:13 ID:VqBAcchD
> いまいちこういうデータにはこれがいい、という判断ができないもので。 というのがわかっているなら、 > それとメモリ領域の確保にはget_free_page、kmalloc、vmallocのどれがベターなんすかね? この質問では答えがないことがわかるだろう。
777login:Penguin:03/11/01 21:56 ID:GycfD/6p
>776
だから、こういうときはkmallocとかいうような場合分けの判断の仕方を教えて欲しいわけです。
初期化の方は?
778login:Penguin:03/11/01 23:26 ID:yJPpr0Et
このスレの立った当時のkernelバージョンは何だったんだろう・・・
779login:Penguin:03/11/01 23:57 ID:X+/ZvCjk
普通の構造体ならkmallocやkmem_cache_allocでいいんじゃないでしょうか?
get_free_pagesとvmallocは意味がわからないのなら使う用途はなさそう。
780login:Penguin:03/11/02 02:01 ID:c8ANRrTL
>779
char *とかはどうです?なまじページフレーム以下のバイト数割り当ててページフレーム内でのメモリ断片化を起こすより、ページフレーム単位で割り当てた方がいいんですかね?
でも4kBはでかいものなあ・・・

781login:Penguin:03/11/02 04:02 ID:mdTuavMg
オレも4kbはデカイなと思ってたけど
結局malloc系はみんな4kbずつ取られちゃうし
そもそもPCならメモリはたくさんだから
1000枚とったって4メガじゃん とか思って
もうめんどくさいしと考えて kmalloc
782login:Penguin:03/11/02 13:27 ID:3SVrF8XB
>>777
初期化はその通り

一時的に使うか大体1ページ埋まっちゃう時はget_free_pages
それ以外はkmalloc
かな。

細かいことを気にしたくないなら、kmallocでいいんじゃない?
783login:Penguin:03/11/02 14:11 ID:aAzlTdEE
>>781,782
そうっすね。kmallocを使うようにします。
ありがとうございました。
784login:Penguin:03/11/12 19:11 ID:j+kuNkZG
デバイスのインストールをしようとしたときに、デバイスのソースコンパイルで
sizeof(struct rs_table[])
でエラーがでます。
rs_table[]の定義が見つからないようです。

kernelのrs_table[]を参照しているのですが、
これはどこに書いてあるでしょうか?

また、これはどのような意味でしょうか?

わかる方がいましたら教えていただきたいです。

シリアルttyS??やリソースに関係しているっぽいらしいことはなんとなくわかったのですが。。。
785784:03/11/12 19:14 ID:j+kuNkZG
sizeof(struct rs_table[])ではなくsizeof(rs_table)でした。
786login:Penguin:03/11/12 19:56 ID:QJ3+g/Cf
カーネルといえば三ダースおじさん
787login:Penguin:03/11/13 04:48 ID:9Axt2Fw5
linux/serialP.h をincludeしといて、かわりに sizeof(struct serial_state) を使う。
788login:Penguin:03/11/13 04:53 ID:9Axt2Fw5
ぐはぁ、sizeof(rs_table[])ではないのね。ごめんなさい。
sizeof(struct serial_state)*RS_TABLE_SIZE
あたりで手をうったらだめ?
789login:Penguin:03/11/16 03:56 ID:rakWerCm
カーネル内からカレントプロセスがデーモンかどうかを識別する方法ってありますか?
790login:Penguin:03/11/16 13:56 ID:mtRdwIbi
>>789
current->ttyがNULLか見ればいけるかな?
791login:Penguin:03/11/20 21:17 ID:F3gDXEit
現在のカーネル実行パスがカーネルスレッドによるものかどうかはどうやって分かりますか?
それとカーネルスレッドはcurrent->*でpidなどを取得したりはできないのでしょうか?
792login:Penguin:03/11/20 21:55 ID:5PKfc9lP
current->mmがNULLかどうかで、kernel threadか判断できるはずです。
割り込みかどうかの判断であるin_interrput()関数と
合わせて御利用ください。

pidの取得も問題ないはずですが、current->tgidとcurrent->pidが
紛らわしいので注意してください。
793login:Penguin:03/11/20 23:46 ID:F3gDXEit
>>792
swapperのmm==NULLでcloneのflags | CLONE_VMだからですね.ありがとうございます.
それとin_interruptは自分が注目しているコードの部分は例外や割り込みハンドラの部分ではないのですが,
それでも必要でしょうか?
tgidとpidが紛らわしいというのはどういう意味でしょうか?
>>790
789僕です.遅れましたが,ありがとうございました.
794790,792:03/11/21 00:46 ID:uTRJrHVo
>>793
それなら、in_interrput()は使わなくてよいです。

2.6のgetpid()で取れるはtgidなのでtgidを使えば無難です。
今までのlinuxthreadsを使うとpid==tgidなんですが、
NPTLでは、何故かねじれてしまってpidがスレッドIDに
なっています。
795login:Penguin:03/11/22 05:27 ID:Ra8noU1x
現在カーネル実行パスを実行しているプロセスの
ユーザ空間におけるスタックフレームをカーネル空間からバックトレースして,
それぞれのフレームにおけるリターンアドレスを調べていくことは可能ですか?
またcurrent->mm->start_stack以外にスタックに関する情報はないのでしょうか?
796login:Penguin:03/11/22 11:56 ID:vL0kggqG
詳解Linuxカーネルってトップダウンで書いてあるので、
流れを理解するにはうってつけだけど、長々と文章で説明するより
図とかソースの方が分かりやすかったりする。好みだけど。

たしか、この本が出たときにいろいろ批判をしたスレがあったと
思うけどどこですか?
797login:Penguin:03/11/22 17:33 ID:wN3p4lwg
>>795
それなら、ユーザー側のspを読んで追っかけたほうが簡単じゃないかと。
CPUに依存するけど。
798login:Penguin:03/11/23 04:45 ID:eeQbYtxk
>>797
ユーザ側のspの値はcpuの制御回路によってカーネルスタックに退避されるんですよね?
みようとしている部分がシステムコールハンドラのret_from_sys_callのところからなんですが,arch/i386/kernel/entry.S(自分のマシンのアーキテクチャはx86です)によるとそのときのカーネルスタックのレイアウトは,
0(%esp) - %ebx
4(%esp) - %ecx
8(%esp) - %edx
C(%esp) - %esi
10(%esp) - %edi
14(%esp) - %ebp
18(%esp) - %eax
1C(%esp) - %ds
20(%esp) - %es
24(%esp) - orig_eax
28(%esp) - %eip
2C(%esp) - %cs
30(%esp) - %eflags
34(%esp) - %oldesp
38(%esp) - %oldss
となっていて,このoldespがユーザ側のspの値でしょうか?

ところで,スタックに格納されているデータがリターンアドレスかどうかを判別するにはどうすればいいのでしょうか?
スタックフレームごとの区別の仕方もよく分かりません.gccのソースコードとかを読んでみれば分かりますか?
799login:Penguin:03/11/23 04:48 ID:eeQbYtxk
すいません.gcc->× gdb->○
800795:03/11/23 20:21 ID:DFb2kUzt
x86の場合はebp+4のアドレスにリターンアドレスがあるのでebpを元にして辿っていけばできそうです.
というかlinuxカーネルの話題とずれた質問してすいませんでした.
801login:Penguin:03/11/23 22:36 ID:SyBc4qQv
>>798
どこに入るかもCPUによって違うので、必ずカーネルスタックに入っている保証はない。
ただ、コンテキストスイッチした時の値はthreadに入っているはず。

x86でret_from_syscallでみるならoldespでOK。
csも確認してring3に戻ることを確認したほうが良いかもしれない。

判別法は、アドレスが.textの領域に収まっているかどうか確認するのが一番簡単だと思う。
まじめに解析するならデバッグ情報をなめるしかないだろうね。

>>800
ebpは-fomit-frame-pointerされると使えないので注意。
802login:Penguin:03/11/24 01:42 ID:zlJqppRI
>>801
ありがとうございます.
.textに収まっているかどうかというのは,
実行ファイルのコード+共有ライブラリのコード領域に収まっているかどうか
ということですよね?
実行ファイル中のコードはcurrent->mm->start_code,end_codeで参照できると思うのですが,
共有ライブラリの領域もまとめて収まっているかどうか確認する方法はあるのでしょうか?
それとも共有ライブラリのコード領域は別の方法で考慮する必要がありますか?
mmapの引数とかで.
803login:Penguin:03/11/26 22:35 ID:OO1sXefq
>>802
shared libのロード位置はmm_struct追えばとれると思うけど、
やったことがないので、今一つ自信ない。

ld-linux.soから情報を渡してもらうのが一番確実だろうねえ。
804login:Penguin:03/12/02 02:21 ID:Bf62dDgd
>>803
ありがとうございます.
current->mm->mmap->vm_start,vm_endを使えば,検査したリターンアドレスが動的にリンクされたライブラリのテキストセグメントに収まっているかどうか確認できそうです.
mmapで確保されるメモリリージョンが共有ライブラリのテキストセグメントかどうかはvm_flagsメンバが読みとり・実行可能かつ書き込み不可・プライベートなマッピングであるかどうかで識別するつもりです.
805login:Penguin:03/12/05 23:56 ID:JanVmuB0
質問させてください。
休眠状態のプロセスの.textや.dataを読み出そうとしています。
実行中のプロセスであればts->mm->start_dataをget_user()でいけるのですが、
休眠中なのでうまくいかないのです。(tsはプロセスディスクリプタへのポインタのつもり)
adr=ts->mm->start_data;
として
ladr=pte_offset(pmd_offset(pgd_offset(ts->mm,adr),adr),adr);
で得られたladrからget_user()すればいいと思ったのですが0読み出す値は0ばかりです。
何が悪いのでしょうか?
806login:Penguin:03/12/07 13:04 ID:8ZucmNpS
>>805
get_user()ってカレントプロセスを前提にしてなかったっけ?
手抜きな回答ですまぬが、
kernel/ptrace.cのaccess_process_vm()を参考にするよろし。
もっと言えば、デバッガがptrace経由でどうやって他のプロセスの
メモリをアクセスしているか見てください。
807login:Penguin:03/12/09 00:36 ID:S+QZ9CO5
>>808
ありがとうございます。

とりあえず、ptrace_readdata()の動作を見てみようと思い、モジュールをでっち上げてみました。
しかしinsmod時にptrace_readdataのシンボル解決が出来ないと怒られます。
ちなみにptrace_readdataの行のみをコメントアウトするとinsmod/rmmodが成功します。
includeしてるのはlinux/sched.hとlinux/mm.hです。カーネルを作るときのオプションか何でしょうか?

ところで皆さんはモジュールをいじるような時は何を参考にしています?
やっぱりオライリーの2冊(詳解カーネルとデバドラ)?
ひたすらgrep?
808login:Penguin:03/12/09 00:47 ID:KPHKA0Ux
>>807
EXPORT_SYMBOLされてないsymbolはモジュールからは見えないですよ
809login:Penguin:03/12/09 01:20 ID:S+QZ9CO5
>>808
ぐぐってみました。
ビンゴのようです。
kernel/ptrace.hにEXPORT_SYMBOL(ptrace_readdata);という記述を加えてカーネルを再構築してみます。
810:03/12/17 15:08 ID:krVj3++U
811login:Penguin:03/12/18 00:07 ID:oQuTHDGh
カーネルの話なのでこちらにも書きます。

どうしても、コンパイルがうまく行きません。
どなたか、ご教授よろしくお願い致します。
TargetはSH4、Hostは、Linux7.2に組み込Linuxをインストールしてあります。
クロスコンパイル等の環境構築は終わっており、組み込みLinuxのカーネルコンパイルも
コンパイルも無事通ります。それなのに、ドライバをコンパイルすると次の
ようなエラーが出てしまいます。
{standard input}: Assembler messages:
{standard input}:4144: Error: unknown opcode
{standard input}:4235: Error: unknown opcode
{standard input}:5719: Error: unknown opcode
{standard input}:6018: Error: unknown opcode
{standard input}:6295: Error: unknown opcode
{standard input}:6693: Error: unknown opcode
{standard input}:6780: Error: unknown opcode
{standard input}:7053: Error: unknown opcode
{standard input}:7085: Error: unknown opcode
{standard input}:7103: Error: unknown opcode
{standard input}:7239: Error: unknown opcode
{standard input}:7725: Error: unknown opcode
{standard input}:8404: Error: unknown opcode
make: *** [linux_ud/sylx.o] Error 1
もちろん、ネットで検索はしました。
gcc,nm,ar,as,g++,gdb,ld,objcopy,objdump等に問題があるのでしょうか?
よろしくお願い致します。
812login:Penguin:03/12/18 00:09 ID:MBnnQKSz
マルチは氏ね
813login:Penguin:03/12/18 00:13 ID:3f1SJdSQ
>>811
sylxがナニモノかしらんが、インラインアセンブラでも使ってるんでねーの?
ソース見せれ。
814login:Penguin:03/12/18 00:19 ID:hosf0Cpd
815login:Penguin:03/12/18 00:57 ID:wHzkPy4D
>>811
Linux7.2てのはRedHatLinux7.2って事?
この手の問題だったらホストとターゲットのカーネルのバージョンを明らかにすべき。
あとはgcc,binutils,newlib,glibcあたりも。

ドライバを作るってのは
make modules
ってやった時?それともどっかから落としてきたソースをコンパイルしてるの?

MakefileのCCをbfdnameにした?

情報不足で状況が掴めないです。
816login:Penguin:03/12/18 01:02 ID:lp9NfDxY
>>815
マルチにレスすんな
817login:Penguin:03/12/18 01:11 ID:wHzkPy4D
>>816
組み込みスレにもマルチしてますね。
ただ、このスレにはお世話になった(なってる)ので、ついレスしてしまいました。
大局的に見るとやっぱりスルーすべきなんでしょうか・・・
818login:Penguin:03/12/20 23:51 ID:p8OBVrj+
ネットワーク関連のコードを読むのに良い解説サイトって無いですか?
カーネル詳説では全然解説してないし。
例えば Netfilter を読むとっかかりになるようなサイトとか。
NIC ドライバは作った事あるんですが、ドライバより上位の層について
知りたいです。
819login:Penguin:03/12/21 16:07 ID:1QwJVAKL
>>818
冗談抜きでソースじゃないか?
820login:Penguin:03/12/21 16:12 ID:u/cH/qKM
「ソース」は「解説サイト」じゃない、とか屁理屈を言ってみる。
両方の条件を満たしそうなのは http;//lxr.linux.no/source/ とか?
821login:Penguin:03/12/21 18:51 ID:1QwJVAKL
>>820
http://lxr.linux.no/source/ か!
ナイス屁理屈
822818:03/12/21 20:42 ID:R8FN9n5S
やっぱ無いですかね。プロトコル毎に全然違うから一々説明できないって事かも
しれないですが・・・(あるいはいまさら TCP/IP の解説でもないだろって事かも)

がんばって読んでみます

823login:Penguin:03/12/21 21:11 ID:1QwJVAKL
それならまずネットワークの本でしょ。
リチャードさんの本を読破しよう
824login:Penguin:03/12/22 18:23 ID:jTZcEXDh
>>818
>>823の言うように"Guru of the Unix gurus"であるStevens先生の本を読むべき。
825login:Penguin:03/12/23 00:32 ID:J48VmNLA
/procにオリジナルのエントリを作ってカーネルパラメータを読み出そうとしています.
出力するデータがもし4kBを越える場合,どのようにコーディングすればいいのでしょうか?
本を読んだり,ソースコードを眺めたりしたんですが,いまいちよく分かりませんでした.
proc_file_readを読むと,越えていても最後まで出力してくれそうな感じですが・・
どうかよろしくお願いします.
826825:03/12/23 00:39 ID:J48VmNLA
えーと,すいません.
「コーディング」というのはread_procの所です.
というか,proc_file_readでwhileループしているので,read_procではcount以下の読み込みを実装するだけでいいのでしょうか?
827login:Penguin:03/12/23 20:48 ID:k2EKtndj
>>823-824
どっちかってゆーと、各プロトコルの実装の説明でなく、sk_buff の
各フィールドの使われ方とか Netfilter とかみたいな割とジェネリックな部分の
説明があればな、と。贅沢いってスンマソン


>>826
proc_file_read を読んだんだったら、それを信じて書けば動くよ。変な挙動だけど。

うろ覚えなので間違ってるかもだけど、普通に off を見て返す内容を決めても
いいっぽいんだけど、proc だとサイズベースで考えるのは面倒だから、
「何回目の呼び出しか」 を off で判断できるようにしてるっぽい。

*start に 1 を入れとくと、次は off が +1 されて呼ばれる (実際に返したバイト数
増えるのではなく) ので、こっちは off を見て返す内容を決めれば良い、と。
一回に返すサイズは count 以内にしておく事、と。
(実際には多少溢れても OK だけど、将来どうなるかわからんし)

多分そんな感じ。色々試せばわかると思う。 というか俺も proc_file_read() を見て
そう思ったから、正式な手順ではないかもしれないけど。
828login:Penguin:03/12/23 22:40 ID:uwJyCcqD
>>825
kcoreあたりをパクるとか。

>>827
オライリーのカーネル本は?
skbのあたりは書いてあったはず。netfilterは無かったかも。
829login:Penguin:03/12/23 23:15 ID:k2EKtndj
>>828
カーネル本はほとんどネット周りは書いてなくて、
ドライバ本は skb については 「ドライバ作者が見るべき所」 だけだから・・・
skb のフィールドって意外と増えたり減ったりしてるみたいだから
やっぱ自分で読むしかないんだろうとは思ってるんですけど。

ちなみに kcore は普通の read_proc の作り方とはちょっと違いますよ。
とはいえ、単にメモリのある領域をダンプしたいだけならあっちの方が楽そうです。
でもそれならキャラデバ書いたほうが楽かも?
830login:Penguin:03/12/24 03:43 ID:CT6SNhsX
>>827,828
ありがとうございました.色々試してみます.
831login:Penguin:03/12/30 00:01 ID:j3HEXdDL
内部とかじゃなくカーネル設定で取捨選択ができる程度の知識を勉強できるとこってない?
832ヽ(´ー`)ノ:03/12/30 22:27 ID:w1ByrpYn
>>831
付属のドキュメントじゃダメなん?
Documentation/* とか、{menu,x,g}config の時み見れるヘルプとか。
833login:Penguin:03/12/31 00:05 ID:4ZezigAR
>>831
本であれば以下はどうか
Linuxカーネル設定ガイド
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798100889
834login:Penguin:03/12/31 09:04 ID:CE2m/NA+
>>833
ヨゴシの本なんか誰が買うか
835login:Penguin:04/01/07 01:47 ID:EmIK8cJs
仮想メモリ(プロセス空間)の見積方法を調べています。

そもそも、仮想メモリ空間にマッピングされる領域には、
どのような領域があり、かつ、その領域の見積方法は
どうするのでしょうか?以下の領域を推測しています。

 ・OSカーネル
 ・ドライバ
 ・プログラムソース
 ・スタック
 ・ヒープ

この他にも、I/Oバッファや共有メモリ, ディスクキャッ
シュなども入るのでしょうか?



また、作成したプログラムのソースコード部分の領域の
大きさの見積方法はあるのでしょうか?(例えばC言語)

以上、よろしくお願いします。
836login:Penguin:04/01/07 22:21 ID:x+u/tPyi
見積もりたいものが分かっていない悪寒。
分からん用語は使わずに何が知りたいかをくだ質スレに書け。
837煽りイカ:04/01/11 21:46 ID:PPiKfNSH
先生、カーネルに付いて勉強しようと、ソースのプリントアウトを
始めたんですが、既にインクジェットのカートリッジを10個以上消費
しています。この戦いはいつまで続くんでしょうか?
プリントアウトした紙は、片っ端から製本業者に出しているので、
この出費もばかになりません。
838login:Penguin:04/01/11 22:09 ID:26nuhaia
>>837
本当に紙のものが欲しいなら、すでに印刷して製本したものが書店で売ってあ
るから買えばいいですよ。でも紙で読むのはつらい。

lxr等のツールを使って眺めるとか--これも自前でやらなくてもlxrのサイトに
lxrかけたソースがおいてあるからwebブラウザで眺める--か、make tags(もし
くはTAGS)してviなりemacsで読むのがいいと思いますよ。

概要をつかむなら、まずディレクトリの構造を適当にながめたあと(or眺めつ
つ) init/main.c の start_kernel() から読み始めるのがいいと思います。
大変だけど、続ければ必ず読めるし、得るものは大きいから、がんばって。
839login:Penguin:04/01/12 17:15 ID:lpS+N9kG
>>838
マジレスカヨ
840login:Penguin:04/01/13 01:07 ID:odyLziqA
シェルについてですが なぜ シェルレベルがあるのですか
たとえば echo $SHLVL と打ちますと 2 とでたり
bash bashと続けて打てば 4となります
841login:Penguin:04/01/13 07:19 ID:yowy6EM0
シェルレベルはカーネルと関係ない話なので、くだ質で再質問をお願いします。
# そのさい誘導されたことを付記してください。でないとマルチ呼ばわりされそう。
842login:Penguin:04/01/15 19:55 ID:q7MiFnSU
2つ質問があります.

1:
カーネル側からroot権限であるデーモンプログラムかどうかのフックをする際に,
root権限である && setsidで制御端末から独立するのでcurrent->tty==NULL
という以外に条件はないでしょうか?
この条件だけだと端末からemacsを起動したときや,
デーモンプログラムから呼び出されたと思われるrmやchownなどもフックしてしまうようです.

2:
プロセスからあるデータへの参照をカウントしています.
その参照はコマンド名で対応づけられています.
カウント数が2の場合に,ps | grep [コマンド名]すると1つしかありません.
ん?と思って参照しているプロセスのコマンドラインをみてみると
(参照しているプロセスのpidは分かっています),
-:0
と表示されています.
これは一体どういう意味でしょうか?
pstreeコマンドでは「-:0」がちゃんとしたコマンド名で2つ表示されていました.
ちなみにそのコマンド名はwdm.binです.

よろしくお願いします.
843842:04/01/15 19:57 ID:q7MiFnSU
新規書き込みでsageてしまいました・・
844login:Penguin:04/01/15 22:13 ID:mabMTQF9
1だけ
親がinitかどうか確認するとか。
daemon(3)使っていればinitが里親になるはず。
845login:Penguin:04/01/16 02:09 ID:c7u8nyNC
>>844
ありがとうございます.
initにゾンビの始末をさせていたんでしたね.忘れてました.
emacsの方はsetsidを使って(emacsからforkしてemacsserverが実行されるまでの間),
しかもバックグラウンドで実行した場合initが親になるので無理なようです.
846842:04/01/17 17:37 ID:KaSlkRb2
2つ目の理由が一応分かりました.
psでは通常,コマンド名の表示に/proc/cmdlineを参照します.
ただし,-cオプション(本当のコマンド名を表示する)をつけたときはcurrent->commを参照するようです.
で,proc_pid_cmdlineやexecve周りを眺めたましたが,上書きされる様子がない.
manで調べてみるとどうやらsetproctitleという関数を使ってコマンドラインの上書きが可能なようです.
引数として渡す文字列の先頭に「-」をつけると,- は無視され,フォーマット後の文字列がそのままセットされるようで・・
けれども,今の自分の環境のglibcではsetproctitleに関する記述はないのが変だなと思いますが.
特にこれ以上突っ込んでも自分の実装と関係ないので,放っておくことにします.
847login:Penguin:04/01/18 02:11 ID:+zT3hNOG
プロセス切り替え時の動作なんですが、

・CPUにタイマ割り込みがかかる
・割り込みハンドラに処理が移る
・プログラムカウンタをそのプロセスのカーネルスタックにpush
・汎用レジスタの内容をプロセスディスクリプタのthreadに保存
・schedule()で次に処理するプロセス選択
・次に処理するプロセスのプロセスディスクリプタのthreadから汎用レジスタにロード
・次に処理するプロセスのカーネルスタックからPCにpop
・ジャンプ

という理解でいいのでしょうか?(自主的にCPUを放す場合は別として)

ということは、ほかのプロセスのカーネルスタックの一番上の中身を書き換えると、
違うところから実行が再開される?
848login:Penguin:04/01/18 14:35 ID:EgN885Nx
>>847
> ということは、ほかのプロセスのカーネルスタックの一番上の中身を書き換えると、
> 違うところから実行が再開される?
signalの挙動がそうです。
849login:Penguin:04/01/23 09:07 ID:R+JbGtsc
>>848
おお〜!なるほど
850login:Penguin:04/01/25 16:35 ID:8CJ3FK3q
Linuxカーネルに新しい機能を付けて拡張するカーネルパッチを公開する場合,
ライセンスはGPLに従うと思うのですが,基本的には拡張するカーネルのバージョン
についているCOPYINGをそのまま持ってきてREADMEか何かで
「このソフトウェアはGPLでライセンスされています.詳しくはCOPYINGを読んでください」
と書くだけでよいのでしょうか?
851login:Penguin:04/01/25 19:58 ID:B5VoqxYA
>>850
GPL の最後読んだ?
852login:Penguin:04/01/25 21:16 ID:STnhf9z3
>>851
すいません.今読みました.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

これをソースコードの冒頭につければいいんですね.
で「a copy of the GNU General Public License」がCOPYINGファイルになると思うのですが,
Linuxカーネルの方はCOPYINGのGPLの記述の最初にLinusさんの注意書きのようなものが付いていますよね?
このCOPYINGをそのまま使っていいんでしょうか?
853login:Penguin:04/02/03 12:14 ID:w95WYYei
ゾンビプロセスに関して質問です。

現在サーバを起動しているとメモリをどんどん減っていくという問題で困っています。
(もちろんfreeコマンドでキャッシュを差し引いたところを見ています)

メモリが圧迫された状況でも、topコマンドから消費メモリ順に並べても、
特にメモリを食っているプロセスはありません。

気になるのはゾンビプロセスが発生していることです。

>>842-845 にあるように
ゾンビは最終的にはinitに吸収されると思うのですが、
その際psやtopで見たinitの使用メモリは増大していくのでしょうか?

原因を特定できずに困っています。
現在は毎日再起動してなんとか運用中です。
854login:Penguin:04/02/03 12:55 ID:5ayoX5Ue
>>853
ゾンビを生んでる人を見つけて退治する。
毎日核落としてたんじゃバタリアンの中の人もかわいそう。
855login:Penguin:04/02/03 13:05 ID:dnjnuywS
>>853
そのゾンビプロセスが何のプロセスかわからないと何とも言えない
856login:Penguin:04/02/03 15:54 ID:w95WYYei
>>854-855 レスありがとうございます
postfix->local(Postfixのローカル配送プロセス)->procmail->bashスクリプト
と起動されており、
procmailから下がゾンビになってます。

まずはこのゾンビがメモリ圧迫の原因かどうか確かめたいのです。

ちなみにinitのメモリ使用量は増加してません。
純粋に空きメモリだけが減っていきます。

このようにゾンビが起きることでメモリを減らすということはあり得るのでしょうか?
もしあり得るとしたら、ローカルユーザは簡単にサーバを落とせてしまうことになってしまいませんか?
857login:Penguin:04/02/03 16:14 ID:5ayoX5Ue
>>856
じゃあprocmailを殺す
ありうるし落とせるよ
だから殺す
858login:Penguin:04/02/03 17:29 ID:qJjZfJxc
>>853
>>842-845は孤児の話だ。
親が骨を拾ってあげないからゾンビになる。
ということで親ごと殺さないとダメかも。

と書いていて思ったが、現実世界に当てはめたらとんでもねー表現だな。
859login:Penguin:04/02/03 18:31 ID:bGaWcOzS
>>858
その親には問題がありそうだね。
860login:Penguin:04/02/03 18:42 ID:u8zu6V/I
>>858
ちゃんと面倒見ない親を探して対処しないとな。

ていうか、孤児はinitが引き取るから、
引き取った後ならいい人のinitを殺す話になってしまう(藁
861login:Penguin:04/02/03 20:59 ID:NOAqHG+F
ゾンビはリターンコードしか必要なデータは持ってないから、
メモリはあまり食わないはず。
だいたいpsで見れば分かるじゃん。
862853:04/02/03 21:22 ID:w95WYYei
みなさんレスどうもです。

psで見るとこんな感じになってます。
926 16119 0.0 0.0 0 0 ? Z 22:24 0:00 [sed <defunct>]

しかしいつまでもゾンビが残るわけではなく、
ちょっと立つと自然に消えていきます。

自然に消えるゾンビなら気にしなくても良いのでしょうか?
それともゾンビが出ること自体がまずいのでしょうか?
863login:Penguin:04/02/03 21:35 ID:iQ6XyeXR
子供をほっとくなんて。
親の顔が見たい。
864login:Penguin:04/02/03 21:59 ID:qJjZfJxc
>>862
消えるなら、親の面倒見が悪いだけだろう。
気にするな。
865login:Penguin:04/02/03 22:07 ID:5ayoX5Ue
>>861
死んだら出席簿から名前が消されるのに
ゾンビちゃんは出席簿に名前が残ったままだよ。
机は持ってかれるかもしれないけどさ。
866login:Penguin:04/02/09 23:34 ID:APi7kHwb
 LKMでファイル操作をしようと open,write,closeあたりの
関数を使ってみましたが、insmod で組み込むと
hook_uname.o: unresolved symbol open
hook_uname.o: unresolved symbol close
hook_uname.o: unresolved symbol write
とエラーになってしまいます。
 でもstrncpyみたいなライブラリが必要そうな関数は問題なく
試用できるのがよくわかりません。
 適切な資料がわからずみようみまねで書いているのですが、
LKMから呼び出せる関数のリストのようなものはありませんか?
 またはこれらopenなどの関数を呼び出すためのコンパイル
オプションなどがありますか?

 現状、次の記事を参考にプログラムを組んでいます。
http://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html
 記事の書いてあるところまでは、そのままやってうまくいきました。
 この hook_uname.c を改造しています。
 linuxのkernelバージョンは 2.4.19です。
867login:Penguin:04/02/10 00:13 ID:0xm4A1oM
>>866
標準ライブラリは使えまへん。
strncpyは親切な人が同じものを用意してくれているから。
モジュールから呼べるのはEXPORT_SYMBOLで宣言されてる。

まじめにやるなら馬本嫁。
868866:04/02/10 01:48 ID:LKCK7qEy
>>867 アドバイスありがとうございます。
 EXPORT_SYMBOLでgrepしてみたら、i386_ksyms.cに記述されているのを
見つけました。
 strncpyなどは、特別にここで用意されていたに過ぎないのですね。
 馬本は、オライリーの「LINUXデバイスドライバ 第2版」のことでいいですか?
 ちょっと高いですが買って勉強します。
869login:Penguin:04/02/11 22:12 ID:A4Mg4/pd
>>866
ライブラリ関数の使えないカーネル内でもシステムコールは使えますよ.
_syscall0とかのマクロを使うか,sys_openなど直接呼び出したりはできると思います.
870login:Penguin:04/02/12 13:38 ID:8sD0wTgv
>>869
syscallマクロは、システムコールに再入してまうのであまりよろしくありまへん。
カーネルスレッド使えば問題ないけど。

そもそも、モジュールの中でファイル開いてごりごりやるのはどうかと思いますな。
871login:Penguin:04/02/15 18:11 ID:UtEM83EN
>>870
rootkitのwebページを参照にしているようでしたので,「どうかと思う」ことを敢えてやりたいのかなと.

>>866
カーネル内でファイル入出力をするなら,sys_acct辺りが参考になるんじゃないでしょうか.
872866:04/02/19 04:01 ID:3kajdZP1
 すみません。まだ本買っていないです。
 とりあえずいろいろ試してみましたので経過報告です。

(1) _syscall2マクロを使ってみました。
 こんな感じでいのでしょうか。
_syscall2( int , open , const char *,pathname, int ,flags);

 コンパイルすると次のようなエラーになるので、
(上記のマクロは24行目にあります。)
$ gcc -c hook_uname.c
hook_uname.c: In function `open':
hook_uname.c:24: `errno' undeclared (first use in this function)
hook_uname.c:24: (Each undeclared identifier is reported only once
hook_uname.c:24: for each function it appears in.)

 errno.hをインクルードしてみましたが、
#include <errno.h>

 モジュールを組み込むにエラーになってしまいました。
#insmod -f hook_uname.o
hook_uname.o: unresolved symbol errno

(続く)
873866:04/02/19 04:01 ID:3kajdZP1
(2) sys_openを使ってみました。
fd = func_sys_open("/tmp/hook_uname.txt",O_APPEND | O_CREAT );

 コンパイルは成功しましたが、モジュールを組み込むにエラーにになってしまいました。
#insmod -f hook_uname.o
hook_uname.o: unresolved symbol sys_open

(3) sys_call_tableのアドレスを呼び出してみました
int (*func_sys_open)(const char *pathname, int flags);
func_sys_open = sys_call_table[SYS_open];
fd = func_sys_open("/tmp/hook_uname.txt",O_APPEND | O_CREAT );

 コンパイル、insmodとも成功しましたが、実行すると
func_sys_openの呼び出し中に失敗し -9 が返ってきました。

 やっぱりカーネル内からの呼び出しはだめですか。

 とりあえずファイル操作をやってみているのは、分かりやすい結果が得られた方が
面白いかなというのが主な理由でした。
 また linux-users MLの話題で、unlink をフックしてその中で、ファイルのバック
アップをとりたいという話題([linux-users:101834])があり、面白そうなテーマだと
思って手を出してみました。
 sys_acct(の実装?)等参考に調べてみます。
874login:Penguin:04/02/19 22:09 ID:1aYGSfnX
>>872-873
#define __KERNEL_SYSCALLS__
#include <asm/unistd.h>

int hogehoge(void)
{
 int fd;
 fd=open("hoge",O_RDONLY,0);
}

at 2.4.x
試してないけど。
875login:Penguin:04/02/24 04:25 ID:OerDcbnD
>>872
#include <errno.h>
だとライブラリ関数のヘッダファイルをインクルードします.
#include <linux/errno.h>
で/usr/src/linux/include/linux/errno.hをインクルードしてみてください.
>>873
sys_openをモジュールの冒頭でextern宣言してもだめですか?
それと単純にカーネルでファイル操作をしたいのなら,ファイルディスクリプタを返す必要はありません.
acctシステムコールにヒントがあります.

#まずは本を読んで知識を得ることが先決だと思います.
876login:Penguin:04/02/24 13:30 ID:bvymi53U
>>875
sys_openはEXPORT_SYMBOLされていない罠。
armあたりは見える様になってるな。メンテナの趣味かな。

#素直にドライバにしてread/write経由でやりとりした方が素直だと激しく思う。
877login:Penguin:04/02/27 12:06 ID:POIJFvcG
システムコールsys_execve()で、あるプログラムの
実行が始まるわけですが、ld-linux.soというのは
カーネルのどの部分でロードされるのでしょうか。

straceで観察するとlibc.soをロードするシステムコールは
発行されていますが、ld-linux.soに対してはありません。
これというのはカーネルがロードしていると考えていいわけですよね。
その後、ld-linux.soがlibc.soをロードする。
878login:Penguin:04/02/27 12:51 ID:e6K8vpAQ
ld-linux.so.2 は ELFヘッダで指定されています。
なのでロードしているのは ELF の処理部分ではないかと(fs/binfmt_elf.c とか)。
879login:Penguin:04/02/27 14:10 ID:vM/yZAhI
>>877
fs/binfmt_elf.c:load_elf_interp
んでld-linux.soが参照している共有ライブラリを読んでくると。

興味があるならLinkers&Loadersかttp://ukai.jp/debuan/2002w/elf.txtを読むと
もっと詳しく書いてある。
880login:Penguin:04/02/27 21:12 ID:vdlMtlwT
Linuxカーネルを読もうと思っているのですが、ソースを食って仕様書
を吐いてくれるツールとか、ソースを可視化するようなツールがあれば
良いなぁと思い探しています。

今のところ以下のようなツールをみつけました。

global
ttp://www.gnu.org/software/global/

SourceNavigator
ttp://sourcenav.sourceforge.net/


他にも何か良いツールを知っている方がおられましたら
教えてください。
881login:Penguin:04/02/27 22:01 ID:/BhsszhI
>>880 lxrは?
882login:Penguin:04/02/27 22:02 ID:PSE6rHdE
883880:04/02/27 22:11 ID:vdlMtlwT
Doxygenはよさそうだね。

新たなツールを発見したので紹介します。

Sapid
ttp://www.sapid.org/index-ja.html

かなり期待できそうですが使い方がいまいちわかりません。
使っている人がいたら使用感を教えてください。
884????A?L?A?N?e?N?A:04/02/27 22:13 ID:V05PQgy9
UNIX カーネルはあッ、strategie しか知らずに済むのでしょう。けど、Linux は知らないよ。
885login:Penguin:04/02/27 23:33 ID:vM/yZAhI
>>882
それように書かれていないので、あんまし面白くない。
886login:Penguin:04/02/27 23:49 ID:xaaJLb2z
プリエンプトカーネルってなんでつか?
カーネル実行中にコンテキストスイッチがおこってユーザープロセスが動き出すってことですか?
887login:Penguin:04/02/28 00:00 ID:A3wPssc7
888886:04/02/28 00:16 ID:xSTzzvuP
ありがとうございます
@IT読んでなんだかわかったような気分になれました。
889login:Penguin:04/02/28 14:09 ID:J2FeZbHS
VFSの詳しい日本語解説をしているページを教えなさい
890Linuxカーネルの仕組み:04/02/28 19:39 ID:bMmaH5z2
カーネルの中にLinusの小人が101人ほど入ってます。
彼らがガンガッテいるのでLinuxは動いているのです。

以上。
891login:Penguin:04/02/28 20:38 ID:WjxTg2dV
bogomips 101っていったら
CPUはなんだろ
892login:Penguin:04/02/28 21:02 ID:u/+Sj8Sq
>>891
http://www.linux.or.jp/JF/JFdocs/BogoMips/

PentiumとPentiumMMXでずいぶん違うな。
893sage:04/03/14 02:28 ID:g+4Nnj/K
ソースを眺めていたらなんかLINUXの仕組みが分かってきたぞ。
意外と理解できるものなんだね。ちょい感動。
894login:Penguin:04/03/17 13:15 ID:a5f2rjZp
Linuxの「現在使用中の」メモリの読み方について教えてください。

freeの表示にある-/+ buffers/cache: のusedの数値は、
man freeには「使用中のメモリからバッファメモリを引いた値」とあるのですが、
だとすると
/proc/meminfo にある
Active: の欄はどういう意味でしょうか?

私の使用しているLinuxでは、freeでみると、-/+ buffers/cache の usedは、常時100MBを
下回らないほど大きく、自分ではちょっとおかしい気がします。

/proc/meminfoのActiveの数値は20〜30MBで、
現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
その数値は正しいのではないかと思います。

Linuxのメモリ使用量は、どのように読めば良いのでしょうか。
895login:Penguin:04/03/17 13:33 ID:a+ywf6ub
>>894
> 現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
どう計算したの?
896894:04/03/17 14:23 ID:a5f2rjZp
すいません、色々調べなおしてたら、余計にこんがらがりだしまつた、、

>895さん
ps -xl --sort -vsize
で、VSZを目算で足してました。が、これも実際にawk使って
足してみたら、freeの数値ともActiveの数値とも大きく異なっていました。

そもそもpsのSZとVSZの違いからしてわかってないので、そっちを先に調べることにしまつ、、

とりあえず、manからアタックはしてるのですが、
man proc も、 man ps も、 man free も、「そもそもメモリを理解してる人が
読むもの」な気がします。

どなたか「馬鹿野郎、ここ嫁!」っていうヒントがあったら教えてください。
897login:Penguin:04/03/27 16:24 ID:q39k7y+S
物理メモリと仮想メモリを一緒にしてしまっているから混乱しているのかと
898login:Penguin:04/03/30 03:22 ID:ic2Sy5Sj
そもそも、buffersって何を表しているの?
899login:Penguin:04/03/30 17:15 ID:PoJ7z2hx
buffersはバッファキャッシュ
cachedはページキャッシュ
900login:Penguin:04/03/30 18:31 ID:VHI8Xdt8
>>899
Thanks!
901login:Penguin:04/03/31 23:27 ID:1pGTvgen
カーネルを語る方々って、
板の下の方でひそひそ話なのですね。
ス・テ・キ
902login:Penguin:04/04/08 19:09 ID:dz3aoHOS
2.6から正式実装される LSMを作ってみています。

file_permissionで渡ってくるパラメータが struct file * file, int mask の2つのみで、
これだとシステム全部のファイルI/Oが引っかかる為、
実際にフックしたいディレクトリのみにしぼりたく、
フルパスを取ろうとしているのですが どうやってもできません… (涙

神様はいませんでしょうか?
------------------------------------------------
int iCnt = 0;
struct dentry *pEntry = file->f_dentry;

/* 逆順にたどる */
while ( pEntry->d_inode && pEntry->d_count.counter )
{
pParent[iCnt] = (char *)kmalloc( pEntry->d_name.len+1, GFP_KERNEL );
strcpy( pParent[iCnt], pEntry->d_name.name );
iCnt ++;

/* 上へ */
if ( pEntry == pEntry->d_parent )
break;
pEntry = pEntry->d_parent;
}
------------------------------------------------
903login:Penguin:04/04/10 00:38 ID:04yJkWho
age
904login:Penguin:04/04/10 01:33 ID:M+qXKgd2
echo-udpって、port 7以外の複数のポートを
指定してエコーできませんか?
/etc/xinetd.d/echo-udpと/etc/servicesをいじれば
できそうな気はするのですが、だめかな?
905login:Penguin:04/04/12 10:07 ID:KSP28miV
crypt()ってスレッドセーフではなかったのか..
_| ̄|○

やはりスクラッチからですか?そうですか。
906login:Penguin:04/04/12 11:06 ID:VzmbJK3b
>>904
余裕で出来ると思うけどカーネル関係ないよ
907login:Penguin:04/04/13 09:48 ID:nwYJmtfp
pci_map_page()、virt_to_bus()) などが参照する
pci_dram_offset 変数はどういう意味でしょうか?
ホストメモリの、PCIメモリ空間におけるオフセット、
という理解であっていますでしょうか?
908login:Penguin:04/04/13 23:17 ID:V/u6W3OU
gccのインラインアセンブラって慣れてないから使いずらい。
#TASMをずっと使っていたので :-)

メモリ参照ではまってしまった。
(a,b,c)って書くと(a+b*c)だと思わなかったZE。
しかも、SourceとDestが逆!?
コンパイルして気づいたっっっ!!

これ全部直すのキツイっす!(泣
今日は徹夜だ。シクシク
909ヽ(´ー`)ノ ◆.ogCuANUcE :04/04/14 09:28 ID:6A+690eW
> (a,b,c)って書くと(a+b*c)だと思わなかったZE。
> しかも、SourceとDestが逆!?
両方とも info 見りゃ分かるんだけどな。
910908:04/04/15 02:51 ID:Z+dQWDMr
int a,b
asm("mov a, offset b");
↑上記の場合でのAT&T形式のアセンブリコードって何ですか?
offsetでエラーが出る

>>909
>両方とも info 見りゃ分かるんだけどな。
info gasですか?
探してみたんですけど見つからない。
911login:Penguin:04/04/15 09:12 ID:ehDW48/A
>>910
mov $b,a
912login:Penguin:04/04/25 18:46 ID:a4I3Ve2u
関数へのasmlinkage指定って、引数をレジスタ渡しにするのを禁止するための
ものだと思ってたんですが、void引数の関数にもちらほらasmlinkageが見られ
ますよね。これってどういう意図でつけてあるのか教えてくらさい。

913login:Penguin:04/04/25 19:30 ID:PUgCYyE/
>>912
惰性でつけてるとみた。
include/linux/linkage.hを見ると何もしていないことがわかる。
914login:Penguin:04/04/26 02:04 ID:90cdg9sZ
>>913
うげ、そんな適当なんだ。了解でつ。
ありがとう。
915login:Penguin:04/04/26 10:48 ID:V5Uh0zsw
>>912
What is asmlinkage ?
ttp://kernelnewbies.org/faq/index.php3#asmlinkage

The asmlinkage tag is one other thing that we should observe about this simple function.
This is a #define for some gcc magic that tells the compiler that the function should not
expect to find any of its arguments in registers (a common optimization),
but only on the CPU's stack. Recall our earlier assertion that system_call consumes its first argument,
the system call number, and allows up to four more arguments that are passed along to the real system call.
system_call achieves this feat simply by leaving its other arguments (which were passed to it in registers) on the stack.
All system calls are marked with the asmlinkage tag, so they all look to the stack for arguments.
Of course, in sys_ni_syscall's case, this doesn't make any difference, because sys_ni_syscall doesn't take any arguments,
but it's an issue for most other system calls. And, because you'll be seeing asmlinkage in front of many other functions,
I thought you should know what it was about.
916login:Penguin:04/04/26 11:33 ID:90cdg9sZ
>>915
それを読んで質問してるんだけど、なにか英文の解釈違いますか?
917login:Penguin:04/05/16 18:59 ID:FC6L1zfD
1000!
918login:Penguin:04/05/17 19:36 ID:nMrIOM1Y
ダウト
919login:Penguin:04/05/18 02:01 ID:OpVrZf3y
Windowsにカーネルストリーミングって仕組みあるでしょ?
Linuxにもよく似たものってある?
教えてエロリポップな人!
920login:Penguin:04/05/25 05:20 ID:JP2tAIIS
>>916
>それを読んで質問してるんだけど、なにか英文の解釈違いますか?
怒っちゃイヤ!!
921login:Penguin:04/06/21 08:22 ID:1lgVmpvk
ほっしゅほっしゅ
922login:Penguin:04/08/08 16:46 ID:8WCY4JUz
ほしゅSAGE

カーネルセキュリティーな方へ
http://security.ten.thebbs.jp/1089489561/
わたしにゃさっぱりだけどなんか面白そうなんで
紹介しときます。
923login:Penguin:04/08/28 22:13 ID:PWSONyS6
自分は今、Kernel(x86のVer 2.6)内で処理するContext Switchの勉強をしているのですけど、
Context Switchの大体の動きはわかりましたが一つ疑問があります。
switch_toや__switch_to関数で汎用レジスタ(eax, ebx, ecx等)の退避を行っている箇所が
見当たりません。実際に退避しているレジスタは、eip,esp,fs,gsやfpuレジスタとかです。
Context Switch発生時、いったいどこで汎用レジスタを退避するのでしょうか?
924login:Penguin:04/08/29 01:01 ID:nVxTwlJG
>>923
関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
壊れるとまずいレジスタは関数のエントリでスタックに退避されている。

そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
925login:Penguin:04/08/29 02:43 ID:u2o1h55W
>>924
>関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
>壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
ってことは、例えばユーザランドのある関数を実行中に
そのプロセスの実行割り当て時間を使いきった場合、
その時点で使用していたレジスタを退避するのでしょうか?
であるなら、switch_toや__switch_toを処理している時点では、
汎用レジスタを退避しなくてもいいということになるんですが。

>そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
そうなんですけど、いったいどこでそれをしているのかよくわかっていないので。
926login:Penguin:04/08/29 11:10 ID:1PFwUqWG
switch_to()の前に、switch_toがやってるはず。

switch_to()は引数をeax、edxから引っこ抜くわけだから、
そのとき既に、このレジスタに(仮にA、Bとすると)その値が
保存されてないといけないわけ。

退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
ああ、面倒。ここまで書いたら解かると思いますけど。

この辺り開けば、等価なコードが書かれてるでしょう。
927login:Penguin:04/08/29 16:36 ID:cGtjWn1N
>>926
>switch_to()は引数をeax、edxから引っこ抜くわけだから、
>そのとき既に、このレジスタに(仮にA、Bとすると)その値が
>保存されてないといけないわけ。
引数にeaxとかが設定されているのはわかります。

>退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
>ああ、面倒。ここまで書いたら解かると思いますけど。
いえ、自分が期待していたのはどっかで汎用レジスタを退避しているのでは
と思っていたのです。どっかでpusha,popaでもしているのかなと。

なんかよくわからなくなってきたので、もう一度調べてみます。
レスしてくれた方、ありがとう。
928login:Penguin:04/08/29 16:42 ID:nVxTwlJG
>>925
ユーザーランドで使っているレジスタは例外発生時に退避されます。
entry.SのSAVE_ALLマクロ使ってる所。
929login:Penguin:04/08/29 19:36 ID:cGtjWn1N
>>928
見てみます。ありがとう。
930923:04/08/30 02:36 ID:s/M5nqAJ
なんかわかったような気がしてきました。
暗闇の中に一筋の光が見えてきました。
931login:Penguin:04/09/06 16:37 ID:zvPrxyTS
初心者はここから勉強しましょう。
ム板より転載。
http://program2ch.jugem.cc/
932login:Penguin:04/09/28 13:20:48 ID:j6tq7+L5
linux programmingスレが無かったのでここで聞いてみる。
2.2用のカーネルモジュール(driver)がありまして、2.4で使いたいのですけ
ど、カーネルに変更が加わった為かソースはそのままではmakeが通らないです。
一般的な話でいいのですが、kernel2.2から2.4などバージョンを上げる時
moduleのソースはどの辺りに修正加えてますか?

933login:Penguin:04/10/12 13:21:06 ID:8oNaJMZy
>>932
オライリーの「LINUXデバイスドライバ」ぐらい持っとけ。
934login:Penguin:04/12/22 21:16:51 ID:pSCYM4cf
>>932
2.2と2.4の同じデバイスのドライバ見比べてみたらどうでしょうか。

あと、「LINUXデバイスドライバ」って英語版はWeb上で読めましたっけ。
935login:Penguin:04/12/23 07:06:29 ID:S0CjoABJ
x86カーネルだと、1GByteのメモリを使うのですら、
HIGHMEMが必要なわけですが、
HIGHMEMを使うにあたって、ペナルティ等はありますか?

2.6になって改善されたというような記事は見つかったのですが、
具体的な問題については見つかりませんでした。
936login:Penguin:04/12/30 10:00:07 ID:4MuG0KSs
guluの皆様、ご教示ください。

モジュールでシステムコールを追加する方法というのはありますが、
(hoge.oをロードしてる間だけhoge()と言うシステムコールが使える)
既存のシステムコールを上書きすることはできるのでしょうか。
(hoge.oをロードしている間だけカスタマイズしたopen()、close()が使えるような)

カーネルがROなROMに焼かれているシステムですので、カーネルに直接
手を入れることができず上記のような発想で対応したいと考えています。
937login:Penguin:04/12/30 10:00:44 ID:4MuG0KSs
>>936
なお、対象のカーネルは2.4.17です。
938login:Penguin:04/12/30 10:09:32 ID:4MuG0KSs
自己レスとか言う奴です。
ここにそのものズバリがありました。
ご参考に。

http://www.csg.is.titech.ac.jp/~kourai/memo/linux_kernel.html
939login:Penguin:05/01/29 14:37:42 ID:gZ/pqgzp
おしえろ

# define __acquire(x)__context__(1)

__context__(1)ってのはどういう意味?

教えてくれた人には俺の妹をもれなくプレゼント!
940login:Penguin:05/02/01 14:08:57 ID:lTL5Ae25
>>939
コンテキストスイッチ。

って何だったっけ?

ああ、不完全だからおぱーいとマソこだけでいいよ。
941login:Penguin:05/02/01 15:58:58 ID:Azn3cU4M
>>940
とりあえずレスに感謝。あんた最高だよ、ただコンテキストスイッチじゃないんだよな。
不正解だから>>940には、俺の使用済みティッシュ(3年分)をもれなくプレゼント!

__context__(1)ってのはどうもgcc拡張っぽい気がするんだ。
942login:Penguin:05/02/03 11:47:43 ID:vTRZ9nM+
このスレ最高
943login:Penguin:05/02/03 12:58:08 ID:8pVcdBBv
linux2.6 の include/asm-generic/percpu.h の per_cpu() がどういうものなのか
理解できずに苦しんでます。どうかご教授ください。
944login:Penguin:05/02/20 01:52:12 ID:HsEiZt6D
ぱっと見だけど、
DEFINE_PER_CPUで定義したCPU毎の変数を取り出すマクロじゃないの?

ttp://lwn.net/Articles/22911/
945login:Penguin:05/02/20 01:59:27 ID:HsEiZt6D
うぉ!2週間前か…。
946943:05/02/23 08:44:24 ID:L5tOcRY0
>>944
ありがとうございますm(_ _)m
半分、あきらめかけていました。
947CPUID:05/02/25 14:48:05 ID:T5ngmMgI
ユーザ空間からプロセススクリプトのアドレス取得する方法があれば教えて下さい。
948login:Penguin:05/02/25 21:56:30 ID:Kyzhm2lt
プロセススクリプト? 何のことを言おうとしているのだろう・・・
949login:Penguin:05/02/25 23:10:03 ID:L0S86Pvn
すみません。
すプロセスディスクリプタの誤りです。
950login:Penguin:05/02/25 23:55:11 ID:Nj2juC+S
>>949
そんなんユーザー空間から見えちゃまずいだろう。
951login:Penguin:05/02/26 13:57:10 ID:NTEY/KLT
何をするつもりだ>>949
お前は一人で世界を救おうというのか!
952login:Penguin:05/02/26 20:38:32 ID:c7lqcqLw
おい。
カーネルを理解したいのだ。

「この本をこの通りに順番に読め!」
というのがあったら、教えてください。
953login:Penguin:05/02/26 21:54:11 ID:PsgioYqx
>>952
本などない
ソース嫁
954login:Penguin:05/02/27 14:18:38 ID:BnGxFurs
↓の2つのマクロの意味が分かりません。もう限界です。
これ以上理解できない状態が続くと、妻を道連れに逝くかもしれません。
そうなったらお前らすごい後悔するよな、そうだよな、そうだろ!
心の中で否定しても無駄だ、絶対後悔しちゃうぞ。
後悔したくないよな、そうだよな。

じゃー、さっさと教えてちょ!

include/linux/compiler.h
# define __releases(x)__attribute__((context(1,0)))
# define __acquire(x)__context__(1)

すいません、ちょっと強気に迫ってみましたが、教えてください。
本当に困ってます。頼みます。m(_ _)m
955login:Penguin:05/02/27 14:21:21 ID:BnGxFurs
>>952

1. UnixUserのLinux2.6解読室
2. 詳解Linuxカーネル
3. Linuxのソース
956login:Penguin:05/02/27 20:25:37 ID:1DzM+Kt1
>>955
詳細Linuxカーネルは持ってます。
UnixUserのブートの本も。

ただ、それに至る知識がないのです。

Linuxプログラミング(ソフトバンクのやつ)も読んでいるのですが、
「何かが足りない」感じなのです。
957login:Penguin:05/02/27 20:27:14 ID:1DzM+Kt1
UNIXカーネルの設計でも読んで、修行します。
958login:Penguin:05/02/27 20:53:44 ID:+C2cvjvn
>>956
恐らくハードウェアの知識と根性

>>954
それバージョンいくつ?そんな内容ないし。

それに__attribute__について知りたいならgccのinfoで
C Extensionの項目の
* Function Attributes:: Declaring that functions have no side effects,
or that they can never return.
* Attribute Syntax:: Formal syntax for attributes.
* Variable Attributes::Specifying attributes of variables.
* Type Attributes::Specifying attributes of types.
この辺り見れば?
959login:Penguin:05/02/27 20:54:49 ID:BnGxFurs
>>956

あくまで個人的な意見だが、Linuxカーネルはプロセッサの知識
が無いと苦しい。
「はじめて読む8086」→「はじめて読む486」
を読んで、プロセッサの知識を身につけておいた方が良いと思う。

ただ、「あれやって、これやって、そしてLinuxカーネルを読もう」
とあまり遠回りをするのではなく、プロセッサとC言語の知識が
あったら、すぐにLinuxカーネルを読み始めた方がよいように思う。
960954:05/02/27 21:00:55 ID:BnGxFurs
>>958
とりあえずレス、サンクス!感謝感謝感謝
Linux2.6.10です。
探してみたんだけど見つかりません>gccのinfo (ToT)

context()っていう関数が一体、どの関数のことなのか知りたいです。
961login:Penguin:05/02/28 11:32:10 ID:D7G2yqC2
>>960

つ[GNU GLOBAL ソースコードタグシステム]
http://tamacom.com/global-j.html
962960:05/03/01 07:37:21 ID:yi/Urpst
>>961

サンクス、ちょっと試してみます!
追って報告する!
963960:05/03/01 11:16:17 ID:yi/Urpst
やはり見つからない(T_T)

include/linux/compiler.h
の中のマクロってことがヒントかもしれない。
http://lxr.linux.no/source/include/linux/compiler.h#L6
↑の場所なんだが、
#ifdef __CHECKER__
っというのは何だろう?__ASSEMBLY__とかいう定義もあるが、
これはどこで調べれば良いのだろうか。

どうか放置せずに教えてください m(_ _)m

これ以上停滞してると、・・・お、お客さんが怖い・・・
964login:Penguin:05/03/01 11:56:56 ID:dudfwCjE
仕事を2chに丸投げですか そうですか。
965login:Penguin:05/03/01 12:04:54 ID:eifVJR66
>>963
>これ以上停滞してると、・・・お、お客さんが怖い・・・
ソースを解析する仕事??
966login:Penguin:05/03/01 12:14:12 ID:PnFz+g+l
出来もしない仕事なんて引き受けるなよ…
967960:05/03/01 13:45:21 ID:yi/Urpst
>>964-966
スイマセン。

ソースを解析する仕事じゃないんだけど、ちょっと行き詰ってまして・・・。
968login:Penguin:05/03/01 15:25:54 ID:eifVJR66
むしろ>>963の質問よりも仕事内容の方が気になった...
969960:05/03/01 16:13:44 ID:yi/Urpst
とある医療関連会社のシステムの試作(主にデバドラ)をやってます。
下請けなので断れない立場です(T_T)
970login:Penguin:05/03/01 16:16:52 ID:xn0lGzJZ
できもしない仕事請けるなよ。
おたがい不幸になるだけだ。
971login:Penguin:05/03/01 16:21:19 ID:xn0lGzJZ
この話が終わりしだい↓に統合でいいよね。

【Linux】カーネル総合2【Kernel】
http://pc5.2ch.net/test/read.cgi/linux/1100967722/
972login:Penguin:05/03/01 16:36:21 ID:eifVJR66
>>969
ちょっと調べたら自分はわかったよ。

言っておくけどデバドラ開発ならこれらは知らなくても別に問題ないよ。
無視してもいい。


ちょっとだけヒント:これらはgccでは使用しません
973960:05/03/01 16:44:06 ID:yi/Urpst
>>972
サンクス!x9
か、かなり気が楽になったよ。お前は神だ!
できればどこを調べたのか知りたいのだが・・・頼む.com

>>970は厳しいね。
仕事、断れるくらい大きい会社に勤めてるんだろうね。うらやましぃ...
974login:Penguin
>>973
>できればどこを調べたのか知りたいのだが・・・頼む.com
(ーー;)
無視してもよいと言ってるではないか...

Use the source and google, >>963




− May the source be with >>963