☆Linux カーネルの仕組みを勉強するスレ☆
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001login:Penguin
01/10/02 17:44ID:38KkZsUQカーネル全般について語り合うスレッドです。
0002先生
01/10/02 17:57ID:eJtCpXEo0003login:Penguin
01/10/02 18:33ID:E7mCRr2Iメモリ管理について教えてください。
仮想メモリってなんですか?
もはやメモリをケチる必要がないので
仮想メモリシステムは過去の遺物なのでは?
0004login:Penguin
01/10/02 18:37ID:qNtnxrRQ0005生徒A
01/10/02 18:43ID:ozLMsuOI先生は逃げたみたいなので代わりに回答.
仮想メモリがないとメモリが分断されまくる.
あ,でもメモリ空間が64ビットならば不要?
いや,年単位で連続運用するならやっぱいるか.
0006login:Penguin
01/10/02 18:51ID:E7mCRr2Iレスありがとうございます。
でもなかなか難しいですね。
カーネルの勉強するにはどこから入ればいいのでしょうか?
0007login:Penguin
01/10/02 18:59ID:OaJKhMPgこの辺でも読んでみれば?
俺は読んでないから(w、良いのかどうか知らんけど。
0008login:Penguin
01/10/02 19:04ID:E7mCRr2Iしかしこれまた難しそうですね(笑
でもカーネルを勉強するからにはやっぱり避けられないのでしょう・・・・
頑張って読んでみます。ありがとうございました。
0009生徒A
01/10/02 19:15ID:ozLMsuOIなら,マイクロカーネルのITRONやMINIXなど,小さいもの
から学ぶのが良いと思われ.
ファイルシステムも標準出力も無いが,メモリやプロセスの
管理など,基本的な部分が学べる.
ところでこのスレには,先月のLinux Kernel Conferenceに
参加した猛者はおらんのか? 漏れは猛者では無いが参加
した.カーネルの概要など,一般的な部分が多かったが,
勉強になった.
0010login:Penguin
01/10/02 19:47ID:OjgDyI7Mこのあたりから眺めてみるのもいいかも。
ftp://ftp.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.bz2
0011login:Penguin
01/10/02 22:28ID:6FKAXCY.有名どころだけど
http://www.linux.or.jp/JF/ の
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html
0012login:Penguin
01/10/02 22:30ID:6FKAXCY.でもカーネルに踏み込んでいって初めてLinuxの楽しさがわかりますなぁ。
0013名無しさん
01/10/02 22:46ID:zSfn87tEくわしくおしえてください
0014login:Penguin
01/10/02 23:05ID:5C40lEU6slab allocatorなら教えてあげられるけど・・
0015名無しさん@お腹いっぱい。
01/10/02 23:11ID:YMg.KQfsこれはいいよ。おれもよく眺めてるw
0016login:Penguin
01/10/02 23:17ID:oluBGeawなにお熱くなってるんだ?
0017login:Penguin
01/10/02 23:22ID:72q63jd2興味ない奴は、別に気にしなくてもいいよ。
0018login:Penguin
01/10/02 23:49ID:wFiCO6hIslab ってのは、
ページサイズより小さな領域を効率よく割り当てる
仕組み。いくつかの「オブジェクト」をまとめて割り当てて、そこから割り当てるようになってる。
特徴的には、Linuxだと
- キャッシュラインをずらしてキャッシュヒット率を上げてる。
- 2.4 だと CPU ごとのプールがあって、競合しにくくなってる。
ぐらいか。
オリジナルは Sun のやつで、論文がでてる。slab allocator Sun とかで検索かければたくさんヒットするよ。
Sun のは、無駄な再初期化を減らす方に主眼が置かれてたみたいだけど、Linux はそういう使い方はしてない。
0019login:Penguin
01/10/02 23:53ID:2Dl0has60020login:Penguin
01/10/03 00:29ID:qmOPlmH.LinuxJapanのやつだよね。
雑誌のほうがきちんとかかれているので、高いけど我慢して買ってます。
0021login:Penguin
01/10/03 00:30ID:qmOPlmH.0022login:Penguin
01/10/03 00:49ID:hQhC8R6Eオープンソースコメンタリー(?)とかいうヤシは
参考になりますか?
0023login:Penguin
01/10/03 15:39ID:OoBvWckAUNIX Internals: The New Frontiers / Uresh Vahalia
(邦訳:最前線 UNIX のカーネル)
一冊でほとんど網羅してるので、質問する前に必ず読め。
0024login:Penguin
01/10/03 19:06ID:2CGhO19gUNIXカーネルとLINUXカーネルは別物ではないですか?
0025生徒A
01/10/03 20:26ID:L1U0davcOSの構造なんて,大体似たようなもんだから,1つわかれば
別のOSについてもわかるので,わかりやすい物から攻略すべし.
って漏れも修行中なんだけど.
Solarisなんかは結構すっきりしていて良いかと.
0026login:Penguin
01/10/03 20:34ID:OZlrqpPMオライリーの新しいのもあります。これも難しい....
詳解 Linuxカーネル
ttp://www.oreilly.co.jp/BOOK/kernel/
002722
01/10/03 20:56ID:hQhC8R6E立ち読みしてみたけど。あまりよくないみたいっす。小学館。
詳解Linuxカーネル、買おうと思っていたんだけど、
ギリギリ足りなかったので、
「Lions' Commentary on UNIX」ってのを買いました。
最初、「ヤッチマッター」とか思ったんですが、
よく読むと結構面白いデス。
0028??????
01/10/03 21:06ID:bEXvgoqgの中で、
「カーネルはずいぶん巨大なプログラムになっているが、カーネルについて
勉強するとすれば、どこから手をつければいいのか?」
という質問に、リーナスさんが答えてます。
0029login:Penguin
01/10/03 21:15ID:WC8.1bjoどの本も高いからね。失敗は許されない(笑
ところで生徒Aさんは理系の学生ですね?
「 . 」と使うのは理系の学生ということを最近知りました。
全然関係ないのですが・・・・・・
学生のあいだじゃないとKernelの勉強する余裕も暇も無いんだろうなぁ
0030login:Penguin
01/10/03 21:33ID:7HwwpjBYLionsの本はいいよ。まだ小さいころのUNIXだから楽に読める。
ただ、うちの学生に読ませるとPDP/11の構造とか昔のCの
特異なシンタックスとか、ユーザー空間とカーネル空間の
マッピングなんかが分かりにくいから少し丁寧に解説しなくては
ならなくてめんどい。
>>18 誤爆だよ。>>13はslab accellarator って書いてるんだよ。
003122
01/10/03 21:36ID:hQhC8R6E>>29
Lions' Commentary on UNIX 、イイです。
他のカーネル解析本が5、6、7千円する中、
3800円という値段だし、ソースのコメントも、
解説も、厨房の漏れにも簡単に理解できます。
UNIX6thEditionのソースだけど。。。
ま、まぁ、かなり良書だと思います。
PDP-11モッテルヒトニトッテハナー (・∀・)
ヒガイシャハオレダケジャイヤダナー(・∀・)
カッテクレーカッテクレー (T∀T)
0032
01/10/03 21:59ID:6FwjUW2sほんまむだやで。
0033login:Penguin
01/10/03 23:58ID:eXoVUEs6そうそう。カーネルを勉強したからといってどうせOSを作るわけでもないんだろ?
はっきりいって仕事でそんな知識は必要ありません。必要なのは体力、根性です(藁
0034login:Penguin
01/10/04 00:06ID:qcYQ0G.sカーネルハックして、自分の環境に
より適合させたいってのはあるんですが。
それに、コンピューター関連の仕事なら
かなり役に立つらしいですよ。
0035login:Penguin
01/10/04 00:19ID:IJ/BVV8A御意。カーネルを読むことによってプログラミング
することが楽しくなり、おまけにコンピュータに
関する様々な知識が得られるでしょう。
0036login:Penguin
01/10/04 01:37ID:TP.JpGmU仕事でカーネルいじってますが、何か?
0037生徒A
01/10/04 02:20ID:BnS2BE2U本棚からお勧め書籍を紹介。
●A.S.タネンバウム, A.S.ウッドハル/ オペレーティングシステム
・設計と理論およびMINIXによる実装, ピアソン, ¥8,800
個人的にはOSの本を1冊かうならコレ。マイクロカーネルのUNIX
(下位)互換のOS、MINIXの解説本。図版も適切でわかりやすく、
巻末に解説付きソースコードとCD-ROMが付属。
●A.S.タネンバウム / 分散オペレーティングシステム
(プレンティスホール)¥6,400
基本的に分散アーキテクチャの本だが、スレッドやセマフォ、
メッセージパッシングなどといったOSの基本を学ぶのに最適。
マルチプロセッサに関してもかなり詳しい。
ほかにも色々あるけど、とりあえず2冊。
0038login:Penguin
01/10/04 05:17ID:Up.CcwEMカーネルデザインってのはソフトウェアエンジニアの一般教養の一つだろ。
一般教養はえてして practical には見えんもんだけど。
でも、物事に対する造詣の深さってのはそういう一般教養の積み重ねなんだよ。
薄っぺらいつまらんエンジニアで一生を終えたいんなら必要ないけどな。
0039login:Penguin
01/10/04 12:17ID:qcYQ0G.s調べてみた。
http://www.amazon.co.jp/exec/obidos/ASIN/4894710471/ref=sr_aps_d_1_1/250-2499176-5469014
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9971429985
あと、MINIXに関する本は
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?KEYWORD=%4D%69%6E%69%78
0040login:Penguin
01/10/04 12:54ID:7fdQf4Tsはよさげ。
00414
01/10/05 00:23ID:gYIiu.Dk0042login:Penguin
01/10/05 00:28ID:x.kXOwPcオメデトーアゲ
004341
01/10/05 19:30ID:b1Ltl45Y004441
01/10/05 19:30ID:b1Ltl45Y0045login:Penguin
01/10/05 22:02ID:s1QC/7Fg(´-`).。oO(オメデト...)
0046生徒A
01/10/08 17:37ID:ckosTg1k>「C言語初歩段階」の私が、Linuxのカーネルを「読んで理解出来るよ
>うになる」段階に到達するには、一体どんな本を勉強すればよろしいの
>でしょうか?
別スレの質問だが、「C言語初歩段階」なんて言っているくらいなら
C言語をマスターするのが先。プログラム板でC言語関連の書籍を捜す
べし。
とりあえずC言語で1万行くらいのプログラムを書け。話はそれからだ。
期待しているよ。
0047login:Penguin
01/10/08 17:59ID:b/ngw8PEclassぐらいは理解できんときついわな!!
0048login:Penguin
01/10/08 18:40ID:a7vO/utYコード数、UNIX6Editionの主要部分より
多いし。
0049login:Penguin
01/10/08 21:03ID:x5IDA3B2解説してくれる人いますか?
SE用の実装で、ILRの向こうの8259をどう扱えば良いか、悩んでるんですが。
0050login:Penguin
01/10/08 21:04ID:x5IDA3B20051生徒A
01/10/08 22:34ID:YM3gMNoMSH-4は割り込みが1本にまとめられていて、割り込み要因が
どれかはソフトウェアで判定しなければならないため、
PC/ATの割り込みコントローラをエミュレートする形で
割り込みを判定するルーチン…でいいのかなぁ。
もし全然嘘だったらごめんなさい。
念のため、Linux/SHのページを貼っておきます。
http://linuxsh.sourceforge.net/docs/abe/doc/linux-sh-kernel-bootup_J.php3
0052login:Penguin
01/10/09 00:13ID:bLcM5DEQ005352
01/10/09 00:16ID:bLcM5DEQできたてのころのカーネルはデバイスドライバがバグりやすいとか書いてあったなあ、
入れるのに少し抵抗が、、
0054生徒A
01/10/09 01:04ID:3eF2sAZg005553
01/10/09 01:09ID:bLcM5DEQなるほど・・!
VM上で動かせばディスク死んだりすることも無いということですね!
(勘違いだったら死脳ッ戸
レスありがとうございます。
0056生徒A
01/10/09 03:03ID:3eF2sAZg>OSを採用するべきではないかとおもうのですが
別スレの質問。技術的には言っていることは正しい(多分)。
ただ、そのような言語を理解できる人が少ないため、カーネルの
メンテナンス要因が激減すると思われ。
そのデメリットがメリットを上回っているのが現状。
「いいや違う」という反論はソースコードでのみ受け付ける。
もちろん、君がオブジェクト指向言語で書いたOSのコードでね。
0057login:Penguin
01/10/09 20:44ID:z4CgcBHE0058名無しさん@お腹いっぱい。
01/10/09 21:18ID:P9P83zo6そんな言語でOS作ったら悲惨なことになるっていう結論が出てた
0059login:Penguin
01/10/09 23:01ID:z4CgcBHE0060login:Penguin
01/10/09 23:43ID:bAzeTfP60061
01/10/14 09:30ID:q04qm9lH軽いから、デバイスドライバー部分とCPU周辺
チップのところ以外では、OSをインタープリター言語
で書いても十分実用になるのかな?
0062login:Penguin
01/10/14 23:50ID:bKvEFw2kカーネル部分を作るには、アセンブリがわかる必要がありますよね。
全部Cってわけにはいかないと思うのです。どこで勉強すればよいか教えて
ください。(Cはわかります。)
それから、OSがどんな風に立ち上がるのか(ローダーってやつ?)なんかも
どこで勉強すればよいのでしょう。ハードディスクの先頭に何かアセンブリで
書いておくのでしょうか?
スレを汚してすみません。でも初心者スレでは無視されるだけだと思いますので。
お願いします。
0063login:Penguin
01/10/15 00:06ID:yWyIFyqvhttp://www.linux.or.jp/JF/
読み漁れば脱初心者にはなれる。
>それから、OSがどんな風に立ち上がるのか(ローダーってやつ?)なんかも
>どこで勉強すればよいのでしょう。
上のサイトにも書いてあった気がするけど。
今月号のLinuxMagajineが特集してた。悪くない。
0065login:Penguin
01/10/15 00:15ID:IJzxys8Qほれ。
http://www.linux.or.jp/JF/JFdocs/From-PowerUp-To-Bash-Prompt-HOWTO.html
別に初心者スレでも無視しないけど。
006662
01/10/15 00:30ID:KoDPieN3ありがとうございます。
>別に初心者スレでも無視しないけど。
すみません。
0067login:Penguin
01/10/15 00:30ID:RTj/vcxRNetBSDの方がおもしろいぞ。いっぺん見てみろ。
0068login:Penguin
01/10/15 01:18ID:0RSIU0EvOSの勉強するんだったら、BSD勧めとく。
386の勉強するんだったら、Linuxも悪くない。
0069login:Penguin
01/10/15 01:25ID:c0PMqbqd0070login:Penguin
01/10/15 03:51ID:LRyZyG6E確かに。ソースを読むのもいいけど、とりあえず、
-current の man.tgz を持ってきて、/usr/share/man/cat9 を
覗くだけでも宝の山。
hard link が多いから、ファイル選んで読むべし。
0071login:Penguin
01/10/15 07:44ID:RTj/vcxRの順番で勉強せい。
MINIX、386BSDの挙動を完全に理解できたら、後のものはソースコードを眺めるだけでよし。
いきなりLinuxカーネルはきつすぎる。
良い意味で実用主義、悪い意味で「とりあえず動けばOK」。
ただひたすら読みにくい。
Linux、*BSDを読み終えたらSunだ。ちゃんと金払えよ。
そしてスレッドの美しさに酔いしれろ。
0072login:Penguin
01/10/15 07:52ID:fLIHewuGSolarisんとこ、machやl4の方がいいと思うけど。
0073login:Penguin
01/10/15 07:55ID:fLIHewuG0074login:Penguin
01/10/15 09:47ID:1RSiSLerソースを眺めているがサパーリわからん。
やはりVC++で500行程度のコードを書いたことが有る。
と言うレベルの俺には難しすぎる(わらぃ
007574
01/10/15 10:17ID:1RSiSLerああ、今まで必死にソースを追った作業は何だったんだろう?
鬱出汁脳
0076login:Penguin
01/10/16 00:45ID:B9OVQJ4uマジ感動するよ、
(カーネルの仕組みの前にPCのブートの仕組みを学ぶのもいいかも)
http://isweb32.infoseek.co.jp/computer/nobumasa/hardware/boot_hdd/boot/boot.html
参照
0077login:Penguin
01/10/16 00:59ID:0iRzhq4aいいドキュメントだね。
0078login:Penguin
01/10/16 06:05ID:+7CBRx1XSolaris とか NetBSD だと scheduler activation というネタもあるし、
FreeBSD にも KSE っていうネタがあって、おおよそ最近のスレッド技術は
深くカーネルと関係してるから、一概にそうともいえないよ。
ここまでくると上級レベルだから、構造の勉強というようなレベルは超えてるかもしれないけど。
0079login:Penguin
01/10/16 10:28ID:W7jl/1HX0080login:Penguin
01/10/16 21:00ID:+8viyP9S0081login:Penguin
01/10/16 22:02ID:tFjq3kLfちょっと厳しいんじゃないかな。
大まかにOSの構造を説明してある良書ってないん
ですかね。機能を知ってからソースを見ると、関数
名や変数名がヒントになるから、ぐっと理解が早い
と思うんですけど。
それとも、「これから勉強したい」人も、そこまで
は出来ているという前提?
0082login:Penguin
01/10/16 23:41ID:Lbh3v4LX0083login:Penguin
01/10/17 00:03ID:p7GUM0P4大あり
0084login:Penguin
01/10/17 00:11ID:58ZfHvGc2種やら1種のテキストに書いてあるレベルの知識と、ソース読むことの
間を埋めてくれるのって、どんな知識でしょう?
個人的にはCの知識かな、と思うけど、ケーススタディとしてカーネルを
使うのは厳しそうだと気づいた今日この頃です。
0085login:Penguin
01/10/17 00:15ID:6udvZ9Dg>間を埋めてくれるのって、どんな知識でしょう?
努力と根性と経験です。
0086login:Penguin
01/10/17 00:36ID:kW1Ppu3x0087login:Penguin
01/10/17 01:12ID:0KcBObcyおらいりー「詳解 linuxカーネル」
0088login:Penguin
01/10/17 01:17ID:BOPoQ/5Yおなじおらいりーでも、でばどら本から入っていくってのも
手だな。ちょっと古いけど。
売りポイントとしては、「実際に自分で作ったものを動かせる。
動かすことで理解が深まる」ってとこかな。
0089login:Penguin
01/10/17 01:22ID:kW1Ppu3xhttp://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/english-books/0596000081
0090login:Penguin
01/10/17 01:27ID:6udvZ9Dg気になるのは、元にしてるのは2.2系なのか2.4系なのか、かな。
0091login:Penguin
01/10/17 06:38ID:8SzjHmJIその為の悪魔本とかなんじゃねーの?
あと *BSD とかのソースが綺麗で読みやすいといか言ってのは
実際に読んだことのない厨だな。
まぁ綺麗なのは事実だが FreeBSD の VM は悪魔のように(苦笑)複雑で
とりあえず論文読まないと通読は不可。
http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/vm-design/index.html
http://www.ccrc.wustl.edu/pub/chuck/tech/uvm/
Linux のカーネルはすげー実装がシンプルだから逆に読みやすいと思うが。
>>71
>MINIX -> 386BSD -> NetBSD -> FreeBSD -> Linux -> Solaris
386BSD って 4.3BSD Tahoe/Reno だろ? イマドキどーすんだ,あんなの読んで。
4.4BSD lite が入手できるんだからそっち読んどくが吉。
0092♯6411
01/10/17 11:04ID:Nt5BAsRN悪魔本でも、和訳の
「4.3BSDの設計と実装」
は、初心者には(もちろんエキスパートにも)
オススメじゃないよね?
…って、まだ版を重ねてんだろか?
原書嫁。
Linuxのカーネルがある意味読みやすいというのは
同意。386の教科書が傍らにあるとベターかな。
ただ、ネットワーク周りは、読んで脱力したこともしばしば。
0093login:Penguin
01/10/18 02:31ID:EfR4Vz7cたしかに、4.4BSD みたいに抽象度が高いとまっすぐ読めなくなるから総体的な知識が必要になるし、
Linux はベタだから、前提知識なしにパッと見て quick hack する場合は楽だけど、
Linux は全体的にソースが汚いし、ベタなんであまり勉強にはなりません。
0094login:Penguin
01/10/18 02:34ID:EfR4Vz7c今なら、Linux VM でも FreeBSD の Mach VM でもなくて、
NetBSD の uvm を読んだ方がいい。
0095login:Penguin
01/10/18 05:52ID:u3DpsjUwお前は本当に UVM を読みたいのかと問いたい。問い詰めたい。小1時間問い詰
めたい。お前、UVM って言いたいだけちゃうんかと。
まあお前らド素人は、Linux VM でも読んでなさいってこった。
0096login:Penguin
01/10/19 02:01ID:TH1cXybv0097MINIXカーネル解読中
01/10/24 16:18ID:XFF6eHt30098生徒A
01/10/24 16:49ID:Sk/5JNlU全部じゃないが).
0099login:Penguin
01/10/24 19:35ID:4dNCtF18MINIXと386BSDのソースのありか(URI)きぼーん
0100login:Penguin
01/10/24 19:39ID:UYXjUcucftpサーチで一発だよ、厨房君?
0101login:Penguin
01/10/24 20:00ID:ZaQ1mC9Dftpサーチって何?
0102login:Penguin
01/10/24 20:03ID:XZp0N0cmGoogleで一発だよ
0103gea
01/10/26 01:49ID:M11l2acb0104login:Penguin
01/10/26 03:17ID:/MJaN4Ug0105login:Penguin
01/10/26 04:01ID:FmgZ80usネタなんだろうけどモトネタがわからないのでマジレス
http://www.ccrc.wustl.edu/pub/chuck/tech/uvm/
これまでの COW を更に進めて匿名ページの COW もやるようにした VM ね。
0106完全気密性型個室チャット設置
01/10/26 09:00ID:JKN2MAJ418個設置。共有チャットも10個設置。
気軽に参加してくださいね。
みなさんのお越しをお待ちして
おります。右フレームの中ほどに
あります。よろしくね。
http://home9.highway.ne.jp/cym10262/
0107某スレの12
01/10/27 11:12ID:eYNUQGN30108房スレの13
01/10/27 11:32ID:YfJuIONB0109login:Penguin
01/10/27 12:01ID:wm8gbMCY0110login:Penguin
01/10/27 15:21ID:5IDha0Op0111login:Penguin
01/10/27 15:28ID:lXVHxyhY気密型ハカーとお勉強イイ!
0112カーネル初心者
01/10/27 16:27ID:Hh35ZjqYつくれますか?
0114110
01/10/28 02:37ID:v7FYjkutHDDコントローラ?の仕様とか見ながら書いたのかな
仕様って手に入るのかな・・。
0115login:Penguin
01/10/28 02:51ID:c0cZVdxb東芝の開発者向けサイト
http://linux.toshiba-dme.co.jp/linux/jpn/develop.php3
0116login:Penguin
01/10/28 02:53ID:cJ0fmml80.0.1って....
あまり古すぎじゃないか?移植どころか、「とりあえず動かす」
ころのだろうから、ちょっと読むにも大変なんでわ?
コントローラの仕様ってのは、どっかで手にはいりそうだね。
とりあえずは、
CQ出版社のインターフェース増刊
TECH I vol.10 ATA(IDE)/ATAPIの徹底研究
でどーよ?
0117110
01/10/28 04:40ID:v7FYjkut0.0.1のカーネルって小さいから読みやすいかな、
と思ったけどMINIXのほうを読むことにしよっと・・。
インターフェースの増刊かなり最新ですね・・すぐ手に入りそうだ。
っていうかインターフェースって雑誌、今はじめて知りました・・
バックナンバーの目次とか眺めたけどすごく面白そう、何で今まで知らなかったんだろう・・
116さんに感謝・・。
0118117
01/10/28 04:41ID:v7FYjkut0119login:Penguin
01/11/05 04:47ID:zk7Lax0shttp://www.amazon.co.jp/exec/obidos/ASIN/0471408824/
0120教えて!!!
01/11/06 23:49ID:seaNFRBfrpmのバージョンアップをしろといわれてしかなたく
rpmのバージョンアップをしようとしています。
環境はTLJ6.0で、Pentium 166MHzです。
現在は3.0.3なんですが、これを3.0.4以上にしなければなりません。
でも
#rpm --rebuild rpm-3.0.6-15.src.rpm
の実行中に
/usr/include/bits/string2.h:XXX warning : pointer of type 'void *' used in arithmetic
といった種類のメッセージがダぁーっと出てきます。それでも処理はずっと続いて3分くらいしたらとまるんですが、非常に不安です。このとき実は渡さなければならなかった引数とかありますか?
わかんないんでしょうがなくある方に教えていただいて
rpm -Uvh rpm-3.0.6-15.i386.rpm
を実行しました。
そしたらこんな表示が・・・・
libpopt.so.0 is needed by rpm-3.0.6-15
どないなってまんねん???
i?86のところの*は環境によって違うということですが、それは具体的にどういう意味ですか?
ほんとにタコタコで申し訳ありません。どうかこの哀れなタコを助けてください。*_*
それからも一つ質問!
どうしてこんなにリナックスは難しいんですか?
0121login:Penguin
01/11/07 01:19ID:5qQLJtTDマルチうざい
0123login:Penguin
01/11/07 10:07ID:D4X9uT1H0124login:Penguin
01/11/07 11:58ID:D4X9uT1HオープンソースのOSであるLinuxの元々の開発者,リーナス・
トーバルス氏の右腕であるアラン・コックス氏は,Linuxカーネル2.4
のメンテナンスを担当しないことを明らかにした。トーバルス氏は,
開発ツリー2.5に集中するため,今後数週間以内にLinuxカーネル2.4
をコックス氏に任せるとしていた。
有識者のコメントを求む
0125login:Penguin
01/11/07 12:35ID:HqCHYej/124は記事内容を理解していない。よって終了。
0126login:Penguin
01/11/07 13:03ID:D4X9uT1H解説してください。お願いします。理解したいんです。
0127login:Penguin
01/11/07 13:10ID:BmKSSlYi>は,これまでもグループで行ってきたことで
>あり,これからもそれは変わらない
0128login:Penguin
01/11/07 15:29ID:FmMqLr+t0129login:Penguin
01/11/07 18:21ID:EVaWvNemacが逝くとかなりピンチ。
0130login:Penguin
01/11/07 23:16ID:9nIeZqmz-ac カーネルの Rik's VM とは?
http://clotho.ku3g.org/diary/?20011014#200110142
0131login:Penguin
01/11/08 00:39ID:6uTuNsVr0132login:Penguin
01/11/08 04:38ID:OuhnMvOV簡単だし、どうせマイクロカーネルだからっていう割り切りで、仮想化しまくってないのが、見通しの良さにつながってるように思う。
そのぶん癖はあるけど(IPCとか)、とりあえずどんなことやる必要があるかがわかるとおもう。
でも、モノリシックカーネルでの優先度制御とか、複雑なvmまわりとか勉強したいなら、NetBSDかなぁ。
わりと読みやすいけど、完全に理解するはなかなか・・・。
0133login:Penguin
01/11/10 00:06ID:GrwBKvex2.5の機能のメインっていったら、INPUTデバイス!
こいつが入力関係を一手に引き受けてくれるもんで、USBやらjoystickやらkybodeやらマウスやらが
シンプルになって、手軽にrawレベルで入力デバイスにアクセスできるようになるんだよう〜
そこの厨房な君も、他になにが追加されるか予想してみよう。
0134login:Penguin
01/11/10 00:10ID:I2bxXvg2イタい、イタすぎる....
0135login:Penguin
01/11/10 00:10ID:YzLCB467/dev/input
とは違うのか?
0136133
01/11/10 00:20ID:GrwBKvex0137133
01/11/10 00:25ID:GrwBKvexモタイブリッコ!発見!ハゲじゃなくって吐け、何をしってるんだ。 ゴラァ!
0138login:Penguin
01/11/10 01:31ID:JYB21yE5・全角アルファベット
・そもそも提案が意味不明
これだけ揃ってれば痛いだろ(w
個人的にはIDE CD-Rの扱いが楽になって欲しい。
ide-scsi使わないといけないのはめんどくさい。
0139login:Penguin
01/11/10 01:48ID:P+u86UuI・スケジューラのマルチメディア対応とマルチキュー化
・暗号化ファイルシステム
・n:mカーネルスレッド(無理か)
0140login:Penguin
01/11/10 02:11ID:H1+mtcC9呼び出すなよ。
厨房な俺の予想に意味があるのか?
http://lwn.net/2001/features/KernelSummit/
でも読めよ。
0141login:Penguin
01/11/11 01:23ID:gpvCOabaこれをPS/2とかの、USB以外のマウスとかキーボードに対応させて、
inputでイベント処理をさせるってことですなぁ ちがうか?汗
/dev/eventXで、流れて来たイベントを拾って、処理できるようになるから、
フレームバッファ関連のアプリが充実するのに期待しちゃうYOU。
0142login:Penguin
01/11/11 01:35ID:H6R3aNYWIBM が gnu のをベースにやってる n:m スレッドは
ユーザランドのスレッドだっけ?
0143login:Penguin
01/11/11 01:49ID:gBx3tRWzカーネル2.4になったら、Sound Blasterのゲームポートに差したアナログジョイスティック
の/dev/js0も/dev/input/js0へのシンボリックリンクになてたよ。
0144login:Penguin
01/11/11 12:02ID:Vp1d/jukNGPTだよね?
http://oss.software.ibm.com/developerworks/opensource/pthreads/
元の Pth は、ユーザレベルのスレッド実装だけど、
ちゃんとM:Nになってるみたいだけど。
まだ、SMPではちゃんと動いてないみたいですね。
次のバージョンで対応するようですが。
0145login:Penguin
01/11/11 12:59ID:gpvCOabaそか、ジョイステックも対応してたのか〜、
今のシステムってキーボードからの入力を拾うのってかなりメンドウでない?
たとえば、svgalibでもXでも、一度RAWモードで、キー入力を握られると、
他はどうにもできないのさ、それでXがエラーでおちたりしたら、
PCの後ろにシリアルケーブルつないでどうにかするしかないし。
それが改善されるんだよ〜っていいたかったのだ。
今は、まだ、 keybdev.cからhandle_scancodeっていう、
char/keyboard.cの関数を呼出ちゃってるウンコ仕様なんだけど、
この変がシンプルになるんだよ〜
シッタカブリしてしまったかのぉ、なははは。
ネタはこの辺↓
http://cvs.sf.net/cgi-bin/viewcvs.cgi/linuxconsole/ruby/linux/
0146login:Penguin
01/11/11 12:59ID:ZFz8sYwI本家MLで議論されてるのを何回か見たが、
永久に実装される日はこなさそうだ。
確かに実装されればパフォーマンスは向上するけど、
別に今のままでも充分パフォーマンスいいから必要ないって結論らしい。
つーか、ボランティアで開発するには手間と暇が・・・
0147login:Penguin
01/11/11 18:30ID:ZDELobu/n:mカーネルスレッドってなに?
0148login:Penguin
01/11/12 12:37ID:IjOleHL1実際に平行して走るスレッド数と、スレッド数が違う。
Linuxの今のカーネルスレッドの場合は、両方同じ。
0149login:Penguin
01/11/12 17:24ID:IV1WKQExんなことないっしょ。
Linux よりもよっぽど人手のなさそうな FreeBSD (KSE) とか、さらに
人手のなさそうな NetBSD (nathanw_sa) でも開発が進んでいるんだし。
問題は人手というよりも、Linux カーネル開発メンバーの石頭 (N:M スレッド
が大嫌いな奴が結構多い) じゃないの?
0150147
01/11/12 18:57ID:JAFYYv/Y> 実際に平行して走るスレッド数と、スレッド数が違う。
> Linuxの今のカーネルスレッドの場合は、両方同じ。
いやそれは n:m のスレッドだよね。
カーネルスレッドは常に 1:1 では?
もしかしてスケジューラアクティベーションとかの話題?
0151login:Penguin
01/11/12 19:14ID:JAFYYv/Yone-to-many ユーザー空間スレッド
one-to-one カーネルスレッド
meny-to-meny 上記のハイブリッド
だと思ってたんだけど俺の認識は間違ってるか?
Solalis なんかは meny-to-meny だよな。
その為にスケジューラアクティベーションのような複雑な仕組を持ち込んでる。
Linux 的にはそんな複雑なものを持ち込んで性能を出せるかどうか…
ってのがまずあるんだろう。SMP とのバランスも取らないといけないしな。
0152login:Penguin
01/11/12 19:39ID:IV1WKQExmany-to-many 型がすなわち、スケジューラアクティベーションを意味する
わけじゃないよ。昔の Solaris では、スケジューラアクティベーション的
な実装はしてなかった。
で、昔の Solaris のやり方よりも、スケジューラアクティベーションの方が、
アイディアとしてはある意味シンプルだと思うな。
> Linux 的にはそんな複雑なものを持ち込んで性能を出せるかどうか…
> ってのがまずあるんだろう。
これが典型的な反応ですねえ… それが正しいかどうかは別だけど。
> SMP とのバランスも取らないといけないしな。
ここ意味わかんないなあ。バランスって何?
SMP と N:M スレッドって、トレードオフの関係にはないと思う。
>> 実際に平行して走るスレッド数と、スレッド数が違う。
「実際に並行して走る」ってのが何を意味しているか、ちょっと不明かな。
N:M スレッドってのは、ユーザランドスレッド M 個に対して、カーネルスレッ
ド N 個 (M >= N, N >= 1) を使うような実装のことです。
M == N だと 1:1 になっちゃうし N==1 だとユーザーランドスレッドになっちゃ
うけど、M > N とか N > 1 になりうるってところが違うところね。
蛇足:
s/Solalis/Solaris/
s/meny/many/g
0153login:Penguin
01/11/12 19:57ID:JAFYYv/Y> ここ意味わかんないなあ。バランスって何?
> SMP と N:M スレッドって、トレードオフの関係にはないと思う。
今のプロセスモデル(カーネルスレッド含む)で SMP をうまく使うようにデ
ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
くらいのハナシ。
> 蛇足:
> s/Solalis/Solaris/
> s/meny/many/g
スマソ(照
0154login:Penguin
01/11/12 20:08ID:JAFYYv/Y> 実装されて欲しいのは。
> ・スケジューラのマルチメディア対応とマルチキュー化
なんか具体性に欠けるけどプリエンプトなスケジューラは今実装中だぞ。
> ・暗号化ファイルシステム
loop.c をハクれ
0155login:Penguin
01/11/12 20:08ID:IV1WKQEx> ザインされているスケジューラで n:m スレッドを使うにはまた手間がかかる
> くらいのハナシ。
そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
の一つなんだし。
あと、個人的に Linux のスケジューラはあんまり信用してないっす。
他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)
0156login:Penguin
01/11/12 20:21ID:JAFYYv/Y> そのためのスケジューラアクティベーションなのでは? スレッドのスケジュー
> リングを、CPU の割り当ても含めてユーザーランドのスレッドライブラリで決
> 定できる (カーネルの実装で変な知恵を回す必要がない) というのがメリット
> の一つなんだし。
あーそうだった。前言撤回。
> あと、個人的に Linux のスケジューラはあんまり信用してないっす。
4.3BSDのスケジューラに毛の生えたようなモノだからね。
さすがに毎秒キューを再計算したりはしないけど。
> 他の UNIX 系 OS と比べて、I/O intensive なプロセスに CPU が回ってこな
> い傾向があると思う。(2.4 は調べてないので直ってたらスマソ)
キューの再計算をなるべく遅延させているからその点で違いが出てくるのかな。
0157login:Penguin
01/11/12 22:59ID:IV1WKQEx検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
priority 引数がないあたりにも問題があるのかもしれない。
(例えば *BSD 系だと sleep/tsleep に priority 引数があり、I/O 処理が
完了した直後は優先度が上がる)
もしそうだとすると、I/O 処理に関わる sleep_on 呼びだしを全て直さないと
解決できない、構造的問題ってことに…
0158login:Penguin
01/11/13 04:18ID:Rt2iJ7Brあと、Linux的なら、とりあえず実装してみて、性能でなかったらまた考えるでいいんじゃないんですかね。
よく考えて実装するのは、*BSDにまかせたらいいのでは(笑)
だれかやんないんだろうか。
0159login:Penguin
01/11/13 16:25ID:Istj8zjeだから、IBMのがあるって。
あれじゃだめなの?
0160login:Penguin
01/11/13 16:52ID:MqzmFHkNhttp://www-124.ibm.com/developerworks/oss/pthreads/
Next Generation POSIX Threading
The goal of this project is to attempt to solve the problems associated with the use of the pthreads library on
Linux. It will add M:N threading capability and improve significantly on the POSIX compliance of pthreads on
Linux. This will allow significant performance improvements for all applications that make use of the pthreads
library, particularly on SMP machines. It will also enable Linux to provide threading services that are more in
line with the capabilities of the commerical Unix operating system such as IBM AIX and SGI IRIX.
0162login:Penguin
01/11/13 20:00ID:/IBKTqGWI/O Insentive ってどのレベルをいってるんだ?
もしかして tty すか?プ
0163login:Penguin
01/11/13 20:09ID:36p1vksl経験したのは、ネットワーク I/O。
なんか latency 的に性能悪いなあと思って調べたらそういうことだった。
> もしかして tty すか?プ
ん? その心は?
0164login:Penguin
01/11/13 20:39ID:CaHKE6Ak> 検証したわけじゃないので、なんとも言えないんだけど、sleep_on() に
> priority 引数がないあたりにも問題があるのかもしれない。
これはシステムコールの違いでしょう。
Linuxには他にいくつかシステムコールが追加されているよ。
0165login:Penguin
01/11/13 20:42ID:36p1vkslああ、理解されてない。;_;
いいけど。
0166login:Penguin
01/11/13 20:53ID:CaHKE6Ak> ああ、理解されてない。;_;
ん? よくわかんないんだけど。スリープ優先度がないってこと?
0167login:Penguin
01/11/13 21:54ID:36p1vkslそもそも sleep_on() ってシステムコールじゃないでしょ。
> スリープ優先度がないってこと?
そうっす。
スケジューラの方を直すのは別に難しくないんだけど、sleep_on() を呼び出
しているところを全部書き換えるのが果てしなく面倒そう。それとも比較的単
純な置き換えで済むからなんとかなるのかなあ。
ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
だったので、そっちで適度に sched_yield() することにして、問題を回避し
たっす。というわけで、自分で直そうというモチベーションは出ないのね。
0168login:Penguin
01/11/13 22:28ID:CaHKE6Ak> 経験したのは、ネットワーク I/O。
> なんか latency 的に性能悪いなあと思って調べたらそういうことだった。
I/O InsentiveってネットワークI/OやDiskI/Oにも高い優先度を割り振った方が
いいスケジューラなの? 俺はそう思わんけど。
>>167
> ちなみに問題のシステムでは、CPU 食っているプロセスの方もシステムの一部
> だったので、そっちで適度に sched_yield() することにして、問題を回避し
> たっす。というわけで、自分で直そうというモチベーションは出ないのね。
応答性が重要ならそもそもOSの選択に間違いがあったと思われ。
0169login:Penguin
01/11/13 22:48ID:36p1vksl> いいスケジューラなの? 俺はそう思わんけど。
うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。
> 応答性が重要ならそもそもOSの選択に間違いがあったと思われ。
それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
0170login:Penguin
01/11/13 22:56ID:CaHKE6Ak> うーん、うーん、うーん。頼むから OS の教科書ぐらい読んでくれー。
ごめん。OS はほとんど自学なので基本的なことがわかってないかも知れない。
しかし多量のディスクI/Oや,遅いネットワークI/Oってのは短い応答時間が
必要だろうか? ってハナシ。
> それって、Linux よりも、商用UNIX やら *BSD やらを勧めてるってこと?
> 該当システムってハードリアルタイム性は全く必要ないので、UNIX で十分なんだが。
Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。
0171login:Penguin
01/11/13 23:19ID:36p1vkslシステム全体の「スループット」(not only 応答性) も向上させるのよ。
これ常識。
まともなハードウェアなら I/O と計算処理は並列動作できるから (PC 用の
安物ハードウェアには、駄目なものも多いが)、こうした方がシステム全体の並
列性が上がるんよ。I/O intensive なプロセスに CPU が回ってこないと、
本来発行できる筈の I/O 要求が発行できないので、並列度が落ちるわけ。
> Solaris なんかを使えばプリエンプトできるからずっとよいと思うけど。
実はそのソフトウェアは、開発段階では Solaris と BSD でも動かしてたんだ
が (最終版は Linux のみ)、Solaris だけじゃなくて BSD でも問題なかったのね。
だから、これに関してはカーネルレベルでのプリエンプティブ性は必要ない。
Linux 版がなんか遅いなあと気づいたのは、比較対象があったせいなわけ。
0172login:Penguin
01/11/13 23:27ID:cEWualSTでも、システム全体のスループットをあげるのが必ずしも良いとは限らないよね?
そうすると公平性が損なわれない?
0173login:Penguin
01/11/13 23:46ID:36p1vksl一般的にはスループットと応答性はトレードオフになることが多いからね。
でも、この件に限って言うと、スループットも応答性も両方とも向上する
ので、当てはまらない。
> そうすると公平性が損なわれない?
失われない。
sleep priority は、sleep から目覚めてからユーザーモードに戻るまでの間
しか適用されないから、もしそのプロセスが I/O するだけでなく CPU も沢山
使っている場合は、(sleep priority じゃない方の) 優先度が下がっているの
で、ユーザーモードに戻る時に、より優先度の高いプロセスにスイッチしてし
まうから。
0174login:Penguin
01/11/14 00:00ID:BJD7Ro88> I/O intensive なプロセスに優先的に CPU を与えることは、
> システム全体の「スループット」(not only 応答性) も向上させるのよ。
> これ常識。
ん〜じゃほとんどI/OせずCPUをガンガン使うタイプのプロセスはあまりCPUを
使えなくなるような気がするのだけど。
0175login:Penguin
01/11/14 00:13ID:LEvOTgWY2.4 で比較してみたら?
0176login:Penguin
01/11/14 00:22ID:LEvOTgWY性能があんまし出てないって話だったのね。
2.4 ではカードによっては zero copy が出来るようになったし、
32bitマシンで64bitDMAのbounce buffer なしのデータのやりとり
とかもできるようになってきてるし、ソフト開発で今更 2.2
がターゲットというのもどうかとおもわれ。
0177login:Penguin
01/11/14 00:46ID:IRaPmSaY> 使えなくなるような気がするのだけど。
その通り。UNIX のスケジューラは、どれも基本的には、こうなっているよ。
Linux だってそう。嘘だと思ったらスケジューラのソースを読んでくれ。
ところが、基本的にはそうなっている筈なのに、なぜか CPU intensive な
プロセスが CPU を掴んで離さないことがあるのが変だって話をしてるわけ。
その原因として Linux に sleep priority がない (他の UNIX には、全て
ある) ことを疑っているんだけど、本当にこれが原因なのかどうかは実は
検証したわけじゃないので良く分からない。濡れ衣かもしれない。
あと、今回の件は wake one とか zero copy とか bounce buffer なしとか
は、たぶん関係ないよ。どうしてそう想像できるかは、
・使ったハードは、今どきの Intel CPU に Intel EtherExpress PRO
・CPU intensive なプロセスと I/O intensive なプロセスがそれぞれ 1 つ
ずつでも発生した
・Linux と Solaris や BSD を比べた
・少なくとも直接の原因はスケジューリングにあった
ってことから導けるんだけど、面倒だからこれ以上の説明は省略。
これだけ書いとけば、あとは自分で考えれば分かる筈だからね。
0178login:Penguin
01/11/14 00:47ID:jil2no7jもうソース公開おわっちゃったみたいなので。
UNIX板だと煽られそうだからここの有志に期待。
0179login:Penguin
01/11/14 01:02ID:cZfNRmC/0180login:Penguin
01/11/14 01:06ID:jil2no7j0181login:Penguin
01/11/14 01:45ID:BJD7Ro88> その通り。UNIX のスケジューラは、どれも基本的には、こうなっているよ。
> Linux だってそう。嘘だと思ったらスケジューラのソースを読んでくれ。
つーか良いスケジューラかどうかってハナシをしてるんだけど。これでいいの?
0182login:Penguin
01/11/14 02:18ID:IRaPmSaY良いからこうなってるんだ YO。
そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。
0183login:Penguin
01/11/14 03:05ID:BJD7Ro88> そんなに疑わしいなら、君の考える理想のスケジューリングと、それが既存の
> スケジューリング戦略と比べて、どう優れているかを、ここで提案してごらん YO。
やはりCPUバウンドとI/Oバウンドなプロセスがバランスよく動くことが理想だ
と思うわけ。画像のレンダリングとかをやるならCPUバウンドの方を優先した
方がいい。SVR4なんかはI/Oでなくて「イベント」でプライオリティを増減し
ているらしいけどこういう戦略の方が今っぽくはないかというハナシ。
例えばLinuxのsched.cなんかを読むと以前実行したプロセスとメモリを共有し
ているプロセスの優先度を上げるようになっているけどこういうのは駄目なの?
あと前も言ったけどLinuxのスケジューラは毎秒キューを再計算してないので
(再計算するのは全ての実行可能プロセスがカンタム時間を使いつくした時だ
け)プロセスが多くなると設定しなおす頻度が下がるからレイテンシが下がる
んだろうと思ったんだけど。こういうのも毎秒計算するよりはアリだと思う。
まぁ問題と言えば問題なんだけどそれはスケジューラのクセであって信用に値
するかしないかという問題ではないと思ってるんだけどどう?
0184login:Penguin
01/11/14 08:20ID:BJD7Ro88>>177
> その原因として Linux に sleep priority がない (他の UNIX には、全て
> ある) ことを疑っているんだけど、
他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
> あと、今回の件は wake one とか zero copy とか bounce buffer なしとか
> は、たぶん関係ないよ。どうしてそう想像できるかは、
俺も関係ないと思う。つーわけで出勤だよヽ( ´ー`)丿続きはまた今夜。
0185login:Penguin
01/11/14 19:55ID:IRaPmSaY> と思うわけ。
I/O バウンドなプロセスを優先して動かすと、バランスよく動くようになるん
だよ。I/O バウンドなプログラムは、名前の定義からして CPU はそんなに使
わない、CPU を掴んでもすぐに手放すんだから、優先的に CPU を回してやっ
ても全く何の問題ないんだよ。
> 画像のレンダリングとかをやるならCPUバウンドの方を優先した方がいい。
違うよ。CPU intensive なプロセスを優先すると、正帰還が起きて CPU を消
費しないプロセスには決して CPU が割り当てられないという致命的な状況が
発生するでしょ。対話的なプログラムなんかは、ほとんど入力待ちにいてCPU
を使わないから優先度が下がって、優先度の高い CPU intensive なプロセス
が終了するまで決してスケジュールされないことになる。つまり、ほとんどシ
ングルタスク OS 状態、しかも対話的なプロセスが常に一番後回しにされてし
まうという。そんな OS 決して誰も使わないよ。
もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
> 他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
> 違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
これも違うなあ。I/O intensive なプロセスが優先されるのは、基本的にはそ
ういうプロセスが CPU を使わない (Linux の実装の言葉で言うと、
p->counterの値が大きい) からだよ。これは、Linux 以外の UNIX でも変わら
ない。Linux の異なる点は、他の UNIX が持っているもう一つの仕組み (スリー
プ優先度) を持ってないことであって、Linux 独自の特別な仕組みで I/O バ
ウンドなプログラムを優先させているわけじゃない。
あと、気になっているんだけど、Linux のスケジューラを、4.3BSD のスケジュー
ラに毛が生えたって表現するのは、かなり違うと思うな。ラウンドロビン以外
の優先度クラスがあるって意味では毛が生えているけど、逆に抜けている毛も
大きいと思うよ。ロードアベレージを勘案した decay なんてのは、すっぽり
抜け落ちてるでしょ。
0186login:Penguin
01/11/14 21:32ID:BJD7Ro88> を使わないから優先度が下がって、優先度の高い CPU intensive なプロセス
> が終了するまで決してスケジュールされないことになる。つまり、ほとんどシ
> ングルタスク OS 状態、しかも対話的なプロセスが常に一番後回しにされてし
> まうという。そんな OS 決して誰も使わないよ。
だからバランスよくと表現したんだけど。LinuxはPC用OSだよ?
DVDとか見るときとかどうするのさ。これってほとんどCPUバウンドなプロセスだよ。
ゲームとかもそうかもね。
こんなもんでいいやと手を打った結果だと思ってるんだけど。
なんでここまで粘着かというとオライリーの「LINUX カーネル」のP330に
「I/Oバウンド型プロセスを優先する仕組は万能ではない」
という節があるから。俺もこれを見て納得してたんだけどそうではないという。
それで混乱しているわけさ。
> もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
> が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
> なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
それって優先度が逆転してるじゃん(笑)
> あと、気になっているんだけど、Linux のスケジューラを、4.3BSD のスケジュー
> ラに毛が生えたって表現するのは、かなり違うと思うな。ラウンドロビン以外
> の優先度クラスがあるって意味では毛が生えているけど、逆に抜けている毛も
> 大きいと思うよ。ロードアベレージを勘案した decay なんてのは、すっぽり
> 抜け落ちてるでしょ。
こういう部分はLinuxの各所に見られるね。アルゴリズムをシンプルにするこ
とによって速く動かそうという感じ。VM とか。その代わり必要だと思ったら
ガンガン詰め込む。スケジューラの件も kernel-ml あたりでプリエンプティ
ブなスケジューラのパッチが流れてきてるんでそのうち入るのではないかな。
そういや君の案件ってリアルタイムプロセスにして動かすという手はなかったの?
0187login:Penguin
01/11/14 22:18ID:IRaPmSaY> DVDとか見るときとかどうするのさ。これってほとんどCPUバウンドなプロセスだよ。
それこそ、リアルタイム・スケジューリングを使うべきアプリケーション
じゃないの? 今はカーネルが、どう優先度を自動的に推測すべきかって
話をしているわけでしょ。リアルタイム・スケジューリングの場合、
ユーザーが指定した優先度が固定的に使われるんだから、そもそもそういう
問題は発生しないよ。
> なんでここまで粘着かというとオライリーの「LINUX カーネル」のP330に
> 「I/Oバウンド型プロセスを優先する仕組は万能ではない」
> という節があるから。俺もこれを見て納得してたんだけどそうではないという。
> それで混乱しているわけさ。
え? その記述は正しいよ。
俺は、ベストだとは言ったかもしれないけど、万能だなんて言ってないけどな。
カーネルの行う優先度の推測は、所詮推測に過ぎないんだから、向かない
応用はあるし、だからこそリアルタイム・スケジューリングとかが必要に
なるわけでしょ。
でも、TSS 用の優先度変動型スケジューリング・ポリシーとしては、I/Oバウ
ンド・プロセスを優先させる以外に良いやり方はないと思う。というか、CPU
バウンド型プロセスを優先させたら、取り返しのつかないことになる。
> > もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
> > が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
> > なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
>
> それって優先度が逆転してるじゃん(笑)
そう。君の主張していた、TSS スケジューリングにおいて CPU バウンド型
プロセスを優先させるっていう方針は、つまるところ、そういう意味なわけ。
やっと分かったかな。
> こういう部分はLinuxの各所に見られるね。アルゴリズムをシンプルにするこ
> とによって速く動かそうという感じ。VM とか。その代わり必要だと思ったら
> ガンガン詰め込む。
この、必要だと思ったらってところの判断基準に納得いかない点があるんだよなあ。
今回の応用の場合は作り込みで問題を回避できたけど、一般論としては回避で
きないこともあると思うんだが。
> スケジューラの件も kernel-ml あたりでプリエンプティブなスケジューラ
> のパッチが流れてきてるんでそのうち入るのではないかな。
プリエンプティブ化と この件は、関係ないのでは?
> そういや君の案件ってリアルタイムプロセスにして動かすという手はなかったの?
リアルタイム・プロセスにするにはルート権限いるでしょ。
この特定の問題のためだけに setuid root にするよりは、sched_yield() で
スケジューラの変な挙動を回避する方が、マシな解決策だと判断したわけ。
0188login:Penguin
01/11/14 22:43ID:BJD7Ro88> それこそ、リアルタイム・スケジューリングを使うべきアプリケーション
> じゃないの?
Unix的にはそうかも知れない。しかしLinuxはそういうプロセスにもCPUを割り振る
ようなスケジューラに*結果的*になっている。だからこの辺でいいんじゃないか
と手を打ったように見えるわけさ。それをクセと書いたわけ。
> この、必要だと思ったらってところの判断基準に納得いかない点があるんだよなあ。
> 今回の応用の場合は作り込みで問題を回避できたけど、一般論としては回避で
> きないこともあると思うんだが。
必要だと思ったらというより必要だと思ってパッチを出せる人がいたらってことかな。
却下されることはあまりないよね。
> > スケジューラの件も kernel-ml あたりでプリエンプティブなスケジューラ
> > のパッチが流れてきてるんでそのうち入るのではないかな。
>
> プリエンプティブ化と この件は、関係ないのでは?
あ。ごめん。>>154 の件。
0189login:Penguin
01/11/14 23:16ID:IRaPmSaY> 結果的*になっている。だからこの辺でいいんじゃないかと手を打ったよう
> に見えるわけさ。
これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
知恵が使われてないのをみると、結構ガックリくるのね。
まあ、無視しても何の問題も出ないのなら、そういうのもありなわけだけど、
現実に、こっちとしては手間がかかってるわけだし。
> 却下されることはあまりないよね。
たとえば crashdump と kernel debugger が標準カーネルにいまだに入ってな
いのは、納得いってない。そりゃ Linus が必要としてないのは分かるが、
顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ。
0190login:Penguin
01/11/15 01:29ID:L5cES50v>顧客に対してカーネル保守サービスを提供している場合には要るんだけどなあ
そりは君のお仕事では?
0191login:Penguin
01/11/15 02:42ID:mJoL8gKI> これを、Linux のスケジューラのクセであって許容範囲内であると考えるか、
> UNIX 古来の知恵を無視して手を抜いてるから信用できないって考えるかって
> 違いなんだよなあ。俺は old type、oldtimer だから、よく知られている筈の
> 知恵が使われてないのをみると、結構ガックリくるのね。
シンプルで高速にってのがLinuxのモットーだしね。VM論争だってRikのロバスト
なVMよりAndreaの高速なVMの方が採用されてしまった。まぁそれもアリだとう思う。
既存のUnix的なものを求めるのならLinuxは向かないのかも知れない。
0192login:Penguin
01/11/20 10:07ID:VDFNCHJfLinuxのソースコードの中で読むと勉強になるファイルを紹介してください。
個人的にはlist.h、ghash.hが大変為になりました。
0193login:Penguin
01/12/07 04:50ID:pUngVfZJスケジューラのどこをどう換えればよくなるの?
0194生徒A
01/12/07 12:06ID:Gi93BTz7>193 リアルタイム化ってことでいいんじゃない? 具体的には,
カーネルプリエンティブにして優先度付きスケジューラ(Linuxで
言う優先度とはちょっと違う)を搭載すればマルチメディア対応で
いいのかな.
優先度継承機能とかもいるね.
0195縞栗鼠(シマリス)の親方
01/12/07 12:19ID:ohUthW+y汚物入れを物色して女子生徒の使用済みタンポン・ナプキン等を
個人的に収集しているというのは事実。
中央高等学院では
生徒及びその保護者の個人情報を名簿図書館等に売却しています。
中央高等学院
http://www.chuo-school.ac/
http://chs-f.com/index.html 中央高等学院福岡校
0196login:Penguin
01/12/11 19:44ID:PbCyuzo0割り込み処理に優先度をつけるのも必要でしょ。
割り込み処理を、優先度付きのスレッド化するってのでもいいけど。
0197login:Penguin
01/12/12 20:53ID:VRHOlTvG買った age 。
0198login:Penguin
01/12/12 21:32ID:6ixMAsTNずいぶん前に買ったけど、まだ読んでないや。
細かいけど詳細ではなく詳解です。
#それじゃあLinuxJapan 10月号と同じ間違いだよ。(w
0200login:Penguin
01/12/13 04:48ID:GDrY1kNCこれとソースコードをつき合わせてるから、
年内かかりそうなかんじ。
がんばりましょう!
0201login:Penguin
01/12/13 07:24ID:nHHZmC7zあんなのいつ読み終わるやら…。
現在、1章読み終わる!
残りページ見てまたウトゥ。
ま、ゆっくりと行きますか。
がんばりましょう。
0202login:Penguin
01/12/13 07:26ID:nHHZmC7z『速読ってどう?』
http://ebi.2ch.net/test/read.cgi/rikei/969547091/l50
0203login:Penguin
01/12/13 07:31ID:GDrY1kNCもうあっという間に理解してたりする。
あういった技能は本を速読するのとは
また別の能力の気がするよ。
0204login:Penguin
01/12/13 17:28ID:3ZNfl0lP2.4もあまり変わりないの?
0205login:Penguin
01/12/13 19:35ID:P41LkMkd執筆の時点の安定版カーネルが、 2.2 だったらしい。
でも、初版が 2001 年 7 月だから、本としては
カナーリ新しいんじゃなかろうか。
漏れなんかには違い分からないだろうし…。
0206login:Penguin
01/12/13 20:20ID:jXJ+WFgy詳細な部分が違うだろうから本の趣旨からすると…
0207login:Penguin
01/12/13 20:35ID:GDrY1kNC一応各章の最後に2.4.*のことについて書かれてる。
ほんの少しだけど。
>>205
原書は2001/1って書いてある。ってことは発売されたのは去年かな?
>>206
もとのタイトルには詳解なんて言葉はないです。日本のオライソーが
勝手につけた言葉です。
この本の目的はカーネルのソースを読めるようにすること
って書いてあるから、本だけ見て細部を隈なく理解できるように
なると期待するほうが間違ってると思う。
0208login:Penguin
01/12/14 09:22ID:pLOVOTkt特別にシステムに関数とかを用意したりするんでしょうか?
0209login:Penguin
01/12/24 12:51ID:UsKcZqV70210login:Penguin
01/12/29 11:32ID:QLo22gE5/dev以下のノードを介する方法しかないのでしょうか?
よろしくお願いします。
0211login:Penguin
01/12/29 12:03ID:mYAbtgDl/dev 以下以外にもデバイスファイルは作れます。
man mknod
0212login:Penguin
01/12/29 12:19ID:4LQmsDwQフォーマットとかしようと思ってmke2fsとかやったら
自分のところのマシンをフォーマットしちゃったわけよ。
デバイスファイルって結局そこにあるメジャー番号とかマイナー番号
とかしか参考にしないわけで、誰のものかなんて考慮してないよね。
(かならず自分のデバイスだと思ってる)
たしかネットワーク経由で他のマシンのデバイスを直接操作する
機能というか仕組みがあったと思うんだけど、なんて名前だっけ?
0213login:Penguin
01/12/30 00:17ID:5UM9dPtt最近はデバイスファイルでは扱いにくいハードが増えたから
(マルチメディア系・プラグアンドプレイ)
なんで、デバイスファイルじゃなくて、
そのハードを扱うシステムコール作って、
システムコールであつかうのもいいんじゃないかな?
0214login:Penguin
01/12/30 00:30ID:vlB/mJ24出会いを求める男性へ!!
http://chevy.sites.cc/
0215login:Penguin
01/12/30 00:55ID:L5DsFMps>そのハードを扱うシステムコール作って、
>システムコールであつかうのもいいんじゃないかな?
これはカーネルに手をつけるということですよね。
そこまでしなければデバイスファイルを経由しないといけないという事でよろしいのでしょうか?
0216login:Penguin
01/12/30 02:50ID:FBPpTPsC>他のマシンの/devをNFSマウントして、そこの/dev/hdcとかを直接
>フォーマットとかしようと思ってmke2fsとかやったら
>自分のところのマシンをフォーマットしちゃったわけよ。
最初UNIX Kernelをわかってないなぁって思ったんだけど、でも、確かにネットワーク越しに相手のデバイスファイルを触るという発想はちょっと面白いかも。
Kernel側がどう一貫性を維持しようとするかが問題だけど。
0217212
01/12/30 03:07ID:UzGpkVqiネットワークブロックデバイス というのがあるみたいッスね。
(ようやく名前がわかったですよ)
カーネル2.2にもあるみたいなんだけど試すのおっかないなぁ
0218login:Penguin
02/01/01 12:59ID:fIVu4F/oまた交換するには具体的にどのような過程を通しているのでしょうか?
お願いします。
0219login:Penguin
02/01/01 20:33ID:BcEtv31+ハードウェアによる割込み、ソフトウェア割込み (システムコールはこれ)、
モード切替え用の命令、メモリ保護違反、不正な命令の実行、等いろいろ。
まずは JF の
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel.html
読んで勉強しな。
0220login:Penguin
02/01/01 20:57ID:fIVu4F/o0221login:Penguin
02/01/05 15:23ID:7OyjHkMf以下の本は買う価値あるでしょうか?
実習Linuxカーネル 理論と実習カーネルを効率的に理解するための実習書
出版社名 : ピアソン・エデュケーション
0222login:Penguin
02/01/06 03:54ID:Dq18r+Giカキコしてください。
とりあえず、global
0223login:Penguin
02/01/06 03:56ID:I+MzFQ0/grep
0224login:Penguin
02/01/06 04:06ID:Yl828KDRecho, printf
0225login:Penguin
02/01/06 04:18ID:OZczuKpf0226login:Penguin
02/01/06 04:51ID:QV/kUS0W↑こんな感じでLinuxカーネルを激しいインパクトと共に
表示してくれるツールないのか?
0227TOM
02/01/06 05:29ID:VAV/Hk1Rマスクを設定したいのですが、どのようにやればいいのでしょうか?
0228TOM
02/01/06 05:31ID:VAV/Hk1R0229global
02/01/06 07:29ID:6O0PvUPfgtags
htags
って何時間ぐらいかかりますか?
5時間動かしてて、まだ、終らないんですけど。
0230login:Penguin
02/01/07 02:12ID:9E3jZ+kYとりあえず、
htags -aF
-a:英字インデックス
-F:フレーム対応
linux2.4.17、Pen�V733で4時間ぐらいだった気がする。
0231229
02/01/07 20:12ID:hX8x2Oivlinux2.4.17をPentium3 500でやってます。
よかったら
GPATH
GRTAGS
GSYMS
GTAGS
のサイズ教えてください。
僕のは今のところ
2 MB
92 MB
13 MB
19 MB
で、GSYMSがちょっとづつ増えています。
sortが遅いのかな?(2.0.16)
0232login:Penguin
02/01/09 14:16ID:YpXVFRRT0233login:Penguin
02/01/11 10:22ID:aBKMHgnQやっぱり片っ端からチェックしてるだけなんでしょうか?
0234login:Penguin
02/01/11 22:24ID:VauQghNoみんな買って読んでる?
0235login:Penguin
02/01/11 22:34ID:OhKVZ3uP0236login:Penguin
02/01/11 22:43ID:J9+ERyxt個々のドライバの初期化処理で、ありそうなアドレスを片っ端からチェックしてる。
0237デフォルトの名無しさん
02/01/12 21:54ID:Osm3xSog0238SsS
02/01/13 16:44ID:1HgPfsgvデバックにprintfk を使うってほんと???
0239login:Penguin
02/01/13 17:17ID:ften7Xofほんとう
0240セマフォ
02/01/13 22:51ID:byNjLBNZ0241デビットカトラー
02/01/13 23:12ID:byNjLBNZといいますが、具体的にどのファイルで処理しているのでしょうか?
0242login:Penguin
02/01/13 23:30ID:QSg7wIlWlinux/kernel/sched.o だろ(藁
ソースコードはlinux/kernel/sched.c だな
0243super
02/01/14 00:12ID:d6cd8xHDopen やclose などに対応したデバイス独自の関数を
作成しそれらへの関数ポインタをひとまとめにしたテーブルを
作成するということ
といいますが、
もうすこし、わかりやすく説明してください
0244login:Penguin
02/01/14 00:34ID:/7fIIVhtこれは「比較を行う関数」というものをqsort本体からは
抽象化して、実装は別にしているわけだ。
同様に、あるキャラクタディバイスに対してread()やwrite()
を行った際の動作を、カーネルが扱う際に抽象化する為に
関数へのポインタを渡すことで実現している。
0245login:Penguin
02/01/14 01:00ID:HmpJulBQsemaphoeで検索すれば、いくらでもヒットするんでは?
もしかして、test and set命令とか、そのレベルから
教えてという話?
0246login:Penguin
02/01/14 01:24ID:qUNfVGwW0247login:Penguin
02/01/14 05:38ID:yv5BYGJ8そういうテーブルを作ると、ドライバの親分が
必要に応じて呼び出してくれるんです。
0248super
02/01/14 22:10ID:hh4sVRcA0249login:Penguin
02/01/15 21:02ID:blfk2QjYhttp://pc1.peanuts.gr.jp/~kei/Kernel-Snapshot/linux/kernel/sched.c
Lion みたいにわかりやすく解説して!
0250login:Penguin
02/01/15 21:07ID:blfk2QjY1269ステップ数あります
みなさん249のページをコピーして
秀丸に貼り付けて下さい!
0251login:Penguin
02/01/15 21:08ID:blfk2QjYstatic 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}}};
では何をやっているのでしょうか?
0252login:Penguin
02/01/15 21:13ID:blfk2QjYは何を意味していますか?
0253login:Penguin
02/01/15 21:43ID:blfk2QjY0254名無しさん@お腹いっぱい。
02/01/15 23:02ID:myRSFpvn具体的にどの部分が分からないのか不明。
currにn番目のプロセッサで実行中のタスクが入る。
unionで__pad入れてるのは、構造体のサイズをcache境界の単位にあわせるため。
__cacheline_aligned は構造体そのものをcache境界に整合した番地に置くため。
NR_CPUS定数はCPUの数。
>252
>find_process_by_pid
関数名そのまんま。PIDからタスク構造体を取得するだけだと思うが。
0255login:Penguin
02/01/15 23:06ID:iytjqY0j/*
* We align per-CPU scheduling data on cacheline boundaries,
* to prevent cacheline ping-pong.
*/
>>252
pidが0なら、現在のタスク情報の構造体へのポインタを、
そうでないなら、指定されたpidがしめすタスクの構造体への
ポインタを返してる。
0256login:Penguin
02/01/16 00:02ID:NXnK8I7nLionsに紹介されている(P94)のsched.c
とLinuxのSched.cとは全然違うように思います
これはLinuxが独自の仕様ということでしょうか?
Bach本でスケジューリングのアルゴリズムを説明しているソース
はLion本に近いソースで説明しているのですが
0257login:Penguin
02/01/16 00:03ID:NXnK8I7nあわせるため
もう少し詳しく!
0258名無しさん@お腹いっぱい。
02/01/16 00:13ID:MlDa/kr2http://lse.sourceforge.net/counters/statctr.html
#Statistics Counter Maintenance
のところに詳しく書かれてる。
0259login:Penguin
02/01/16 00:15ID:lZaXRnQUcacheの問題だっていってるんだから、そこに因われることは
無いと思われ。
「あー、高速化の為に、unionつかってイイ感じにやってんのねー」で
十分じゃねーの?
0260login:Penguin
02/01/16 00:38ID:NXnK8I7n256のいうように、ソースが複雑になっていると
いうことでしょうか?
ちなみにSCHED.C ってlINUXの中ではわかりずらいソースなのでしょうか?
0261名無しさん@お腹いっぱい。
02/01/16 00:58ID:MlDa/kr2つまり、キャッシュラインに対して構造体1つがピッタリはまっていれば
その構造体以外のアクセスで、その構造体があるキャッシュラインがフラッシュされることがなくなる。
もし、構造体のサイズ!=キャッシュラインサイズであれば、
あるプロセッサによって無関係のデータの読み込みが行われた場合でも
他のプロセッサ全てのキャッシュラインの更新が行われてしまう可能性がある。
そしてメモリアクセスが増えて性能が落ちる。わずかだけど。
キャッシュラインのイメージ図(*が構造体の部分 Xが無関係のデータ)
(1). [**********][XXXX] <-構造体のサイズ!=キャッシュラインサイズの場合
(2). [****************] <-構造体のサイズ==キャッシュラインサイズの場合
(1)の場合は無関係のデータにアクセスされてもそのキャッシュラインがフラッシュされてしまうので無駄。
(2)の場合は構造体にアクセスする場合だけそのキャッシュラインがフラッシュされるので効率がいい。
∧_∧
( ´Д`) <わかったかな?
/ \
_ | | ∬ | |_..∬
|\ ̄ ̄ ̄旦 ̄ ̄ 旦.\
./..\\ \
/ \|================|
\ ノ \
\ .\
\ ..\_
""""""""""""""""""″″′
0262login:Penguin
02/01/16 01:09ID:DfshrX4dthank you
0263Be名無しさん
02/01/16 22:11ID:NXnK8I7n0264Be名無しさん
02/01/16 22:31ID:NXnK8I7n{
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
0265Be名無しさん
02/01/16 23:00ID:NXnK8I7nint 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
0266もなー君@お腹いっぱい。
02/01/16 23:37ID:MlDa/kr2goodnessは、指定されたタスクが実行し続けるにふさわしいか判断するための関数。
戻り値が大きいほど「実行しつづけた方がいいよ」という意味になる。
この関数だけ見てもしょうがないので全体的に説明すると。
#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君に問いたい、問い詰めたい、
_ | | ∬ | |_..∬ <小一時間ほど問い詰めたいところではある。
|\ ̄ ̄ ̄旦 ̄ ̄ 旦.\
./..\\ \
/ \|================|
\ ノ \
\ .\
\ ..\_
""""""""""""""""""″″′
0267あげあげ
02/01/17 13:09ID:fKwmqdxCThank You
0268login:Penguin
02/01/17 20:28ID:P7SYmdjdhttp://www.zdnet.co.jp/news/0201/17/e_usb.html
...カーネル2.5.2には,OSの重要な部分となる「スケジューラ」も実装されている。
ワロタ
0269名無しさん@XEmacs
02/01/17 22:57ID:MexfPvJZ気に入った。
0270Be名無しさん
02/01/18 23:07ID:SjcLc3oq>ソースコードはlinux/kernel/sched.c だな
自分で,sched.c を一部書き換えて、sched.o を作って
linux/kernel/sched.o と置き換えてもうまく動作しますか?
ソースを一部書き換えて、それをリナックスでコンパイル
させる方法教えて下さい。
例えば、sched.c
0271login:Penguin
02/01/18 23:11ID:SjcLc3oqhttp://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-5.html#ss5.5
にある図表(4.2) プロセスの仮想メモリ
は構造体が二つネストして、task struct から3階層目で
実際のメモリにアクセスしていると考えればいいのでしょうか?
struct
(struct
(struct
ってかんじですか?
0272270
02/01/18 23:21ID:SjcLc3oqsched.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に組み込みたいときは具体的に
どういう手続きでできますか?
0273名無しさん@Emacs
02/01/18 23:51ID:YW/sCNj01. time.c を編集
2. /usr/src/linux あたりで make vmlinux
でダメかい?
0274270
02/01/19 00:44ID:jiC3xKcwsched.cを編集したので、sched.c をコンパイルして
sched.o をつくってと言う流れにはならないのでしょうか?
0275名無しさん@Emacs
02/01/19 00:58ID:qDPmIUv5sched.c編集後に kernel/
でmakeって打ったらどうなる?
0276
02/01/19 03:29ID:EPNncPjOするのがもっとも効率がよいぞ。それでも判らないところは
メーリングリストや掲示板で尋ねなさい。
0277login:Penguin
02/01/19 10:14ID:s4mGpeNhなんとか本は読んだことがないのだけれど、
伝統的なUNIXなら、スケジューラにはMLFQ
を使っているんじゃないでしょうか?
LinuxのスケジューラとMLFQは違うの? と
いう質問に対する答は、「違うよ」です。
MLFQ:Multi Level Feedbak Queue
0278penguin
02/01/19 10:27ID:Nn4Hdk9S以外にsched.c を編集して差し替える方法ってのはのってないです
オらいリーにも、バッハにはもライオンにも
0279perl
02/01/19 19:19ID:6UZoY/KQTarget /Rules.make をmake するターゲットがありません
と表示されます
0280login:Penguin
02/01/20 01:25ID:PW5h4b9Tだから君は /usr/src/linux あたりで makeしろ
と言われるわけだ
なんでこうなるかは, Makefileなどを読めばわかるから読んでみなよ
>>274 もちろん そうすることもできる
があまり一般的でない気がするし
この程度のこと自分で調べるとか試すことができんと
先にすすめんと思うぞ.
0281202.221.45.130
02/01/20 01:26ID:RJR5ycOG俺のIPアドレスだ、おめーらの技量じゃハックデきね〜だろうけどw
0282login:Penguin
02/01/20 01:33ID:6rBCbXPRプロバイダはケーブルネット新潟か、、
icmpが通らないどころかtcpのどのポートも開いてないじゃん。
0283A
02/01/20 18:44ID:cVcKPlLahttp://www.zdnet.co.jp/help/howto/linux/kernel24/03.html
みたいな感じでやるの?
0284T
02/01/21 12:53ID:Wml0Xzg3REaHATです
0285login:Penguin
02/01/21 20:15ID:vTi6jywZ/linux/arch/i386/boot/bzImage
ところであまり綺麗ではないと言われるLinuxのソースですが、
どのあたりが*BSD*やその他のカーネルと比べて不味いのでしょうか?
自分には十分綺麗にまとまっているようにも思いますが。
0286名無しさん@EMACS
02/01/21 20:43ID:a+jXfduoただデバイスドライバの中には汚いのも散見する気がするので
ここらへんが不味いと言われるかもしれないです
0287Be名無しさん
02/01/21 22:15ID:RLDBnvZL0288login:Penguin
02/01/22 03:27ID:sIyQ1wuj0289名無しさん
02/01/22 21:27ID:qC2FYqJqbioとかdriverfsってどういうのですか?
0290safda
02/01/23 17:16ID:FOpw4p0sstatic 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
0291login:Penguin
02/01/25 04:17ID:dOURaakdどこが原因で止まっているのか分からないときは
どのようにデバッグしたらいいのでしょうか?
起動時に
'PCI: Enabling device 00:07.2 (0000 -> 0001)'
と表示して終わります。
(arch/kernel/pci_i386.cのpcibios_enable_resources()関数で出力)
ここまではgrepだけでなんとか分かるのですが、この先どこでおかしく
なっているのかさっぱり分かりません。
kernel debugオプションでログを解析したいのですがやり方等
分かる方がいらっしゃれば何か教えて下さい。
0292login:Penguin
02/01/25 06:15ID:dOURaakdUser-mode Linux Kernel
http://user-mode-linux.sourceforge.net/
これを動かしてはコンパイルを繰り返すことで
大体のことが勉強できそうなので、
まずは基本からやり直します。
辛いな(ワラ
0293safda
02/01/25 09:19ID:SWm1VQvW*http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-5.html#ss5.5
といいますが、ここで使われている実行イメージとは?
詳細に説明して下さい
0295login:Penguin
02/01/25 10:55ID:dOURaakd0296login:Penguin
02/01/25 10:56ID:dOURaakd0297anonymous
02/01/25 12:58ID:SWm1VQvW上はメモリに保存されたとういことではないのでしょうか?>>ALL
0298login:Penguin
02/01/25 13:28ID:GUMC5F4Jもう一台PCがあって、カーネルデバッガが起動できるようならリモートデバッグ
それ以外だと、オプションをOFFしまくった小さなカーネルが起動できるかチェックし、
起動できたら少しずつ足していくか、モジュール化しといてinsmod手打ちで落ちる所を捜す
動くカーネルとのオプションの違いや、コンパイラが腐ってないかなどはあらかじめチェックすること
0299login:Penguin
02/01/25 13:34ID:GUMC5F4Jディスクで正しい、メモリをメタな意味で用いているならそれも正解
0300login:Penguin
02/01/25 13:52ID:GUMC5F4J実行イメージは単体(OSは介在していい)でプロセスの起動まで持っていける
プログラムとデータなどをまとめたもの。
LinuxでOSがプログラムとデータを認識できるようにELFというフォーマットを
主に用いる。ELFは複数のプログラムとデータをチャンク(セクションと呼ばれる)として
持つ、イメージ的にはプログラムやデータの個々のファイルを、アーカイバで1つにしていると
考えるといい。
ELF内のプログラムはフツー再配置情報へのリンクを含んだ実行コードそのものと、
再配置情報、シンボルなど複数のチャンクとして格納されている。データも同様で
初期化の他のデータや、あらかじめ獲得するデータ領域などに分けられ格納される。
その他、デバッグ情報や、チャンクの配置情報などもチャンクとして格納される。
デバッグ情報などチャンクのなかで、さらに別なフォーマット(coffなど)として
格納されているものもある。
OSは実行イメージをプロセスとして変換する際、これらの情報から実際に実行可能な
コードと適切に配置されたデータを生成し、実行スケジューリングに追加する。
0301anonymous
02/01/25 14:16ID:SWm1VQvWThank You
0302名無しさん
02/01/25 15:15ID:IiT72Jq6LKST https://sourceforge.net/projects/lkst/
話題のやつですね。使ってみた人います?
FreeBSDのcrashdumpやkerneldebuggerは使ってみたことあるんですが、
crashdumpは便利だったけどkerneldebuggerは・・・て感じだったんで、LKSTはどうなんだろう?と。
Docを読んだ限りではdebuggerではなくtracerだな、て感じでしたが。まあ名前のとおりなんですが。
0304もなー君@お腹いっぱい。
02/01/25 21:40ID:bz8Zsrcu実はELF-DOSはMZ形式のEXEじゃなくて、ELF(386)形式をサポートしてるんだYO!
とかいってみるテスト
0305kernel
02/01/25 22:45ID:AiDxywi8にある
メモリー上のアドレス 0x7c00
の 0x7c00 って?
0306もなー君@お腹いっぱい。
02/01/25 22:59ID:bz8Zsrcu0x7c00は、ブート時にBIOSがディスクからIPLセクタを読み込んで配置するアドレス。
IPLセクタには、ブートマネージャやOSローダなどが書き込まれている。
つまり、BIOSによってディスクの先頭セクタ(IPL)が0x7c00番地にロードされ、実行される。
∧_∧
( ´Д`) <1セクタ512バイトしかないから、IPL上で他のセクタをロードして
/ \ <ブートアップしていくのが普通。
_ | | ∬ | |_..∬
|\ ̄ ̄ ̄旦 ̄ ̄ 旦.\
./..\\ \
/ \|================|
\ ノ \
\ .\
\ ..\_
""""""""""""""""""″″′
0307IBM
02/01/26 00:58ID:qkQVL9nGThank You
0308login:Penguin
02/01/26 01:36ID:UX7CiKAAおぃおぃお前がゆーな
つか答えろ
0309IBM
02/01/26 02:08ID:qkQVL9nGhttp://www-6.ibm.com/jp/linux/developers/ISEtechinfo/linux003.html
0310login:Penguin
02/01/26 20:51ID:zSXZ5gOy0311login:Penguin
02/01/27 05:29ID:r2XC415pstruct module の
depsメンバーと, refsメンバー
だれか図に書いて教えて
0312login:Penguin
02/01/27 11:31ID:Z/G/YqfA0313login:Penguin
02/01/27 17:48ID:jQmpel0O0314login:Penguin
02/01/27 23:16ID:Frv9vH0Pってか、何がしたいの?
それって、Frame Bufferでいいんでは?
jfbterm のソース見れば?
http://www3.justnet.ne.jp/~nmasu/linux/jfbterm/indexn.html
0315login:Penguin
02/01/27 23:25ID:sK7/TLsv少しは自分で解析しろよw。
皆そうしてやってんだからさ。
0316login:Penguin
02/01/28 00:11ID:QstxY/nc0317Su
02/01/30 20:26ID:AvPSuSyK0318APC
02/01/30 20:35ID:AvPSuSyKスケジューラはidleと呼ばれる何もしないプロセスに実行権を渡す。
これはソースのどのあたりを読めばいいですか?
0319login:Penguin
02/01/30 20:59ID:Lx5WPMzlrepeat_schedule: あたりか?
0320名無しさん
02/01/30 21:37ID:650NkqOFinclude/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->...
思いきり簡略化するとこんなかんじとちゃう?
0321名無しさん@お腹いっぱい。
02/01/30 23:27ID:BrO/yEoxこれはよいかも。おれ明日買いにいってみる。
0322login:Penguin
02/01/31 00:59ID:o+EauUH6当方大手プロバイダな物でnew Thread("Linuxデバイスドライバ")できません。
イーサネットドライバの書き方教えてくださいませ。
一応ソース読んだけど挫折中、、、
0323login:Penguin
02/01/31 01:11ID:t3s191ys0324323
02/01/31 01:16ID:t3s191ysいい加減で悪いけど。
0325login:Penguin
02/01/31 01:48ID:R8TIzJkuhttp://pc.2ch.net/test/read.cgi/linux/1012407270/l50
0326anonymous
02/01/31 17:35ID:XkNXES9Hsched.cには
repeat_schedule
というモジュールはないです。
sched.cの何行目くらいでしょうか?
0327telnet
02/01/31 17:41ID:XkNXES9HLinuxではどういうケースでどういうケースで使うのでしょうか?
メモリマップの具体的なしくみははじめて読む486で理解しています
0328319
02/01/31 18:01ID:VzRMG8cDvesion 2.4.17だとこんなかんじです。
603 repeat_schedule:
604 /*
605 * Default process to select..
606 */
607 next = idle_task(this_cpu);
idle_task()を追いかければ分かると思われ。
0329anonymous
02/01/31 19:40ID:bRdhNRMbThank You
0330login:Penguin
02/01/31 21:41ID:U++Ss/msLinuxはもはやTorvalds氏の手に余るのか
ってここに貼っていいんだっけ?
0331☆中身丸見えなネットキャバクラ嬢HP
02/01/31 21:55ID:qyVVAuwK中を見ると、ネットキャバクラの派遣業務(スカウト)も
やってるんだけど、セキュリティ甘すぎで
応募してきた女のデータが丸見え(藁
こんな甘いセキュリティーでいいのか??
ついでに書くけど、派遣やスカウト業務って
労働大臣に報告しないとやっちゃいけないんだってね。
テレギャル日記
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
0333anonymous
02/01/31 22:24ID:gjVN0d1dはっきりいって驚きです
0334login:Penguin
02/02/02 10:57ID:ZMxM5ZSu1.全てのプロセスはユーザースタックとカーネルスタックの2つのスタックを持っているという認識は合っていますか?
2.プログラムカウントレジスタが指しているアドレスは論理アドレスですか?それともリニア、物理アドレスですか?
よろしくお願いします。
0335login:Penguin
02/02/02 11:27ID:QwE3ggccテスト勉強は、友達か先生に聞いてください。
0336login:Penguin
02/02/03 20:10ID:urBW9cePSystem.mapは作られるタイミングわかったんですけど
mapはどこで作られてるのか・・・さっぱり
0337336
02/02/03 22:07ID:urBW9cePCD-ROMからカーネルを持ってくると思うんですが
カーネルをコピーしたあとに LILO を打つのに
map=/boot/map
のこのmapはどこから持ってくるんですか?
とりあえずDebianのCD-ROMの中にはありませんでした。
0338オリスレ1
02/02/04 16:32ID:zNf2nkG9厳密に言えばmapファイルはKERNELとはあまり関係がない。これはLILOが使う
情報ファイルであり、この情報を使わないローダーを作ることも可能。
/boot/mapは、lilo.confを変更した後に実行する"/sbin/lilo"により作られる。
この時に同時に1st loderに2nd loader、/boot/mapのセクタ位置も書き込まれる。
実際にLILOが/boot/mapを読むコードはsecond.sのldsc:というラベルの辺りにある。
0339login:Penguin
02/02/05 21:13ID:JQSzVmkTWidows9Xは プリエンティブ カーネル
もう少しわかりやすく説明して下さい
0340login:Penguin
02/02/05 21:17ID:8yPPH2y00341login:Penguin
02/02/05 21:18ID:cjWnFjQH0342login:Penguin
02/02/05 21:45ID:3XUKmv4C0343login:Penguin
02/02/05 21:48ID:xTemToT90344login:Penguin
02/02/05 22:09ID:JQSzVmkT日経バイト(つまらん雑誌だが)に
Windowsのロードマップを解説してあり、その中に
Windowsをプリエンティブカーネルと紹介してあった
0346login:Penguin
02/02/06 00:15ID:CkGAoDS/0347login:Penguin
02/02/06 18:11ID:CbSD5861こんなんがあったぞ。
win のことだけど初心者にとってはスケジューリングの仕組みについて参考になるかも。
茶を濁したようだったらスマソ
0348login:Penguin
02/02/07 20:45ID:KeZhLQ6z0349REd
02/02/08 10:59ID:SBI5gws80350login:Penguin
02/02/08 11:51ID:/7nCIwuy1987年あたりのOh!X12月号
85年だったかな?
0351名無しさん@Emacs
02/02/08 11:54ID:/gFPMDAN漏れも興味があったので探してみた。
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
0352login:Penguin
02/02/08 12:54ID:yqzyJOrBcvsじゃ、だめなんだろうか。
0353@@@
02/02/09 19:07ID:BxQSwRbkどんな文法ですか?(なんか変な質問)
あと、MINIXのソースはどうやってコンパイルするのですか?
0354名無しさん@Emacs
02/02/10 04:09ID:/Yna3/+b> mmap メモリマッピングは具体的に
> Linuxではどういうケースでどういうケースで使うのでしょうか?
FreeBSD PRESS 読め。
0355login:Penguin
02/02/17 03:11ID:wXNMmwBm0356login:Penguin
02/02/17 04:43ID:q2RiODNo/ .\
/ζ 禿 \
/ ̄ ̄ ̄ ̄\.\
. ________,/ \\________
\ //\ \ / | ̄\ /
\ 叩 / ||||||| (・) (・) | \ 騙 /
\ / (6-------◯⌒つ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\/ | _||||||||| | < カツヲめ、またワシを召還しおったな!
/\ \ / \_/ / \___________
/ \ (( \____/ )) ./ \
/ 逝 \ / 煽 \
/ \ ________/ \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ 氏 ./
\ /
\/
http://www.puchiwara.com/hacking/
0357login:Penguin
02/03/02 22:12ID:acfYBPiM0358484
02/03/03 01:05ID:T7JEzMm90359login:Penguin
02/03/03 17:08ID:WsSnuBVI多分学生さんだと思いますが,
どうですか 読んでみて
0360login:Penguin
02/03/03 17:24ID:1pDkR8wB学生時代にどれだけ基礎体力を蓄えるかでSEとしてのその後の人生が決まると思ふ
0361357
02/03/03 23:14ID:1ClZlz9smalloc.cで挫折しました。
私にはまだこの本を読むだけの素養がないことを痛感致しました。
0362名無しさん@お腹いっぱい。
02/03/04 02:48ID:r500tR00http://page5.auctions.yahoo.co.jp/jp/auction/e7666037
0363login:Penguin
02/03/06 00:04ID:j2wxpcrrLinuxカーネルを語るときに使う「仮想メモリ」と上記のWindowsでのSwapの意味での「仮想メモリ」って別物ですよね?
0364login:Penguin
02/03/06 00:36ID:VoZ13GuD基本的には同じでわ?
0365login:Penguin
02/03/06 06:04ID:pruE8kEE仮想メモリ=リニアアドレス空間
っと思ったりする。
0366名無しさま
02/03/06 22:14ID:lCrfYxtD0367login:Penguin
02/03/07 23:39ID:mjFXHr66> Linuxカーネルを語るときに使う「仮想メモリ」と上記のWindowsでのSwapの
> 意味での「仮想メモリ」って別物ですよね?
確かにこの説明は、仮想メモリじゃなくて、スワップ領域の説明だが、
Windows が Linux と違うんじゃなくて、単にこの説明書いた奴が分かってないだけ。
Linux でいう場合の仮想メモリと、Windows でいう場合の仮想メモリは同じ物。
> 仮想メモリ=リニアアドレス空間
> っと思ったりする。
おいおい。
物理メモリだって、リニアアドレスだったりするだろう。これも変だ。
0368login:Penguin
02/03/10 13:20ID:9TPve/Qe多分365が言っているリニアアドレスはx86用語でのもの。
virtual address(?) -> セグメントによる変換
-> linear address -> ページングによる変換 -> physical address
それにしても仮想メモリとリニアアドレスは違うけど。
0369login:Penguin
02/03/10 16:40ID:XxAqk7rTなどで書いたコードを
フロッピーのブートセクタに入れる場合と
ハードディスクのブートセクタに入れる場合の
両方をそれぞれ教えてください。
よろしくお願いします。
ハードディスク dd if=bootsect.o of=/dev/hda1
0371login:Penguin
02/03/14 01:02ID:SAjWxZmX0372365
02/03/14 17:29ID:8ZESikIVリニア・アドレスってx86以外でも使われる
用語なのか。知らなかった。
リニア・アドレス空間って物理メモリorハードディスクなどに
マッピングされるよな。で、ハードディスクにマッピング
された領域が仮想メモリになるのだろうか。
なんとなくしっくりこないなぁ。
メモリ(物理メモリやハードディスクに問わず)を抽象化した
リニアアドレス空間ってのが仮想メモリ空間。<間違っているだろうか?
0373368
02/03/15 22:07ID:GKIFJfj9おれも「リニアアドレス」という用語はx86以外では聞いたことはない。
ただ367がリニアアドレスを線形なアドレスという意味で書いているようなの
でx86では特別な意味があると書いただけだ。
仮想メモリというのはメモリを抽象化するというシステム、あるいは概念を
示す言葉であって手段(スワップファイルとかhogeアドレス空間とか)を示す
ものではないというように理解しているがどうよ?
0374名無しさん@Emacs
02/03/16 06:42ID:O4su64/c今時はふつうリニアだろうけど。
0375365
02/03/16 08:51ID:NOghNGWY> 示す言葉であって手段(スワップファイルとかhogeアドレス空間とか)を示す
> ものではないというように理解しているがどうよ?
なるほど、”仮想メモリは概念”っていうのはすごくしっくりくる。
x86系だと普通はプロセッサのメモリ抽象化サポートと
カーネルのページングメカニズムのサポート、この2つによって
仮想メモリは実現されるが、他のOSの場合はそうとは限らんしな。
0376login:Penguin
02/03/19 18:33ID:GPZ5tDZehttp://www.hotwired.co.jp/news/news/culture/story/20020306205.html
みんなでカーネルを聴いてみない?
0377login:Penguin
02/03/23 05:06ID:U94iusfQ0378login:Penguin
02/03/23 18:14ID:3L96kgxaないっぽ
0379login:Penguin
02/03/24 18:24ID:p75aMmZgマジっすか。
main()でなくてもいいんだけど、ここからスタート! っていう
目印なところが無いというか。
0380もなー君@お腹いっぱい。
02/03/24 18:29ID:FVW+u6eT( ´ー`)y-~~~ ↓ここに詳しく載っている。
http://lkh.linux.or.jp/24kernel/source/html4/boot.html
0381login:Penguin
02/03/26 12:05ID:nV5s0H8IそうだとすればどんなBIOSコールがあるのでしょうか?
0382login:Penguin
02/03/27 14:43ID:BgVFN3rfの勉強会しようぜぃ
0383login:Penguin
02/03/27 18:30ID:sGm5Hb2nhttp://lkh.linux.or.jp/24kernel/source/html4/boot.html
imenuつけんなクソッタレ
0384login:Penguin
02/03/27 20:23ID:DIx0PeFchttp://pinktower.com/lkh.linux.or.jp/24kernel/source/html4/boot.html
生はいやよ
0385login:Penguin
02/03/28 03:30ID:ZK8cq26OとLiloは別物ですよね?
0386login:Penguin
02/03/28 03:46ID:msez0qYsどうしたらその2つが同じものに?
0387login:Penguin
02/03/30 16:23ID:SfYnsylz0388login:Penguin
02/03/31 13:19ID:WhFkwY900389login:Penguin
02/04/01 23:59ID:8vevsllb0390login:Penguin
02/04/02 21:20ID:9DbcWQiHとかいう本の訳本が置いてあったんですけど、
誰か買った人います?
ちょっとプロセスの辺だけ眺めたたら
訳が下手だったんで買いませんでしたが。
0391login:Penguin
02/04/02 21:22ID:9DbcWQiHLinux 2.4 インターナル
http://www.shoeisha.com/book/Detail.asp?bid=1339
だたよ
0392名無しさん@お腹いっぱい。
02/04/05 22:27ID:8Q1S/UyJ読む目的がないとソースよんだって意味がない
目的は?
0393login:Penguin
02/04/05 22:36ID:e8an97D8下手なんてもんじゃないだろ。排水溝の底のヘドロみたいな訳だ。
0394login:Penguin
02/04/05 23:51ID:1X3bLXpdそしてパクってLinuxにマージするのだぁ!
0395login:Penguin
02/04/09 00:20ID:O0rtlCLU0396login:Penguin
02/04/09 01:04ID:4N3q8p7gユーザーランド側はglibcじゃない?
カーネル側はsys_hogecall()を
asmlinkage void sys_hogecall()
としてそれぞれの関係するところで宣言してる。
asmlinkageはinclude/linux/linkage.h
かな。
0397login:Penguin
02/04/09 10:17ID:Sk6YzNPZhttp://www.atmarkit.co.jp/flinux/special/kernel25/kernel25a.html
0398名無しさん@お腹いっぱい。
02/04/10 05:42ID:uJzcEA3dありがとう。わかりやすかったよ、そこは。
/. でも話題になってたね。
http://slashdot.jp/article.pl?sid=02/04/09/0723249&mode=nested&threshold=-1
> O(1)スケジューラに対してはさまざまなベンチマークが取られており、
> いずれの結果からも大きく性能が伸びることが示されている。
> Molnar氏が取ったベンチマーク結果では、スケジューラの性能が通常の
> 単一CPUシステムでも数十%、SMPシステムでは最大600%近い伸びを示すなど、
> 大きな成功を収めている。
それにしても、O(1)スケジューラすごいなー。
0400login:Penguin
02/04/11 21:02ID:paUG3Ip4ところでLinuxではトラップに対して切ってある定数は
どこで定義してあるんでしょうか?
0401login:Penguin
02/04/12 01:05ID:6kq0713T漏れも勉強になた。ありがと。
ついでにSamba 3.0の記事も読んじゃったYO!
0402login:Penguin
02/04/12 05:44ID:FjR6S1/8それにはおれも同意。
あの本は凄いよ。
0403login:Penguin
02/04/12 18:03ID:LUY70a8V0404login:Penguin
02/04/14 16:15ID:1Jdu/56r中学生なのではないかと思う。
http://www.uwsg.indiana.edu/hypermail/linux/kernel/0204.1/att-1011/01-3c59x.patch
0405login:Penguin
02/04/14 22:59ID:rMaBm7Ab読んでから言ってね
0406login;
02/04/15 00:09ID:oRH5PO1XLions Commentary はイイYO!
悪魔本とか読んで,イキナリカーネルソース読んで挫折して...を
繰り返した後読むと,スイスイと...
0407login:Penguin
02/04/15 03:45ID:GiNG6vcBこのパッチが出てきた文脈を知らないんだけど、なんか別のパッチの一部?
これ単体では意味をなさないような
0408login:Penguin
02/04/16 00:00ID:Gq3Gz/c2そうでもないようですね。
http://www-6.ibm.com/jp/developerworks/linux/020412/j_l-rt7.html
0409login:Penguin
02/04/16 00:09ID:r9JjnCrtスレッドの生成スピードだけが全てではないけれど、
それにしても意外なベンチマーク結果だね。
Windows もカーネルベースのスレッドなんだろうか?
0411login:Penguin
02/04/16 02:00ID:toifQdqP商用UNIXがあたりまえのようにtagged vlanに対応してるけど、
linuxの対応はちょとね
0412login:Penguin
02/04/16 03:18ID:Ped1nJiT0413login:Penguin
02/04/16 03:26ID:Ped1nJiT2.4.x にも 2.5.x にもモリモリ入ってるYO。
NICのハードウェアtvlanに対応しているのもあるし。
0414login:Penguin
02/04/16 08:04ID:yHB8Yz14そのコードどこにあんの?
0415login:Penguin
02/04/16 09:53ID:Ped1nJiTttp://www.uwsg.iu.edu/hypermail/linux/kernel/0204.1/0429.html
ここから続くスレッドで。
0416login:Penguin
02/04/16 11:07ID:yHB8Yz14さんきゅー
読んでみるわ
0417名無しチェケラッチョ
02/04/21 23:08ID:ccHtxK1Q0418デフォルトの名無しさん
02/04/23 12:39ID:f2RdN7Qr0419login:Penguin
02/04/27 23:04ID:e5IKsX9Ahttp://www.andante.org/scsi_eh.html
0420名無しさん@お腹いっぱい。
02/04/30 16:36ID:0lZUrbHd0421login:Penguin
02/04/30 16:40ID:ozCXgXAB0422login:Penguin
02/04/30 16:42ID:MJcEiblG似た名前の本がいっぱいあるから、amazoあたりへの
リンクぷりーず。
0423名無しさん@1周年
02/04/30 21:11ID:TGbiUZt2アスキーから出ている本です。
かなり前に出版された本ですが、
版を重ねて新しいのが常に店頭にあります
読んだ感じは、わかり易い。
有名なシステムコールについて、わかりやすくかいている
fork ,exec
それ以外は421の言うとおりかもしれない
0424login:Penguin
02/04/30 21:25ID:x3t7pobP外人が、sbrkを使うとフラグメンテーションの問題があるから
memmapを利用するという投稿をニュースでチラッと見た記憶が
あるけど、これ間違ってない?
最近別スレで128kb境界問題が出てきて思い出した。
0425login:Penguin
02/05/15 15:53ID:rs0ae66rgccと比べたらまだいいのかもしれないけど。。。
0426login:Penguin
02/05/15 16:28ID:Rs+cx4KM0427もなー君@お腹いっぱい。
02/05/20 00:01ID:f4n8AHGc0428login:Penguin
02/05/27 03:28ID:k9GgAUwV0429☆解説キボーン!☆
02/05/29 00:33ID:46fyOTxK--------------------------------------------
TSSの制限:
・104バイトのメモリを一度にロード,アンロードする必要があり,遅い。
・プロセスのカーネルスタックとタスク状態が,カーネルアドレス空間に存在しない。
・各プロセスのスタックが,アクティブ時に同じ仮想アドレス空間に存在する。
・ネスト可能な配置の複数プロセスからなるスレッド群を構築できない。
・プロセス終了時に,終了しようとしているコンテクストでアドレス空間を復元できない。
0430login:Penguin
02/05/29 02:03ID:WGjCN8PQウゼェ厨だねお前。
0431login:Penguin
02/05/31 22:43ID:AGbA9dZAwin32もカーネルベースのスレッド。
つか1スレッドの作成に1msもかからないのね。もっと遅いと思ってた。
0432login:Penguin
02/05/31 22:58ID:sbY2Cg79どうでしたか?
行きたくても、行けなかった、へぼな技術者より。
0433people
02/06/09 01:09ID:hI+hJJCqカーネルはどうして尾バーヘッドが大きくなってしまうのか
0434login:Penguin
02/06/09 04:26ID:eXI64/k4コンフィグで設定可能。
オーバーヘッドは大きくなるが、応答性やスループットがよくなる。
0435people
02/06/09 17:40ID:hI+hJJCq0436login:Penguin
02/06/26 14:22ID:knPs+H7Yhttp://slashdot.org/article.pl?sid=02/06/25/1351223
0437login:Penguin
02/07/27 14:50ID:YRW6HDbB0438ANONYMOUS
02/08/04 19:52ID:OQzedWlY0439つち ◆AdmGVg7c
02/08/05 20:44ID:Su+a+rqn>>432
のときの資料がここにPDFであります。
http://www.valinux.co.jp/technical/event/va_kernel_forum.html
0440login:Penguin
02/08/09 22:24ID:NfDvV172書籍にならないのかな.
0441login:Penguin
02/08/10 13:18ID:RJXz1T6O書籍にならないんじゃない?
連載時からだいぶ時間がたってるから今の2.4カーネルと食い違ってる
ところもあるし。
0442login:Penguin
02/09/03 02:51ID:rckhdKiCハードウェア割り込みにより、
カーネルモードで動作してるプロセスから制御を奪えるからかな。
間違っていたら訂正キボンヌ。
0443login:Penguin
02/09/03 04:58ID:/eCx0MNBそれは、応答性が上がる説明にはなっても、スループットが上がる説明には
ならんよ。基本的に、応答性とスループットは、チューニングの上では相反
することが多い。特にハード・リアルタイム性の保証というレベルで
応答性を重視した場合、スループットは犠牲になると考えるべきだ。
リアルタイム・カーネルを使ってスループットがもし向上したなら、それは
TSS的手法でのスループット向上の余地がまだまだあるということを意味して
いると考えた方が良い。
0444login:Penguin
02/09/03 08:25ID:rckhdKiC激しい突っ込みどうもです。
0445login:Penguin
02/09/03 09:05ID:0hIwx27+>連載時からだいぶ時間がたってるから今の2.4カーネルと食い違ってる
>ところもあるし。
改訂版が出る可能性も。
0446login:Penguin
02/09/03 09:25ID:rckhdKiC詳細を知りたかったら自分の興味あるバージョンのカーネルの
中に入っていかないとだめでしょ。うちはUnderstanding〜の
2.4 anticipatingでとりあえずは満足です。
0447login:Penguin
02/09/04 21:45ID:LYCQm1JBPS/2キーボードのaキーを押して端末にaの文字が表示されるまでの仕組み
を教えてくれろ。
0448login:Penguin
02/09/04 22:03ID:Wi+p0yRy0449login:Penguin
02/09/05 01:34ID:DWBmmIUdその先もきぼん。
0450login:Penguin
02/09/05 01:42ID:OpRaeHU5恋のB級アクション か・・・懐かしいな。 かーみーかーぜーのー
0451名無しさん@Emacs
02/09/05 06:50ID:dV7dMjTj2.6で新しく入る機能でいちばんつかえるものってなにになるんだろ。。
0452login:Penguin
02/09/05 07:33ID:9CK0WvFX0453login:Penguin
02/09/05 08:23ID:jbkaZ2a12.6最大の目玉です。
0454login:Penguin
02/09/05 14:29ID:kYgJBhoQ0455login:Penguin
02/09/05 19:35ID:DWBmmIUd数年前に最前線UNIXのカーネル読んでみたけど、完全に忘れてるし
全く身についてない。
ソース読んでみても、何をやってるのかは分かるが、その後なんか
生かされたかっていうと、そんなこともない。
Linux Japan のカーネル解説は毎月読んでたけど、読んだだけでは
分かった気がしないし、身についてる気もしない。
単なるコンピュータ好きの理系学生です。
プログラミングするのは好きなんですが、
こーいうのは向いてないのでしょうか?
なんか、楽しくカーネルハックする方法ってないですかね?
0456login:Penguin
02/09/05 19:40ID:PHblvNqMまず 2ch に来るのをやめれ。
そしてプログラミング以外の趣味を見付ける事だ。
0457login:Penguin
02/09/05 19:43ID:DWBmmIUd>>456のいわんとしてることがわかりかねる
0458へぼ
02/09/05 22:24ID:yOuLsem/カーネルはいじらないとわかんないとこが多いよ.
たとえば,コンソールに"Helo"と出力するだけのシステムコールを作ってみては?
うまくいったら,次は,cat /proc/helo で "Helo"を出力するカーネルモジュールを
作ってみよう.
0459login:Penguin
02/09/06 11:28ID:pbumUvTr学生のくせに偉そうだな。
0460login:Penguin
02/09/06 12:53ID:GXI6GQhX園児のくせにえらそうでちゅ..
0461login:Penguin
02/09/06 16:26ID:/rYnSyOHありがとうございます。
なんか、温かい言葉をかけてもらって涙ぐみました。
0462login:Penguin
02/09/06 17:47ID:Y7BSSDDGとりあえず>>970が次スレ立ててくれ。
0464login:Penguin
02/09/06 21:40ID:J1Wkvxow起動すると、固まるんだ。プロセスがSに成る。
0465login:Penguin
02/09/06 21:46ID:x9S5w6Pj2.4.xにする
0466login:Penguin
02/09/07 19:50ID:KVnNwClL2.4.xだと書き込めるんだけどね。
みんなLilo使っているのかな。
0467login:Penguin
02/09/18 10:38ID:sPjt+sc2linux/fs/exec.cのde_thread( )関数内において
wait_task_inactive( )関数を呼び出しているのですが、
この関数はlinux/kernel/sched.cにおいては
CONFIG_SMPで囲われています。
つまり、SMPマシンでないとどうしてもコンパイルエラーが
でるということになりますが、みなさんはどう対処され
ましたか?
問題の関数を呼び出しているところだけCONFIG_SMPとした
だけでいいものなんでしょうか。。。
0468login:Penguin
02/09/18 13:00ID:sPjt+sc2とりあえずfs/exec.cの該当個所にも手が入ってるので
それを試してみます。どうもすみませんでした。
0469login:Penguin
02/09/20 12:18ID:DfRVVlpc結局 N-on-M モデルではなく 1-on-1 に
なった模様。
0470login:Penguin
02/09/22 05:27ID:qgNMD4Z1ソースは?
0471login:Penguin
02/09/22 11:36ID:U79Ebj4m冷静に考えても N-on-M を採用するとは考えられないだろ?
理由がわからないならお前はLinux使う価値なし。
まーどうせわかんないんだろうけど(w
0472login:Penguin
02/09/22 13:59ID:uJodz/km君もちゃんと勉強して早く理解しようね。
0473login:Penguin
02/09/22 18:17ID:n3nilxsRhttp://slashdot.jp/article.pl?sid=02/09/21/1613222
0474people
02/09/22 19:02ID:RIhA1MQQ0475login:Penguin
02/09/22 19:15ID:L7SWaJdw0476login:Penguin
02/09/22 19:57ID:ZMoD+eSk0477login:Penguin
02/09/22 20:30ID:EPpsCLH70478login:Penguin
02/09/22 20:40ID:ZMoD+eSk0479login:Penguin
02/09/23 00:11ID:SuKTDRxGhttp://www.uwsg.iu.edu/hypermail/linux/kernel/0209.2/1581.html
NPT(NativePosixThread)はNGPTの4倍速いそうだ。
0480login:Penguin
02/09/23 02:33ID:oSMBuhdV0481login:Penguin
02/09/27 23:32ID:nDbC1gzqプロセス UNIX
0482login:Penguin
02/10/05 20:06ID:IheoajWb0483login:Penguin
02/10/05 20:25ID:IheoajWbREd hat 8 どうなんでしょうか?
0484login:Penguin
02/10/05 20:36ID:CZ0W55rFhttp://www.marcelothewonderpenguin.com/
0485login:Penguin
02/10/05 20:46ID:IheoajWb身は、複数のカーネル・スレッドを 1 プロセス内でまとめることができる抽象化機能
を持っていません。代わりに、fork() システム・コール (clone() とも呼ばれる) が
実装され、ユーザーは、子プロセスをその親と同じアドレス・スペースで実行するよう
指定できます。次いで、このシステム・コールは、Linux スレッド化ライブラリーによ
り使用され、ユーザーにスレッド・プログラミングの抽象化機能を提供します。ユーザ
ー・インターフェースの観点から見れば、すべての POSIX スレッド・インターフェー
スは、実際、Linux の下で全面的にでサポートされていますが、実装面では 信号 に
問題があって、完全には POSIX に準拠していません
0486login:Penguin
02/10/05 20:52ID:qui8pQ9vそのPOSIXとやらに完全準拠するとパフォーマンスが大幅に向上すると?
0487login:Penguin
02/10/05 21:02ID:IheoajWbhttp://bazar.conectiva.com.br/~marcelo/pics/dsc00051.jpg
http://bazar.conectiva.com.br/~marcelo/pics/dsc00090.jpg
0488login:Penguin
02/10/05 21:04ID:CZ0W55rF改善される.待つべし
0489login:Penguin
02/10/05 21:43ID:IheoajWbタスクを生成する時にメモリと、シグナルハンドラとファイルディスクリプタが
別個の存在になっていればプロセス、共有していればスレッドとなります。
処理単位(タスク)として見た場合だと、扱う側(スケジューラ)からは見分けが
つかないようです。
0490login:Penguin
02/10/05 23:40ID:CZ0W55rFkernel内なんかどうなっていても,user spaceが適切な機能を
正しく高速に実現できるような機能を提供できればそれでいいじゃん?
0491login:Penguin
02/10/06 02:07ID:bFXVWfMCThe idea is a process has five fundamental parts:
code ("text"),
data (VM),
stack,
file I/O,
and signal tables.
0492login:Penguin
02/10/06 02:21ID:bFXVWfMC0493login:Penguin
02/10/06 12:28ID:enH5nZqJそのような一般論をお書きになっても、ここは/.JPでは
ありませんので誰もプラスモデレートしてあげられません。
Linuxの方針はアホだとかScheduler Activationや
KSEは所詮論文ネタにすぎないといった殺伐とした
カキコを期待します。
0494login:Penguin
02/10/15 00:44ID:QWvdQZ6c確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。
その子のお父さんは「すみません」と恥ずかしそうに謝っていた。
しかし、それだけでは終わらなかった。
俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。
お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が
聞こえてきた。すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。
すると男湯、女湯の両方からくすくすと笑い声が聞こえた。
俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。
その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん
上にいっちゃったの〜、パオーンしてるの〜」と女湯に向かって叫んだ。男湯・女湯同時に
大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。
それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。
俺は逃げ出すようにして銭湯から出て行った。
その日以来、その銭湯へは行かなくなった…。
0495login:Penguin
02/10/15 01:28ID:fNmJTfkzなつかしいコピペだな。
0496login:Penguin
02/10/20 19:44ID:ibUwKkfeそんな時間あるなら、道路工事のバイトでもしてソープ行った方が何倍もいい。
0497login:Penguin
02/10/20 19:56ID:g7nwg/f0凄い煽り文句だなあ
0498login:Penguin
02/10/20 20:38ID:IzpswdB0適性と本能とを十分に吟味すると・・・
0499login:Penguin
02/10/20 21:29ID:o5SkVp+g面白いから許す。
0500login:Penguin
02/10/20 21:53ID:g68BLgUdなにをいっておるのか.カーネルをヨム.こんな悦楽は他にはない.
ヨムだけで飽き足らなくなったらカイてみるのだ.
カイたコードがパニックしてみろ.射精する.
コードをカクのは極楽だあ.セックスだあ.
..では今夜も逝ってくる.
0501login:Penguin
02/10/22 20:14ID:AiS+bb4wLinuxのカーネルなんかよりも、綺麗なネエチャンとHする方が絶対いいと思う。
つーか、Hするよりも、Linuxのカーネルに触れたいと思う香具師っているの??
0502login:Penguin
02/10/22 20:21ID:nhAAklvzそりゃ居るだろうよ。
世の中Hするのが面倒って香具師もいるし。
0503login:Penguin
02/10/22 21:16ID:JDhHENtH0504login:Penguin
02/10/23 16:12ID:Y8yrR3XD0505名無しさん@Emacs
02/10/24 00:42ID:bb9TFS/Q0506login:Penguin
02/10/24 01:00ID:ET3a/VkV0507login:Penguin
02/10/24 19:57ID:b/KVmODiだけど、四六時中できるもんじゃないし、それだけじゃ、時間が余ってしまう。
だから他の楽しみを見つけるわけだ。音楽でも映画でも、ゲームでも何でもいい。
Linuxだって、いっぱいある楽しいことの中のひとつ。
0508login:Penguin
02/10/26 01:12ID:rW1xbOyc0509login:Penguin
02/10/26 06:57ID:D0xVkV9N0510login:Penguin
02/10/26 15:04ID:UK314aqBそういう質問しないでくれ
0511login:Penguin
02/10/26 16:27ID:hpgBvCrL0512login:Penguin
02/10/27 04:11ID:9Wnyh1Y2Pスレッドで作ってもなんかプロセスが見えるんだけど
そういうもんだっけ?
0513login:Penguin
02/10/27 10:33ID:67Tkky68cloneで作ってるなら見える。
linux-threadはclone使うし。
0514login:Penguin
02/10/27 20:02ID:9Wnyh1Y2(゚∀゚)サンクスコ
Pスッドレは中でclone呼んでるっぽいし
しょうがないのか
0515login:Penguin
02/10/29 06:45ID:JuHHTy9a・開発初期のg++コンパイラが良くなかった。
・今から書き換えると、(コードの行数を作業時間で割って)とてつもなく無駄だ。
と言う理由らしいのは周知かと思いますが、
実際仮にC++でこれから書いたとしたら、どうなりますか。
実行速度や、開発のしやすさとか、いろいろありますが。
(質問が抽象的でゴメソ)
0516login:Penguin
02/10/29 07:58ID:U+AOr944http://sourceforge.jp/projects/higepos
0517login:Penguin
02/10/29 14:33ID:rOSc35bhのパッチって、何に当てるんですか?
2.4.20にあてるのかとおもったけど、まだでてないよ
2.4.19にあてるの?
0518login:Penguin
02/10/29 14:40ID:kF5lRjj20519login:Penguin
02/10/29 14:54ID:3y33Wm74ノーミソにでも当ててなさい。
0520login:Penguin
02/10/29 14:59ID:rOSc35bhヒントお願いします
0521login:Penguin
02/10/29 15:08ID:3y33Wm74-preのイミをかんがえろ。
ここは勉強スレであって質問スレではない。
0522login:Penguin
02/10/29 15:27ID:rOSc35bhpre=前
だから、pre20だったら20個前、pre1ならひとつ前=最新
ということ?
0523login:Penguin
02/10/29 15:52ID:kF5lRjj22.4.20は出てないけど、
2.4.20-preは出てる。
0524login:Penguin
02/10/29 16:17ID:U+AOr9440525login:Penguin
02/10/29 16:29ID:bTPS0Lxn何とも言えん。
Tcl/Tkのバージョンが上がったとかじゃないのか?
…あと、開発版カーネルで文句があるならさっさとバグレポートしてcontribute。
0526login:Penguin
02/10/29 16:36ID:rOSc35bh2.4.19のソースに2.4.20-pre*を当てるってことか
0527名無しさん@Emacs
02/10/29 16:49ID:7wlFWLa1では 2.4.20-rc* はいかがなさる?
ttp://linux.bkbits.net:8080/linux-2.4/[email protected]?nav=index.html|ChangeSet@-1d
0528login:Penguin
02/10/29 17:28ID:rOSc35bhそんなのないじゃん
rc*って出てるやつにあたるんじゃないの?
0529login:Penguin
02/10/29 18:25ID:F8Jhdnomrc の意味を考えてみレ.それとさぁ >>527 のリンク先見たの?
0530login:Penguin
02/10/29 18:32ID:rOSc35bh見たよ。
rcってのもpreと同じく一つ前のにあたるってこと?
0531login:Penguin
02/10/29 18:37ID:rOSc35bh0532login:Penguin
02/11/02 09:32ID:HLU1eDtI0533login:Penguin
02/11/02 16:08ID:bV/vZkvY世の中は三連休。リナックスで仕事してる漏れは幸せだね。畜生!
0534login:Penguin
02/11/02 16:58ID:Dd2p8WWe0535login:Penguin
02/11/03 23:04ID:I26+7MmpProduct 3CCFE574BT
をサポートするカーネルのヴァージョンが知りたいのですが
いろいろ調べたのにわかりませんでした。
ちなみにSlackware 3.5.0 Ker.2.0.2 です。
0536login:Penguin
02/11/03 23:18ID:YjxntTz6スレ違いな気もするが…
まずは対応しているpcmcia-csを調べろ。
カーネルはたぶん2.2以降。
0537login:Penguin
02/11/03 23:32ID:I26+7Mmp0538login:Penguin
02/11/03 23:51ID:eky+Yott手元の pcmcia-cs 3.2.1 の SUPPORTED.CARDS によると
3c574_cs.o で使えるよ。
0539login:Penguin
02/11/03 23:54ID:YjxntTz6そいつのドライバが入ってるのは、pcmcia-csだから、
そっちからあたった方がいいよ。
2.4ならkernel pcmcia-csで対応してると思うが。
0540login:Penguin
02/11/05 18:27ID:Mw3FkA2fRedHat7.2上でデバイスドライバを作っていて、それを最近リリースされた
RedHat8に移植しようと思っているのですが、何故かコンパイルが
通ってくれません。
自分のソースに不具合があるのかと思い、
ttp://ime.nu/www.hemamu.com/dev/linux/pci/index.html
で公開されているソースをコンパイルしようとしましたが、
それでもできませんでした。
どなたかこのような不具合の解決方法をご存知でしたら、
ご教授下さい。
0541login:Penguin
02/11/05 18:36ID:5JSfVnImたまにあるけど、構造体の定義が変わってるとか。
kernel-headerをインストールしてなかったと言うオチは禁止。
0542login:Penguin
02/11/05 18:41ID:aQPE60cCかなり落としてしまいますが、kernel-headerの意味が
わかりません(´д`)
たぶんOSのインストールの際の事だと思うのですが…。
現在のシステムは7.2からのアップグレードで、
少し不安があったのでフルインストール(Up Grage)
しました。
0543login:Penguin
02/11/05 20:14ID:D2HLArIF(´・ω・`)
0544login:Penguin
02/11/05 20:18ID:Kq5dWAfBRed Hat 7.2 までは kernel-headers パッケージが存在したのだが、
Red Hat 7.3 以降では無くなってしまった。
代わりに kernel-source パッケージをインストールして、
/lib/modules/バージョン/build/include/ にあるカーネルヘッダを使え。
/usr/include/linux/modversions.h も見れ。説明が書いてある。
0545login:Penguin
02/11/05 23:12ID:Unrjw0pxであれば、原因しぼれるでしょ。動きませんなら少し難しいけど。そんなファ
イル無いとか、そんなstructのメンバ無いとか、そんなのとちがう?
0546login:Penguin
02/11/05 23:20ID:f6UdnBSq0547login:Penguin
02/11/05 23:30ID:iivfSIhpええ、struct inode やstruct file
などのファイルがないと、いわれました。
それだけではなく、file_operationの構成も
違うって怒られました。
その他あげたらきりがないです(爆
エラーの予想は付いていたのですが、OSのインストールの際にも
Kernel開発用のパッケージをインストールしたのですが、
それでもダメでした。
0548login:Penguin
02/11/05 23:40ID:zerF/jtCkernel-source パッケージはインストールした?
/usr/src/linux-2.4 を/usr/src/linux にシンボリックリンク張ってる?
0549login:Penguin
02/11/05 23:43ID:iivfSIhpあります。
ちなみに7.2でコンパイルしたデバドラを
-f オプション付きでinsmod したら組み込むときに
文句をいわれましたが、正常に動作してくれました。
0550login:Penguin
02/11/05 23:47ID:5JSfVnIm/usr/src/linux/include/asm
ある?
なかったら、そこでカーネルを一回作る。
0551login:Penguin
02/11/05 23:48ID:iivfSIhpしかしMakefileなどを使って自動的に
インストールできるようにしたいので、
コンパイルの必要性が出て来たのです。
0552login:Penguin
02/11/05 23:51ID:iivfSIhpすいませんが、今すぐには確認できません。
そこでKernelを一回作るというのは、現在の
Kernelを再構築する、ということでよろしいのですよね?
そうするとasmディレクトリが構築される、
と言う解釈でよろしいでしょうか?
0554login:Penguin
02/11/06 00:02ID:yIb370Cfmake configですね。
では試してみます。
ありがとうございました。
0555login:Penguin
02/12/18 21:52ID:2+/TSmSdカーネルを全然知らない香具師がデバイスドライバを作ったと主張
する珍妙なスレであった。
0556login:Penguin
02/12/18 23:47ID:cj+DVOLQ0557Tovacox
02/12/19 00:00ID:D9IEsFe0とりあえずカーネルの中身を見るときなどは、
なぜか。
%emacs kernel/sched.c
って打ってしまいます。。。
0558login:Penguin
02/12/19 00:22ID:bALO5RwSinit/main.cだったと思います。基本ですね。
最初に読んだのは1年以上前なので、よく覚えてないなー。
最近はarch/某archとかinclude/asm-某archしか見てません。
0559login:Penguin
02/12/22 14:09ID:ouHor4+lgrep -r cache kernel
だったかと。
いやね、freeで表示されるbufferとcachedの違いがわからなくてさ。
0560login:Penguin
03/01/05 01:38ID:CxZrKX7YKernel構築してるんですが、ほとんどmoduleにしたらbzImageが2MB位。
そのmoduleってどこにあるんですか?
0561login:Penguin
03/01/05 02:25ID:bcfTdkeOくだ質で聞け。
0562login:Penguin
03/01/05 18:21ID:qGyrapmdどうして2Mもいくのかが不思議だ、、、
0563login:Penguin
03/01/05 18:39ID:CxZrKX7Y0564login:Penguin
03/01/06 02:25ID:polLPkwqカーネルを間違って、削除してしまいました・・・(TT;
(ファイルを整理していたら、誤ってrm /* を実行してしまったようです。)
カーネルを修復する方法はありますでしょうか??
当然の如く、再起動したらカーネルが見つからないと言われ、起動できなくなってしまい。
WEBで調べましたが、再構築の情報ばかりで、削除してしまった場合の対処方法はあまり載ってませんでした・・・
重要なデータが残って、仕事に影響が出るので、再インストールは避けたいのですが、
すいません、助けて下さい。。。
0565login:Penguin
03/01/06 02:40ID:+ybouD2Iスレ違いじゃなくて板違い
http://pc.2ch.net/unix/
rootでファイル整理か。おめでてーな。
0566login:Penguin
03/01/07 16:55ID:YuiOuLjnhttp://pc.2ch.net/test/read.cgi/linux/1033652217/l50
0567login:Penguin
03/01/09 02:42ID:2Y8NA8K90568login:Penguin
03/01/09 04:13ID:qciTMwbB0569login:Penguin
03/01/13 21:12ID:+j4oRwV/どうしてもチェックが入りません。なんで?
0570login:Penguin
03/01/13 22:30ID:oIjkg+Y+CONFIG_EXPERIMENTALを有効にしないとダメらしいが。
0571login:Penguin
03/01/13 23:53ID:+j4oRwV/くだらないこと聞いてスマソ。。。
0572山崎渉
03/01/15 11:22ID:dWXij4Sa0573login:Penguin
03/01/17 22:57ID:quy9Xyzw〜 エンタープライズ向けに刷新されたカーネル・コア 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_01a.html
0574login:Penguin
03/01/17 23:37ID:eB0uQzq3未来の日付が。。。
0575login:Penguin
03/01/18 01:25ID:xFnceJeMあそこはいつも翌日の日付を付けてるみたいだ。
こまかいことは気にせず、まぁ読んでみ。
あ、図が動いてる。
0576login:Penguin
03/01/20 12:36ID:+ihWiA7A0577login:Penguin
03/01/26 14:47ID:/P1ziCIbhttp://slashdot.jp/linuxkernel/03/01/23/0722212.shtml?topic=2
Understanding the Linux Kernel, 2nd Edition(第二版です)
http://www.oreilly.com/catalog/linuxkernel2/
0578henoheno ◆g2j80BX5do
03/02/05 04:36ID:az2yyDu5MINIX, Linux 0.x / 1.x, ITRONの様な、主に参照しにくい
ソースをCVSリポジトリに入れてWWW上で公開しています。
CVSリポジトリの実体も別の場所で公開しています。
学習・実験用にご自由にお使い下さい。
ttp://minix-up.sourceforge.jp/cgi-bin/l.cgi/
※上記にある全てのリポジトリは下記ツールのための
テストビルドであり、正確さを保証するものではありま
せん
ttp://cvsknit.sourceforge.net/
0579554
03/02/10 09:52ID:XA+hpjDH今日久々にコンパイルの問題を考えてみました。
するとnetでgccの代わりにkgccを使えばいいとあったので
つかってみたら、何の問題もなくコンパイルできました。
カーネルを全然知らない香具師のぼくには、何でかの原因は
わかりませんが、とにかく解決してよかったです。
以上報告終りです。
0580login:Penguin
03/02/10 11:16ID:Ytep6YkN赤帽ですか。
gccのバグに引っかかって失敗すると言うやつですな。
0581login:Penguin
03/02/22 01:02ID:Aw4V0i4X〜 サポート・アーキテクチャ/デバイスの拡充 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_02a.html
0582login:Penguin
03/02/22 05:16ID: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で参照しているやつが多いですが,
それは何か理由があるのですか?
0583login:Penguin
03/02/22 06:21ID:OJUfFhm2そこで正解。
基本的にカーネル内は一つの名前空間で作るので、どこのxtimeもそこを参照します。
> それは何か理由があるのですか?
.h といえば extern か static inline だろー。それ以外に何を期待したの?
0584login:Penguin
03/02/22 15:40ID:RdpbwtMM>583
>.h といえば extern か static inline だろー。それ以外に何を期待したの?
externは「参照」であって「定義」ではないわけですよね.
なぜヘッダファイルでexternをつけないで「定義」していないのかなあと思いまして.
__attribute__で16バイト境界にxtimeを割り当てるのは.hファイルではできないとか?
static inlineって普通のstaticとどう違うのですか?
0585login:Penguin
03/02/22 19:31ID:U6el7RufまたアニメーションGIFが使われとるね。
後編が楽しみage
0586login:Penguin
03/02/22 20:48ID:mMuNz1JWそもそもexternなんて付けなくてもいいんだから。
けど一応付けとくのが作法とされてるだけでは?
0587>586
03/02/22 22:05ID:kUvFWPe5何も付けずに外部変数を宣言→実際にその変数のために記憶領域を割り当てる=定義
externをつけて外部変数を宣言→その変数のために記憶領域を割り当てない=参照
というのがルールですよね?
その意味で付けると付けないのとは全く意味が違うと思うのですが・・
(実際にminixではEXTERNというマクロを宣言して区別しています)
それともLinuxは特別なルールがあるのでしょうか?
0588login:Penguin
03/02/22 22:57ID:VOGO6EsT.hの中で実体を定義すると、二ヶ所でインクルードした時悲劇がおきます。
と言うことでいいのかな?
気にした事ないけど、.hでは実体を作らないルールなんでしょうね。
0589>588
03/02/23 01:52ID:6VcEAka+そうなのですか.ありがとうございました.
実体の定義が一カ所にまとめられていないのを初心者なので何となく気持ち悪く思って.
ここの掲示板は親切に答えてくれる人が多いのでいいですね.
他に日本語でカーネルに関するページ
(JFなどの一般的な情報ではなく疑問を掲示板などで活発に議論しているところ)
を教えていただけると嬉しいです.
0590login:Penguin
03/02/23 20:25ID:7b0qPt9Mそのexternの行はきっと参照ではなく宣言です。プロトタイプ宣言。
宣言は .h に
定義は .c で .hをインクルード(このときexternは嘘だが無視)
参照は .c で .hをインクルード
だろー。
なおstatic inline は、externに定義/参照されない真のinlineですよ。
だから 実体を定義をしてはいけない .h 内に書いても大丈夫。
>>587
嘘を無視なのでEXTERNはつかわないみたい。
ただし、extern inlineの場合は一箇所で定義して、他で参照しないといけな
いので、EXTERN_INLINE をdefineする例があるみたい。asm-alphaあたり参照。
0591login:Penguin
03/02/23 20:27ID:7b0qPt9Mあ、「linuxのカーネルでは」という話ね。嘘を無視するかどうかは特に。
0592>590,591
03/02/23 23:24ID:OBPg6wzG実体定義を同じモジュールでやるということですよね?
0593login:Penguin
03/02/24 00:53ID:7yiUwah3うん。そういう意味(外と宣言しておきながら中で定義をする)で使ったの。
Cの仕様もgccの仕様も読んだことないので、正しくないのかどうかは知らないの。
0594login:Penguin
03/02/24 16:17ID:sjK/nEKgありがとうございました.
0595login:Penguin
03/02/25 23:59ID:o0sc4vrn0596login:Penguin
03/02/26 05:17ID: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"
何かファイルがないのかと思い,試しにカーネルをコンパイルしてみましたが,
何の問題もなくカーネルイメージを作成できました.
ネットで調べてみましたが,コンパイルでつまずくことはあまり無いらしく,
原因を突き止められませんでした.
また,ネット上のカーネルモジュールのサンプルコードを使ってコンパイルしたときも
ヘッダファイルに大量のエラーが出て,コンパイルできませんでした.
考えられる原因は何でしょうか?
どうか宜しくお願いします.
0597login:Penguin
03/02/26 06:20ID:aNK4cICnすいませんでした.あまり本は信用できませんね.
ってか,シンボリックリンク張ってるのになぜ??
0598login:Penguin
03/02/26 06:26ID:awPWSoM5$ man gcc
$ info gcc
0599login:Penguin
03/02/26 22:59ID:5ThntVhsマニュアルは質問する前に読みました.
問題は"/usr/include/linux" -> "../src/linux/include/linux"
というシンボリックリンクが張られているにも関わらず,
gccで-Iオプションを付ける必要があったということなんですが・・
0600login:Penguin
03/02/27 00:58ID:1e6KPqQp0601login:Penguin
03/02/27 04:16ID:a1jqWrjyはい.カーネル本やサイトでのコンパイルの書式にも-Iオプションは含まれていませんでした.
シンボリックリンクがあるから当然なことかもしれませんが.
カーネルコンパイルの時にモジュールもコンパイルしたのですが,その時には-Iオプションを
付けていたのでもしかしたらと思い,-Iオプションを付けるとコンパイルできたのです.
0602login:Penguin
03/02/27 13:43ID:t9JDv6rvリンク張った先がincludeの検索パスに入っていなかったとか。
0603login:Penguin
03/02/27 21:05ID:K7wez/ac/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がインクルードのはず.謎です.
0604login:Penguin
03/02/27 22:07ID:U6VMdoGiasmは?
0605login:Penguin
03/02/27 23:34ID:ysi2QcED"/usr/src/linux/include/asm" -> "asm-i386"
です.ちなみに今回のモジュールは>>582のやつです.
asmはincludeしませんでした.
コンパイル後は正常に動作しています.
0606login:Penguin
03/02/28 00:14ID:oFO1qwF8おぷしょんは? -nostdinc がついてるとかいわない?
0607login:Penguin
03/02/28 03:36ID:Ph9QX781-Iオプションを付けない場合のエラーの行数が膨大すぎてよくわかりません.
出力のリダイレクトもできないようですし・・・
試しに-nostdincを付けてコンパイルするとincludeファイルが無いという
エラーが出るだけです.
0608login:Penguin
03/02/28 12:46ID:oFO1qwF8ちょっとまった。
もとのエラーはなに? includeファイルがないってエラーじゃなかったのかな?
それと、リダイレクトなら make >& ファイル でできるとおもう。
0609login:Penguin
03/02/28 13:55ID:ij45/eSjincludeファイルがないので、そこでの宣言に依存する部分が
山ほどエラーになるって事では?
>>607
リダイレクトするなら、-v付けて途中経過も見れた方がいいかも。
0610login:Penguin
03/02/28 16:12ID:HFAciNpD>もとのエラーはなに? 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)
.....という感じです.
0611login:Penguin
03/02/28 18:52ID:Mjgg1ddGわかったよ、ママン
0612login:Penguin
03/03/01 00:24ID:jndZSd0z/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
ユーザプログラムで使うヘッダだよ。
あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
0613login:Penguin
03/03/02 03:29ID:Lshpa1Id>/usr/include/linux はもともとglibc-kernheaders に含まれるヘッダがおかれる場所だろ?
>ユーザプログラムで使うヘッダだよ。
そうだったのですか.
カーネル空間のプログラムを作るときは使うべきではないのですね.
>あと、-Iで指定するなら/lib/modules/`uname -r`/build/include の方がいいな。
そうします.リンク先をミスするのを防ぐためですね.
ありがとうございました.
0614login:Penguin
03/03/02 05:04ID:FJ0TV1/oマジスか。知らんかった・・・
というかどこかで
/usr/include/linux -> /usr/src/linux/include/linux
とすべし というのを見たことがあったので鵜呑みにしてた
ちょっと調べるかな
0615login:Penguin
03/03/02 14:03ID:Oyof/yxmいて#ifdef KERNEL 等できりわけてあるの。で、glibcとkernelの開発が順調
ならここは同期するので、コピーしてもいいのですよ。
新しいカーネルで古いglibcを使うとかなると、だめになる状況が発生するの。
glibc はパッケージ化するときに glibc-kernelheaders として、その glibc
をコンパイルしたときに期待したカーネルのヘッダをとりこむので、どっちかっ
ていうとこっちを使ったほうが安全だけど、基本的にはlibcはカーネルと合せ
てつくらないとだめです。
0616login:Penguin
03/03/10 22:33ID:/SdozaOc〜 ファイルシステム/ボリューム管理機能の進化 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_03a.html
川o・-・)ノ <先生!こんなのがありました!
__/ / /
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/
0618login:Penguin
03/03/17 21:44ID:7QyIeJjo〜 IPv6、UML、セキュリティ機能の統合 〜
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04a.html
0619login:Penguin
03/03/19 03:08ID:suPCGW2S0620login:Penguin
03/03/19 11:34ID:N7reRNVSこの本はKernel2.2用にかかれています。
2.2を学んだあと、2.4になって変更された部分などを知るのに適した
書籍などってありますでしょうか?
0621login:Penguin
03/03/21 00:19ID:DvPk6Xi8http://www.changelog.net/log/1999/special/wwol2.4/
0622Jet Charles
03/03/25 20:22ID:Px5e54WHとときどきpanicになってしまいます。再現性が低いのですが
構造はstruct {unsigned int spectrum[2048],int start,int end};
な感じです。
ポインタで渡すことにしたら問題は無くなったかに見えるのですが、
いまいちピンとしません。
C言語ではこういう配列わたしちゃいけないのですか?(仕様など)
or
カーネルではいけないのですか?(サイズなど)
ユーザスペースで動くテストプログラムはうまく走るので
バグ混入を恐れつつ開発継続中。
どなたかご存知の方がいればよろしくお願いいたします。
0623login:Penguin
03/03/25 21:03ID:fjRYSSzYカーネルスタックはそんなに容量ないです。
でかい領域が欲しければ、素直にkmallocしましょう。
0624名無しさん@Emacs
03/03/25 22:11ID:7wu3YUNoカーネルスタック小さいからだめ。Cの仕様ではかまわない。
でもね。実際的にはだめ。コストを考えなさい。
0625Jet Charles
03/03/27 06:23ID:Kwn8SiQbおかげで不安は減りました。
スタックのサイズは同時にはしる全てのモジュールが
関わるにもかかわらず、OSが落ちるというのも考え
ものですね、、
0626login:Penguin
03/03/27 08:09ID:10DBd27vなんのためのオープンソースなのですか?このプロセスがあるから、
キミのような腐ったモジュールが排除されるのです。
lkmlでは自動的にスタックをたくさん使っている関数を列挙するツールや、
それで見付かったスタック喰いの関数の書き直しを精力的にやってますよ。
0627名無しさん@Emacs
03/03/27 08:11ID:AAL7v3K2確かに、ユーザ空間のようにスタックを保護してくれると便利かもしれないの
ですが、OSだったりファームウェアの場合は必ず、ユーザアプリも多くの場合
は、スタックの量を、事前にちゃんと設計しないとだめです。
それに、残念ながら、Linuxではドライバは、スタックに限らず、どんな破壊
工作でもできるので、スタックだけ保護してもさほど意味ないのですよ。弱ー。
0628login:Penguin
03/03/27 13:25ID:mo6iAXITドライバでそういう事するのが、そもそも間違っているという説もあります。
>>627
カーネルとドライバが同じ権限で動いている限り、どのOSでも避けられない問題のような気がしますが。
0629login:Penguin
03/03/28 14:56ID:LjzZGjYj2.6からなんとかする模様
0630名無しさん@Emacs
03/03/28 23:27ID:tgiw/vfZうん。つまり、カーネルとドライバが違う権限で動いているOSでは避けられる。
0631名無しさん@Emacs
03/03/28 23:28ID:tgiw/vfZ0632山崎渉
03/04/17 12:11ID:PWISM87M0633山崎渉
03/04/20 06:09ID:X64WTq1+( ^^ )< ぬるぽ(^^)
0634login:Penguin
03/05/04 17:20ID:ide68tWq0635login:Penguin
03/05/06 20:57ID:/f1wWtEtにLinuxカーネルについての解析資料が移動したらしい。
0636login:Penguin
03/05/14 17:38ID:+1wC02Dwあるいはgccでガチガチ最適化カマしたやつとか。
0637ヽ(´ー`)ノ
03/05/15 09:38ID:MQgHohK4Intelコンパイラは知らないけど、gcc で最適化するのなら自分でリビルドすればいいのでは?
イマドキのマシンなら30分くらいで終わるっしょ。
// 俺のじゃ丸半日掛かるけどなー
0638login:Penguin
03/05/15 20:15ID:tl6lLPOqそんな貴方にGentooLinux
(iccも使える、、と思うけど、そっちはよーしらん)
0639login:Penguin
03/05/15 21:50ID:fOOiJy16なぜCではなくC++? なのかは置いておいて、
今のバージョンのintel C compilerだとLinux kernelがコンパイルできんので無理。
というか羊頭狗肉になっちまう。
次期バージョンでkernelがコンパイルできるようになったら
それを売りにするディストロも出てくるかもな。
gcc最適済ディストリは今は無き?stampede Linuxがやってたが、
gentooとかなら自分でできるだろ。
0640山崎渉
03/05/22 02:18ID:VfjbtMwi0641login:Penguin
03/05/24 02:05ID:pFXNmjMbソースのコメントに「これらのオフセットはハードコードされている.注意して扱うように.」みたいなことが書いてあるのですが.
0642login:Penguin
03/05/24 02:12ID:B4Q+JvDP忠告に従ったほうがいいかも。
どっかの地雷をふむかもしれないよ。(w
0643login:Penguin
03/05/24 02:46ID:Ac66WbG3archによる。
アセンブラのコードで直接見ていることがある。
Cの方はオフセットがずれて困るところはないはず。
0644login:Penguin
03/05/24 03:01ID:B4Q+JvDPいぁ、ちょと見てみたんだが。
Cでtask_struct構造体ポインタに対してaddする個所があった。(ちなみにi386ね)
grepしてみたけど修正してできない量ではない。
けど、結構気をつけないといけないかも。
0645初めて
03/05/24 11:12ID:3ITeRmp+何度やっても
Uncompressing ... Ok,booting the kernel.
で止まってしまいます。
理由がわかりません。
なにかチェックする項目を飛ばしているのでしょうか?
2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。
これだけでの情報では原因を推測することは無理でしょうか?
OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
どなたかアドバイスを頂けないでしょうか?
よろしくお願いします。
0646643
03/05/24 11:21ID:Ac66WbG3そんな所あったっけ?
しばらくi386依存部分は触っていないから、記憶が薄れつつあるなー。
>>645
おとなしく2.4.20を使う。
2.5.69はハードウエア構成によっては、そういう問題がおきます。
0647login:Penguin
03/05/24 14:44ID:im3d3bk6問題が起きたらデバッグしてください。2.5シリーズというのはそのためのものです。
0648644
03/05/24 15:13ID:PMIRyT6Tcopy_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;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ここ
0649644
03/05/24 15:31ID:PMIRyT6T>2.4.20で起動するconfigからmake oldconfigで再度.configを作っているつもりなのですが。
>これだけでの情報では原因を推測することは無理でしょうか?
>OSはRedhat9.0で、再構築したいカーネルは2.5.69です。
make oldconfigではなくmake mrproperからmakeしてみては?
0652645
03/05/24 19:30ID:3ITeRmp+make oldconfig
というのは、
そのフォルダにある、.configをもとにして足りない所を補い,新たな.configを
作成するというのであっているのでしょうか?
そのとき作成にしようした.configはoldとかにリネームして。
よろしくお願いします。
0653login:Penguin
03/05/24 19:43ID:b1IFVpVtlinux/scripts/Configure
読みなされ。
足りないところは聞いて来るはずだが。
>>645 の症状ってカーネル2.2の時の経験だと、
以降のboot messageがserialに出力されていた事があるけど、
これって2.4の話? 2.5の話?
0654643
03/05/24 20:17ID:Ac66WbG3じゃなくて、お子さまプロセスのカーネルスタックの位置を計算しとるのですよ。
んで、計算した所に親の情報をコピーすると。
>>653
2.5はKconfigになってもーたので、scripts/Kconfig/confです。
挙動は変わらんが。
シリアルコンソールは、起動時に"console=〜"渡さないと有効にならないと思ったが。
0655644
03/05/24 21:10ID:PMIRyT6T((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);
ここらがよくわからんが。
ってこと?
0656645
03/05/25 00:25ID:XrZOXyc/0657643
03/05/25 00:59ID: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);
コプロのレジスタをコピーしているのです。
0658641
03/05/26 12:16ID:L9Tg8SeEありがとうございました.
皆さん凄いっすね.
0659login:Penguin
03/05/26 22:52ID:IXHBibv2CC kernel/timer.o
CC kernel/user.o
みたいな感じでなかなか新鮮
0660_
03/05/26 23:12ID:5mPv2JRl0661bloom
03/05/26 23:13ID:8OPOVfmH0662login:Penguin
03/05/27 00:44ID:Tx2/4y2mそのへんもだいぶ変わったからねえ…
make depなくなったし。Makefileの書き方も変わったし。
まあ、そのへんはどうでもいいんだけど、Kconfigの書き方が未だによくわかりません。
昔のドキュメント位詳しい物を早く書いてくれ。
0663login:Penguin
03/05/28 02:46ID:ZVfjfeIZうまく動作しません.
0664login:Penguin
03/05/28 02:55ID:ZVfjfeIZ以下がソースです.
#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には意図した文字列が出力されません.
自分でもがいてみましたが,原因が分かりませんでした.どなたかご教授お願いします.
0665山崎渉
03/05/28 16:40ID:4u9ffZfOピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0666login:Penguin
03/05/28 20:52ID:c/4bMbQpモジュールから上書きしていいものかどうか知らないけど、
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;
}
みたいにして、予定通り書き変わっているか確認するしか無いでしょう。
0667login:Penguin
03/05/29 06:56ID:4nmgTop10668_
03/05/29 07:04ID:yrkPpXVA0669bloom
03/05/29 07:13ID:pdJrRzE30670login:Penguin
03/05/30 22:16ID:fuM2ZNep0671login:Penguin
03/05/30 23:09ID:XCgqHAqg0672直リン
03/05/30 23:13ID:t6UbAlau0673login:Penguin
03/05/31 03:10ID:DvCwdjkRi386系はMMUで実行権限の可、不可ってできなかったように
思えたけど(実際には読み込み権限と書き込み権限があって、読み込み権限=実行権限)
実際、OpenBSDはどういう実装なんでしょうかね?
0674login:Penguin
03/05/31 10:26ID:pCrUKetPi386は実装中じゃなかったっけ?
思い付くのは、P落としておいて例外処理でごにょごにょ…って激しく遅くなりそう。
0675login:Penguin
03/06/02 04:39ID:CgaTSeAjありがとうございます.
やっぱりちゃんとアドレス自体は書き換えているようです.
で,他のシステムコールは正常にフックしています.setuidだけ(全てを確かめたわけではありませんが)が変なようです.
ライブラリを使わずに直接例外でsetuidを発行するとフックできました.
glibcのソースを見てみましたが妙なところは見あたりません.フツーのスタブのようです.
他のユーザID変更のシステムコールを使って発行しているのかな,とか思ったりします.
いずれ確かめます.
0676login:Penguin
03/06/02 15:53ID:Sji9M+OKRT signalを100%使い切るという結果がでてます。。。
loglotateでこーなるのか???
RT signalってなに??
いろいろ探してみたのですが、なんでかわかりません。。。
だれかおしえてください。すみません。おねがいします。
0677login:Penguin
03/06/02 15:58ID:mduTnBfC0678login:Penguin
03/06/02 16:10ID:Sji9M+OKRT signal = リアルタイムシグナル と想定、
http://www.mmjp.or.jp/sunami/linux/kernel/ によると、
なんらか(ソフトウェア、ハードウェア)のシグナルの割り込み処理が
いっぱいいっぱい発生しているものと理解。
loglotateなどディスクをすごく使いそうな処理でこういう自体が
発生しているものと予想。
カーネルにとってRT signalのリミット100%を使い切るような処理
は日常茶飯事であって別に心配するこたぁないのか。
なんらかの対策をするべきことなのか、知りたいのです。
/proc/sys/kernel/rtsig-max が現在1024ですが、使い切っている
から安易に調整するべきものなのか、それとも運用を変えるべきなのか。。。
0679login:Penguin
03/06/02 17:20ID:tEGqhx7Sはずせば?
俺、リアルタイムで画像を記録するサーバ書いたんだが、slocateとかの
おかげで取りこぼしがでたからスクリプトはずしたよ。
0680login:Penguin
03/06/12 03:53ID:+ZjTB6j3試したのですが,唯一execveをフックするようにした時のみアプリケーションの起動で
segmentaion faultが起きます.アプリケーションが何も起動できません.
カーネルの中で起きているのでgdbが使えません.
皆さんはカーネルデバッグはどうしているのですか?
やっぱりUML+gdbとかですか?
それとカーネルモジュールのデバッグもUMLとかでやれるのでしょうか?
0681login:Penguin
03/06/12 08:32ID:9LpMpr/G0682login:Penguin
03/06/12 10:26ID:uPg3Erb9あの方法を使ったら、そうなるでしょうねえ。
(v)fork/clone/execveはアセンブラ使わないと無理でしょう。
デバッグは大体printkで。
kdbを使ってみたいなーと思う事もあるけど
2.5に対応していないので、使えない。
0683login:Penguin
03/06/12 11:20ID:+ZjTB6j3kgdbは確かデバッグを行う別のマシン(OS)が必要ですよね?
家は一台しかlinuxにさけるPCがないので,仮想マシンにするならUMLを使いたいです.
>>682
>あの方法を使ったら、そうなるでしょうねえ。
>(v)fork/clone/execveはアセンブラ使わないと無理でしょう。
なぜそうなるのでしょうか?
また,アセンブラでどのようにすれば実現できるのでしょうか?
というか,特定のシステムコールのフックは通常は
モジュールを使わずに直接sys_*の中を変更すべきなんでしょうが・・
0684682
03/06/12 16:28ID:uPg3Erb9kgdbなら、i386-elfを読めるgdbが動けばlinuxでなくても使えるはず。
んで本題。
arch/i386/kernel/process.cを読めばわかりますが、
system_callの所で作ったスタックフレームの構造に依存しているので、
スタックの状態を維持したまま呼んであげないといけません。
アセンブラなら、
call 自前の処理
mov 元のアドレス,%%eax
jmp %%eax
てなかんじで呼べば問題無いはず。
(i386のアセンブラは最近書いていないので参考程度に)
もう少し汎用的な書き方にならないかなーと思いますが、
CPUコンテキストが絡む話なので難しそうだな。
0685login:Penguin
03/06/13 02:15ID:Ntzc1lmuLinux2.5.64のソースにmachとかいうディレクトリがあるのだが、あれは一体なんなんだろうか。
ついでにもう一つ訊きたいのだがmach-voyagerとかいうのもあるのだが、あれは一体なんなんだ?
教えて君ですまん。
0686login:Penguin
03/06/13 08:39ID:EXw4iEhumachine architecture じゃないの? m68kのmacとかsun3みたいに。
voyagerは確か昔のia32の超SMPマシン(といっても32くらい)、
って、linux/Documentation/voyager.txt があるやん。
0687685
03/06/15 16:25ID:TNnPLPxBThink!ミスター。あんた最高だよ。
0688login:Daemon
03/06/15 18:47ID:wufUnmIS*BSDのカーネルについてかかれたものはないですか?
0689login:Penguin
03/06/15 18:48ID:vowloLzR0690login:Daemon
03/06/15 18:51ID:wufUnmIS0691login:Penguin
03/06/15 23:09ID:x0Igtqsi悪魔本
0692login:Penguin
03/06/16 03:19ID:P+dwJ3I8亀レスですが、script(1)というのもあります。
0693login:Penguin
03/06/16 04:49ID:kWhRIl9xありがとうございます.
ユーザプロセスの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_*の中で処理を記述したいです.
0694login:Penguin
03/06/17 00:03ID:JrPl/8fuそゆことです。
実際のコードは.cの中にインラインアセンブラで書くか、
別に書いてリンクすればいいのではないかと。
entry.Sをいじる必要はありません。
例のサンプルならnew_setuidをアセンブラで書けば目的は達成できます。
後はカーネルと関係なく、Cとアセンブラを混ぜる話なので、
その方面のスレで聞いて下さい。
#なんでシステムコールを書き換える必要があるのか謎ですが…
#libcでoverrideすれば間に合いそうな気もしますが。
0695login:Penguin
03/06/24 17:33ID:/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
0696login:Penguin
03/06/24 21:10ID:lLx7L/ffその引用は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をコントロールできるから組込みにも向いてると思ってるんだけど。
あってるかな?
0697login:Penguin
03/06/24 21:26ID:/u6LQEV0>その引用は2.4までのものでしょ?
ええ、そうです。
で、言いたかったのは、2.4以前だって、引用に書いてあるほどタコな動きは
してないでしょ、と。
2.4以前だって、disk I/Oを開始する時には、(preemptive ではないにしろ)
自主的にsleepして、CPUを他のプロセスに開放するから、ディスクI/Oの間、
他のプロセスが実行待ちになったりはしないでしょ、という意味なんですが。
0698login:Penguin
03/06/26 01:32ID:9kOqx0yKディスクI/Oという点に限れば697の言うとおりだが、
non-preemptiveだと、なかなかsleepしないシステムコールが
他のプロセスの足を引っ張ることは実際にあるように思う。
例えばsyncとか、多分ディスクI/Oというより、バッファ周りの
話なんだろうけど…
0699login:Penguin
03/06/26 12:15ID:w+qYBtvXそれは解ります。
言いたかったのは、DiskI/O の話だけなので...
DiskI/O で他のプロセスが待たないって話は、タネンバウム論争でも、MINIXとは違う点
として、強調していたポイントなのに、なんで、2.4 -> 2.5 への preemptive 化の説明に
これを持ち出すかなぁ、と。
0700login:Penguin
03/06/26 20:31ID:wJ+hhIcyまだまだ初心者なんですけど、
この本を全部読みきって70%理解したら大分詳しくなれるんでしょうか?
他にはどんなことを勉強すればいいのでしょうか?
厨房な質問ですいません。
0701login:Penguin
03/06/26 21:09ID:8PE+W9mOで、何をやりたいの?
0702743
03/06/26 23:58ID:Ryip/f5bコンパイルしようとすると、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 というのは
何なのでしょう? どうすればエラーを回避できますか?
0703login:Penguin
03/06/27 07:48ID:47Hwz5yO$ 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では使えないようだ。
これ以外は、今のところちゃんと動いているが、ちょっとだけ不安。
0704702
03/06/27 21:05ID:z7RNnbMR0705login:Penguin
03/06/28 00:51ID:V5nJnO59親切に
Please convert me to Documentation/DMA-mapping.txt
と言ってくれているので、まずはドキュメントを読んで見ればいいのでは?
0706login:Penguin
03/06/28 13:49ID:Vom+2tH9もちろん。そして、そのもとの文も、そうはいってないと思う。
それは、プロセスaのdiskI/Oまちの間プロセスbが止まると読むのではなく、
(おそらくだれか(a)の要求に関連する)disk I/Oの処理がプロセスbのスケジュー
リングを遅延させることを言ってるのだとおもう。プリエンプティブカーネル
(と、プライオリティつきスケジューラ)はそれを改善するものだから。
0707login:Penguin
03/06/29 13:50ID:S956rOO5>それは、プロセス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処理完了にともなうハードウェア割り込み用ルーチンが起動した
場合にも、再スケジュールするようになりました、といっている感じですよね。
0708login:Penguin
03/06/29 23:08ID:/oTz8bWl漏れの理解でもそうだと思う
2.4では、自分でsleepするか、システムコールの終わりの
ユーザランドに戻る直前でしか、コンテクストスイッチは起きない。
カーネル内でいくら割り込みが起きても、割り込まれたプロセス
の実行に戻る。
プリエンプティブカーネルならば、割り込みがおきたところが
クリティカルセクションでない時には、割り込みハンドラの実行が
終わった所で再スケジューリングされる。
0709login:Penguin
03/06/29 23:53ID:mQ4EYUec割り込みから抜けるときも、ユーザーモード実行中でneed_resched立っていれば
schedule呼びます。
でないとcpu握ったままのプロセスがつくれてしまう。
0710login:Penguin
03/07/02 01:58ID:VujfXoME0711login:Penguin
03/07/02 02:11ID:kUFisWUNエイヤと、5秒待ち合わせ!みたいな良い加減さは
Linux らしくて涙チョチョ切れるね。
2 - 4 SMP くらいだと、問題にならないのだろうけど。
0712login:Penguin
03/07/06 21:37ID:VzJQlVRaint did_exec:1;
というメンバがあるんですが,これはどういう意味でしょうか?
0713直リン
03/07/06 21:42ID:wYFJkOTE0714login:Penguin
03/07/06 21:54ID:/k97neyg0715login:Penguin
03/07/06 22:50ID:wK3uN9NXbit fieldだね。
"int did_exec:1"と書くと
did_exec変数の下位1bitのみだけが有効になり、
0か1しか設定されないのさ。
0716login:Penguin
03/07/07 00:12ID:WcWZ6n6e0か-1ではないのか?
0717login:Penguin
03/07/07 00:18ID:XJtR7Wyv普通は1に解釈しない?
どーせ1bitしかないからnot 0であればいいんだが。
0718712
03/07/07 00:51ID:CYZ75cVfアホな質問してすいません.
今度からはもう少し調べてから質問します.
0719login:Penguin
03/07/07 22:00ID:kPsRFwM6うん。0,1でいきたいので struct { int a:1; } s = {1};とか初期化しちゃう
けど、結局のところ解釈はコンパイラがやるので、例えば s.a >0 ? は偽です。
てか s.a==-1? が真になる。上位1bitが符号だから、それで正しいんだと思う。
0,1にしたければ unsigned int ですね。初期化とも矛盾しちゃって気持悪いし。
0721login:Penguin
03/07/08 00:16ID:wvWko+bEっていうか、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.
0722login:Penguin
03/07/08 01:23ID:a4iER9hA0723login:Penguin
03/07/12 12:47ID:Q71PnbZR0724login:Penguin
03/07/13 22:08ID:UrPfG9sVおいての応答性が上がったけど、コストパフォーマンスが落ちた
ような気がする。
やはり、応答性とコストパフォーマンスはトレードオフなのかな。
以下は自作プログラムによるテスト結果
【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分間のファイル読み書き回数が減少している。
0725login:Penguin
03/07/13 22:14ID:TbuOUgH9アレ(Xとかの応答性向上パッチ)がはいったんだっけ? もしあれなら、あれは
いままで相対的にI/OにCPUが渡りすぎてたのを、そっちを減らしてかわりにX
に割り当てる量を増やす"改善"をするパッチだから、当然I/O性能はおちます。
0726login:Penguin
03/07/13 22:28ID:UrPfG9sV>コストパフォーマンスの評価式は? それともパフォーマンスのことなのかな。
自分が言いたかったのは、多重プロセスがI/O処理中におけるCPU応答性のことです。
>アレ(Xとかの応答性向上パッチ)がはいったんだっけ? もしあれなら、あれは
>いままで相対的にI/OにCPUが渡りすぎてたのを、そっちを減らしてかわりにX
>に割り当てる量を増やす"改善"をするパッチだから、当然I/O性能はおちます。
それは、agp関連の事ですか?
ちなみ、GUI環境ではなくCUI環境でテストしました。
0727login:Penguin
03/07/13 23:14ID:ujCbFKxOChangeLogを見る限りは入ってないなぁ。
io schedulerの修正入ってるから、そっちの影響かも。
関係あると思えないBUG fixなんだけど。
0728724
03/07/13 23:29ID:UrPfG9sV>>726で言ってる、
>>コストパフォーマンスの評価式は? それともパフォーマンスのことなのかな。
>自分が言いたかったのは、多重プロセスがI/O処理中におけるCPU応答性のことです。
ではなくて、プロセスがdisk I/O処理が終了するまでの合計処理時間です。
0729login:Penguin
03/07/14 02:53ID:YDflspfA0730login:Penguin
03/07/15 03:41ID:kOKraebZヤバくない?
0731login:Penguin
03/07/15 03:57ID:v95prNREカーネルがサポートしたなら、それは今やデバドラのバグです。
でもSMP対応しているものなら大丈夫な"ハズ"ですよ。そーゆートリックですから。
0732山崎 渉
03/07/15 11:16ID:doz396Fq__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0733login:Penguin
03/07/15 11:57ID:Fo16Kpwc0734login:Penguin
03/07/16 01:23ID:g/ls7vVV>カーネルが非SMPでもプリエンティブになったんだっけ?
>ヤバくない?
SMP、非SMPのどちらであろうがカーネルはプリエンティブになっている。
何でやばくなるの?
>>731
>もちろんやばい作りのものデバドラとかはヤバいですよ。
>カーネルがサポートしたなら、それは今やデバドラのバグです。
もし、それでヤバくなるデバドラならそのデバドラの設計ミスでしょ。
>でもSMP対応しているものなら大丈夫な"ハズ"ですよ。そーゆートリックですから。
もしかしてテキトーに言ってますか?
0735login:Penguin
03/07/17 03:08ID:X2zI67Ch> もし、それでヤバくなるデバドラならそのデバドラの設計ミスでしょ。
もち。そういう意図の発言です。
> もしかしてテキトーに言ってますか?
spinlockがプリエンプションのポイントになっていることを指して言っています。
0736login:Penguin
03/07/18 01:34ID:Ad3cqyqT守るためのロックプリミティブがちゃんと書いてあれば
いいということだろ。
SMPならばtest and setとかの本当のlockをすればいいし、
プリエンプティブのときにはプリエンプション可能かを見る。
従って、CONFIG_SMPとCONFIG_PREEMPT(?)は独立に
できるはず。
と、テキトーに思ってみるわけだが。
0737login:Penguin
03/07/18 21:26ID:7TXfJdj/SMPとPreemption-kernelは初めから独立して設定できる。
Preemption-kernelのコードはSMPとそれ以外で場合分けされてる。
Preemption-kernelのコードは2.4向けのパッチを見ると良いかも。
0738login:Penguin
03/07/22 11:26ID:6WQ9WMDa0739login:Penguin
03/07/25 12:51ID:NH3LXVfX0740login:Penguin
03/07/28 12:56ID:YIr5Dzm40741ぼるじょあ ◆yBEncckFOU
03/08/02 05:08ID:GfRe8vK7ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0742login:Penguin
03/08/02 10:31ID:0p3phC6s0743login:Penguin
03/08/10 11:15ID:t5VAEY5s0744login:Penguin
03/08/11 11:53ID:5aoknCTf0745login:Penguin
03/08/15 17:22ID:aL8WrViO0746abc
03/08/15 18:53ID:D/wj3em9http://www.sexpixbox.com/pleasant/dx/index.html
0747山崎 渉
03/08/15 22:11ID:ep0zwfOh│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0748山崎 渉
03/08/15 22:35ID:ep0zwfOh│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0749login:Penguin
03/08/16 00:02ID:+8Yy95I50750login:Penguin
03/08/16 00:25ID:CSEwRIa6linux-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行なので、半分ぐらいはドライバだな。
0751login:Penguin
03/08/16 14:38ID:oSWJJuxFInitializing 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がまったく出てこなくて・・・・・・・
長い文章で申し訳ございませんが、ご指導よろしくお願いいたします。
0752login:Penguin
03/08/25 09:44ID:ZYMvu5IH0753login:Penguin
03/08/28 07:10ID:ssaojeEBNFS経由の多段リンクとかしてたらスタックオーバーフロー
とか言ってハングするのだが・・・スタック領域って拡張できるの?
0754login:Penguin
03/08/28 10:48ID:GLbP7FQBカーネルスタック?
カーネル作りなおせば増やせるけど、どこに影響が出るかわからんぞ。
0755login:Penguin
03/08/29 13:31ID:UPtCxfjb多段リンクの意味がよくわからない。
symlink -> symlink -> realfile ってこと?
0756login:Penguin
03/09/01 11:50ID:MpWyDbPw0757eiji
03/09/02 13:56ID:DWK7xXkcお願いします。
0758login:Penguin
03/09/02 14:53ID:BTzOKWIcそんな漠然とした質問に答えられる香具師は居ないと思われ。
カーネルといったって規模が大きいからな。
カーネルとは何ぞや、ということを先ず本か何か読んで調べるのが吉。
0759login:Penguin
03/09/02 15:08ID:pHfbPm/9宿題は自分でやれ。
0760login:Penguin
03/09/03 16:28ID:iWz7WMbL0761login:Penguin
03/09/04 22:39ID:fsrmdR87>>755
ありがとー。実は客にきかれててさー。
カーネルスタックかぁー。触らない方がよさだよなぁ。
でも説明せんといけないし。なんか参考になるサイトないすか?
あ、あと多段リンクはこれであってる。
説明がなかったな。スマソ
一応、制限が5段までで怪しいパッチをあてると8段まで
いけるらしいんだけど、スタックオーバーフローになる。
0762login:Penguin
03/09/05 02:29ID:sR5Y928Wスタックオーバーフローって、カーネルじゃなくて、
アプリケーションがタコなだけな気も。
カーネル的には、symlink は 20段程度やそこらは大丈夫だったと思ったけど。
(つーか、symlink の循環を検出するために、一応、限度を設定してるだけで、
カーネルでのスタック消費がどんどん増えていく、とかはないはず)
いずれにしても、カーネルで他段symlink限界を超えたときは、ELOOP でしょ。
単に、アプリケーションが自前で lstat() や readlink() を使った挙げ句、
爆死してるとかじゃない?
死んでるのは、なんてソフト/コマンドなの?
0763login:Penguin
03/09/05 06:48ID:NvZ0a9K70764login:Penguin
03/09/06 02:38ID:6wacLc6HIPv6対応にしたいのですが、Networking options の
The IPv6 protocol(EXPERIMENTAL) を m とし
それによって増えた項目全部を y としたところ
usagi/doc/CONFIG.linux24
あたりを読め。意味がわからんやつをyにするな。
0765login:Penguin
03/09/08 22:57ID:hx2KIDDjありがとう!そんな答えが欲しかった。
実は客が何やってるのか今一つかめてないから
判ったらまた書くよ。またよろしく。
0766login:Penguin
03/09/15 10:49ID:I+VNLCRD0767login:Penguin
03/10/11 22:31ID:seR0x92U0768login:Penguin
03/10/18 22:04ID:cV4cEMzMアックスってやばいの? 死期神を作っている会社だよね?
0769login:Penguin
03/10/18 23:05ID:iEnCwFBH広報は…昔からなのであきらめて下さい。
0770login:Penguin
03/10/19 04:24ID:vsa+A4dYセミナーがあまりにアホ過ぎて
笑いを通り越した
0771login:Penguin
03/10/19 15:14ID:P4K7wAI70772login:Penguin
03/10/24 01:06ID:8mSLFw8A0773login:Penguin
03/10/24 01:44ID:IA1XAa8m0774login:Penguin
03/11/01 18:25ID:BY3sdtX9それとメモリ領域の確保にはget_free_page、kmalloc、vmallocのどれがベターなんすかね?
調べた限りでは
get_free_page ページフレーム単位での割り当て(4kB)
kmalloc 連続したメモリ領域の確保
vmalloc 非連続メモリ領域の確保
たぶん割り当てるデータの種類・頻度によって使う方法が違うと思うんですが、
いまいちこういうデータにはこれがいい、という判断ができないもので。
0775login:Penguin
03/11/01 18:44ID:UJpXfS4u0776login:Penguin
03/11/01 19:13ID:VqBAcchD0777login:Penguin
03/11/01 21:56ID:GycfD/6pだから、こういうときはkmallocとかいうような場合分けの判断の仕方を教えて欲しいわけです。
初期化の方は?
0778login:Penguin
03/11/01 23:26ID:yJPpr0Et0779login:Penguin
03/11/01 23:57ID:X+/ZvCjkget_free_pagesとvmallocは意味がわからないのなら使う用途はなさそう。
0780login:Penguin
03/11/02 02:01ID:c8ANRrTLchar *とかはどうです?なまじページフレーム以下のバイト数割り当ててページフレーム内でのメモリ断片化を起こすより、ページフレーム単位で割り当てた方がいいんですかね?
でも4kBはでかいものなあ・・・
0781login:Penguin
03/11/02 04:02ID:mdTuavMg結局malloc系はみんな4kbずつ取られちゃうし
そもそもPCならメモリはたくさんだから
1000枚とったって4メガじゃん とか思って
もうめんどくさいしと考えて kmalloc
0782login:Penguin
03/11/02 13:27ID:3SVrF8XB初期化はその通り
一時的に使うか大体1ページ埋まっちゃう時はget_free_pages
それ以外はkmalloc
かな。
細かいことを気にしたくないなら、kmallocでいいんじゃない?
0783login:Penguin
03/11/02 14:11ID:aAzlTdEEそうっすね。kmallocを使うようにします。
ありがとうございました。
0784login:Penguin
03/11/12 19:11ID:j+kuNkZGsizeof(struct rs_table[])
でエラーがでます。
rs_table[]の定義が見つからないようです。
kernelのrs_table[]を参照しているのですが、
これはどこに書いてあるでしょうか?
また、これはどのような意味でしょうか?
わかる方がいましたら教えていただきたいです。
シリアルttyS??やリソースに関係しているっぽいらしいことはなんとなくわかったのですが。。。
0785784
03/11/12 19:14ID:j+kuNkZG0786login:Penguin
03/11/12 19:56ID:QJ3+g/Cf0787login:Penguin
03/11/13 04:48ID:9Axt2Fw50788login:Penguin
03/11/13 04:53ID:9Axt2Fw5sizeof(struct serial_state)*RS_TABLE_SIZE
あたりで手をうったらだめ?
0789login:Penguin
03/11/16 03:56ID:rakWerCm0790login:Penguin
03/11/16 13:56ID:mtRdwIbicurrent->ttyがNULLか見ればいけるかな?
0791login:Penguin
03/11/20 21:17ID:F3gDXEitそれとカーネルスレッドはcurrent->*でpidなどを取得したりはできないのでしょうか?
0792login:Penguin
03/11/20 21:55ID:5PKfc9lP割り込みかどうかの判断であるin_interrput()関数と
合わせて御利用ください。
pidの取得も問題ないはずですが、current->tgidとcurrent->pidが
紛らわしいので注意してください。
0793login:Penguin
03/11/20 23:46ID:F3gDXEitswapperのmm==NULLでcloneのflags | CLONE_VMだからですね.ありがとうございます.
それとin_interruptは自分が注目しているコードの部分は例外や割り込みハンドラの部分ではないのですが,
それでも必要でしょうか?
tgidとpidが紛らわしいというのはどういう意味でしょうか?
>>790
789僕です.遅れましたが,ありがとうございました.
0794790,792
03/11/21 00:46ID:uTRJrHVoそれなら、in_interrput()は使わなくてよいです。
2.6のgetpid()で取れるはtgidなのでtgidを使えば無難です。
今までのlinuxthreadsを使うとpid==tgidなんですが、
NPTLでは、何故かねじれてしまってpidがスレッドIDに
なっています。
0795login:Penguin
03/11/22 05:27ID:Ra8noU1xユーザ空間におけるスタックフレームをカーネル空間からバックトレースして,
それぞれのフレームにおけるリターンアドレスを調べていくことは可能ですか?
またcurrent->mm->start_stack以外にスタックに関する情報はないのでしょうか?
0796login:Penguin
03/11/22 11:56ID:vL0kggqG流れを理解するにはうってつけだけど、長々と文章で説明するより
図とかソースの方が分かりやすかったりする。好みだけど。
たしか、この本が出たときにいろいろ批判をしたスレがあったと
思うけどどこですか?
0797login:Penguin
03/11/22 17:33ID:wN3p4lwgそれなら、ユーザー側のspを読んで追っかけたほうが簡単じゃないかと。
CPUに依存するけど。
0798login:Penguin
03/11/23 04:45ID:eeQbYtxkユーザ側の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のソースコードとかを読んでみれば分かりますか?
0799login:Penguin
03/11/23 04:48ID:eeQbYtxk0800795
03/11/23 20:21ID:DFb2kUztというかlinuxカーネルの話題とずれた質問してすいませんでした.
0801login:Penguin
03/11/23 22:36ID:SyBc4qQvどこに入るかもCPUによって違うので、必ずカーネルスタックに入っている保証はない。
ただ、コンテキストスイッチした時の値はthreadに入っているはず。
x86でret_from_syscallでみるならoldespでOK。
csも確認してring3に戻ることを確認したほうが良いかもしれない。
判別法は、アドレスが.textの領域に収まっているかどうか確認するのが一番簡単だと思う。
まじめに解析するならデバッグ情報をなめるしかないだろうね。
>>800
ebpは-fomit-frame-pointerされると使えないので注意。
0802login:Penguin
03/11/24 01:42ID:zlJqppRIありがとうございます.
.textに収まっているかどうかというのは,
実行ファイルのコード+共有ライブラリのコード領域に収まっているかどうか
ということですよね?
実行ファイル中のコードはcurrent->mm->start_code,end_codeで参照できると思うのですが,
共有ライブラリの領域もまとめて収まっているかどうか確認する方法はあるのでしょうか?
それとも共有ライブラリのコード領域は別の方法で考慮する必要がありますか?
mmapの引数とかで.
0803login:Penguin
03/11/26 22:35ID:OO1sXefqshared libのロード位置はmm_struct追えばとれると思うけど、
やったことがないので、今一つ自信ない。
ld-linux.soから情報を渡してもらうのが一番確実だろうねえ。
0804login:Penguin
03/12/02 02:21ID:Bf62dDgdありがとうございます.
current->mm->mmap->vm_start,vm_endを使えば,検査したリターンアドレスが動的にリンクされたライブラリのテキストセグメントに収まっているかどうか確認できそうです.
mmapで確保されるメモリリージョンが共有ライブラリのテキストセグメントかどうかはvm_flagsメンバが読みとり・実行可能かつ書き込み不可・プライベートなマッピングであるかどうかで識別するつもりです.
0805login:Penguin
03/12/05 23:56ID: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ばかりです。
何が悪いのでしょうか?
0806login:Penguin
03/12/07 13:04ID:8ZucmNpSget_user()ってカレントプロセスを前提にしてなかったっけ?
手抜きな回答ですまぬが、
kernel/ptrace.cのaccess_process_vm()を参考にするよろし。
もっと言えば、デバッガがptrace経由でどうやって他のプロセスの
メモリをアクセスしているか見てください。
0807login:Penguin
03/12/09 00:36ID:S+QZ9CO5ありがとうございます。
とりあえず、ptrace_readdata()の動作を見てみようと思い、モジュールをでっち上げてみました。
しかしinsmod時にptrace_readdataのシンボル解決が出来ないと怒られます。
ちなみにptrace_readdataの行のみをコメントアウトするとinsmod/rmmodが成功します。
includeしてるのはlinux/sched.hとlinux/mm.hです。カーネルを作るときのオプションか何でしょうか?
ところで皆さんはモジュールをいじるような時は何を参考にしています?
やっぱりオライリーの2冊(詳解カーネルとデバドラ)?
ひたすらgrep?
0808login:Penguin
03/12/09 00:47ID:KPHKA0UxEXPORT_SYMBOLされてないsymbolはモジュールからは見えないですよ
0809login:Penguin
03/12/09 01:20ID:S+QZ9CO5ぐぐってみました。
ビンゴのようです。
kernel/ptrace.hにEXPORT_SYMBOL(ptrace_readdata);という記述を加えてカーネルを再構築してみます。
08101
03/12/17 15:08ID:krVj3++U0811login:Penguin
03/12/18 00:07ID: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等に問題があるのでしょうか?
よろしくお願い致します。
0812login:Penguin
03/12/18 00:09ID:MBnnQKSz0813login:Penguin
03/12/18 00:13ID:3f1SJdSQsylxがナニモノかしらんが、インラインアセンブラでも使ってるんでねーの?
ソース見せれ。
0814login:Penguin
03/12/18 00:19ID:hosf0Cpdhttp://pc.2ch.net/test/read.cgi/linux/1063594836/130
0815login:Penguin
03/12/18 00:57ID:wHzkPy4DLinux7.2てのはRedHatLinux7.2って事?
この手の問題だったらホストとターゲットのカーネルのバージョンを明らかにすべき。
あとはgcc,binutils,newlib,glibcあたりも。
ドライバを作るってのは
make modules
ってやった時?それともどっかから落としてきたソースをコンパイルしてるの?
MakefileのCCをbfdnameにした?
情報不足で状況が掴めないです。
0816login:Penguin
03/12/18 01:02ID:lp9NfDxYマルチにレスすんな
0817login:Penguin
03/12/18 01:11ID:wHzkPy4D組み込みスレにもマルチしてますね。
ただ、このスレにはお世話になった(なってる)ので、ついレスしてしまいました。
大局的に見るとやっぱりスルーすべきなんでしょうか・・・
0818login:Penguin
03/12/20 23:51ID:p8OBVrj+カーネル詳説では全然解説してないし。
例えば Netfilter を読むとっかかりになるようなサイトとか。
NIC ドライバは作った事あるんですが、ドライバより上位の層について
知りたいです。
0819login:Penguin
03/12/21 16:07ID:1QwJVAKL冗談抜きでソースじゃないか?
0820login:Penguin
03/12/21 16:12ID:u/cH/qKM両方の条件を満たしそうなのは http;//lxr.linux.no/source/ とか?
0821login:Penguin
03/12/21 18:51ID:1QwJVAKLhttp://lxr.linux.no/source/ か!
ナイス屁理屈
0822818
03/12/21 20:42ID:R8FN9n5Sしれないですが・・・(あるいはいまさら TCP/IP の解説でもないだろって事かも)
がんばって読んでみます
0823login:Penguin
03/12/21 21:11ID:1QwJVAKLリチャードさんの本を読破しよう
0824login:Penguin
03/12/22 18:23ID:jTZcEXDh>>823の言うように"Guru of the Unix gurus"であるStevens先生の本を読むべき。
0825login:Penguin
03/12/23 00:32ID:J48VmNLA出力するデータがもし4kBを越える場合,どのようにコーディングすればいいのでしょうか?
本を読んだり,ソースコードを眺めたりしたんですが,いまいちよく分かりませんでした.
proc_file_readを読むと,越えていても最後まで出力してくれそうな感じですが・・
どうかよろしくお願いします.
0826825
03/12/23 00:39ID:J48VmNLA「コーディング」というのはread_procの所です.
というか,proc_file_readでwhileループしているので,read_procではcount以下の読み込みを実装するだけでいいのでしょうか?
0827login:Penguin
03/12/23 20:48ID:k2EKtndjどっちかってゆーと、各プロトコルの実装の説明でなく、sk_buff の
各フィールドの使われ方とか Netfilter とかみたいな割とジェネリックな部分の
説明があればな、と。贅沢いってスンマソン
>>826
proc_file_read を読んだんだったら、それを信じて書けば動くよ。変な挙動だけど。
うろ覚えなので間違ってるかもだけど、普通に off を見て返す内容を決めても
いいっぽいんだけど、proc だとサイズベースで考えるのは面倒だから、
「何回目の呼び出しか」 を off で判断できるようにしてるっぽい。
*start に 1 を入れとくと、次は off が +1 されて呼ばれる (実際に返したバイト数
増えるのではなく) ので、こっちは off を見て返す内容を決めれば良い、と。
一回に返すサイズは count 以内にしておく事、と。
(実際には多少溢れても OK だけど、将来どうなるかわからんし)
多分そんな感じ。色々試せばわかると思う。 というか俺も proc_file_read() を見て
そう思ったから、正式な手順ではないかもしれないけど。
0828login:Penguin
03/12/23 22:40ID:uwJyCcqDkcoreあたりをパクるとか。
>>827
オライリーのカーネル本は?
skbのあたりは書いてあったはず。netfilterは無かったかも。
0829login:Penguin
03/12/23 23:15ID:k2EKtndjカーネル本はほとんどネット周りは書いてなくて、
ドライバ本は skb については 「ドライバ作者が見るべき所」 だけだから・・・
skb のフィールドって意外と増えたり減ったりしてるみたいだから
やっぱ自分で読むしかないんだろうとは思ってるんですけど。
ちなみに kcore は普通の read_proc の作り方とはちょっと違いますよ。
とはいえ、単にメモリのある領域をダンプしたいだけならあっちの方が楽そうです。
でもそれならキャラデバ書いたほうが楽かも?
0830login:Penguin
03/12/24 03:43ID:CT6SNhsXありがとうございました.色々試してみます.
0831login:Penguin
03/12/30 00:01ID:j3HEXdDL0832ヽ(´ー`)ノ
03/12/30 22:27ID:w1ByrpYn付属のドキュメントじゃダメなん?
Documentation/* とか、{menu,x,g}config の時み見れるヘルプとか。
0833login:Penguin
03/12/31 00:05ID:4ZezigAR本であれば以下はどうか
Linuxカーネル設定ガイド
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798100889
0834login:Penguin
03/12/31 09:04ID:CE2m/NA+ヨゴシの本なんか誰が買うか
0835login:Penguin
04/01/07 01:47ID:EmIK8cJsそもそも、仮想メモリ空間にマッピングされる領域には、
どのような領域があり、かつ、その領域の見積方法は
どうするのでしょうか?以下の領域を推測しています。
・OSカーネル
・ドライバ
・プログラムソース
・スタック
・ヒープ
この他にも、I/Oバッファや共有メモリ, ディスクキャッ
シュなども入るのでしょうか?
また、作成したプログラムのソースコード部分の領域の
大きさの見積方法はあるのでしょうか?(例えばC言語)
以上、よろしくお願いします。
0836login:Penguin
04/01/07 22:21ID:x+u/tPyi分からん用語は使わずに何が知りたいかをくだ質スレに書け。
0837煽りイカ
04/01/11 21:46ID:PPiKfNSH始めたんですが、既にインクジェットのカートリッジを10個以上消費
しています。この戦いはいつまで続くんでしょうか?
プリントアウトした紙は、片っ端から製本業者に出しているので、
この出費もばかになりません。
0838login:Penguin
04/01/11 22:09ID:26nuhaia本当に紙のものが欲しいなら、すでに印刷して製本したものが書店で売ってあ
るから買えばいいですよ。でも紙で読むのはつらい。
lxr等のツールを使って眺めるとか--これも自前でやらなくてもlxrのサイトに
lxrかけたソースがおいてあるからwebブラウザで眺める--か、make tags(もし
くはTAGS)してviなりemacsで読むのがいいと思いますよ。
概要をつかむなら、まずディレクトリの構造を適当にながめたあと(or眺めつ
つ) init/main.c の start_kernel() から読み始めるのがいいと思います。
大変だけど、続ければ必ず読めるし、得るものは大きいから、がんばって。
0839login:Penguin
04/01/12 17:15ID:lpS+N9kGマジレスカヨ
0840login:Penguin
04/01/13 01:07ID:odyLziqAたとえば echo $SHLVL と打ちますと 2 とでたり
bash bashと続けて打てば 4となります
0841login:Penguin
04/01/13 07:19ID:yowy6EM0# そのさい誘導されたことを付記してください。でないとマルチ呼ばわりされそう。
0842login:Penguin
04/01/15 19:55ID:q7MiFnSU1:
カーネル側からroot権限であるデーモンプログラムかどうかのフックをする際に,
root権限である && setsidで制御端末から独立するのでcurrent->tty==NULL
という以外に条件はないでしょうか?
この条件だけだと端末からemacsを起動したときや,
デーモンプログラムから呼び出されたと思われるrmやchownなどもフックしてしまうようです.
2:
プロセスからあるデータへの参照をカウントしています.
その参照はコマンド名で対応づけられています.
カウント数が2の場合に,ps | grep [コマンド名]すると1つしかありません.
ん?と思って参照しているプロセスのコマンドラインをみてみると
(参照しているプロセスのpidは分かっています),
-:0
と表示されています.
これは一体どういう意味でしょうか?
pstreeコマンドでは「-:0」がちゃんとしたコマンド名で2つ表示されていました.
ちなみにそのコマンド名はwdm.binです.
よろしくお願いします.
0843842
04/01/15 19:57ID:q7MiFnSU0844login:Penguin
04/01/15 22:13ID:mabMTQF9親がinitかどうか確認するとか。
daemon(3)使っていればinitが里親になるはず。
0845login:Penguin
04/01/16 02:09ID:c7u8nyNCありがとうございます.
initにゾンビの始末をさせていたんでしたね.忘れてました.
emacsの方はsetsidを使って(emacsからforkしてemacsserverが実行されるまでの間),
しかもバックグラウンドで実行した場合initが親になるので無理なようです.
0846842
04/01/17 17:37ID:KaSlkRb2psでは通常,コマンド名の表示に/proc/cmdlineを参照します.
ただし,-cオプション(本当のコマンド名を表示する)をつけたときはcurrent->commを参照するようです.
で,proc_pid_cmdlineやexecve周りを眺めたましたが,上書きされる様子がない.
manで調べてみるとどうやらsetproctitleという関数を使ってコマンドラインの上書きが可能なようです.
引数として渡す文字列の先頭に「-」をつけると,- は無視され,フォーマット後の文字列がそのままセットされるようで・・
けれども,今の自分の環境のglibcではsetproctitleに関する記述はないのが変だなと思いますが.
特にこれ以上突っ込んでも自分の実装と関係ないので,放っておくことにします.
0847login:Penguin
04/01/18 02:11ID:+zT3hNOG・CPUにタイマ割り込みがかかる
・割り込みハンドラに処理が移る
・プログラムカウンタをそのプロセスのカーネルスタックにpush
・汎用レジスタの内容をプロセスディスクリプタのthreadに保存
・schedule()で次に処理するプロセス選択
・次に処理するプロセスのプロセスディスクリプタのthreadから汎用レジスタにロード
・次に処理するプロセスのカーネルスタックからPCにpop
・ジャンプ
という理解でいいのでしょうか?(自主的にCPUを放す場合は別として)
ということは、ほかのプロセスのカーネルスタックの一番上の中身を書き換えると、
違うところから実行が再開される?
0848login:Penguin
04/01/18 14:35ID:EgN885Nx> ということは、ほかのプロセスのカーネルスタックの一番上の中身を書き換えると、
> 違うところから実行が再開される?
signalの挙動がそうです。
0849login:Penguin
04/01/23 09:07ID:R+JbGtscおお〜!なるほど
0850login:Penguin
04/01/25 16:35ID:8CJ3FK3qライセンスはGPLに従うと思うのですが,基本的には拡張するカーネルのバージョン
についているCOPYINGをそのまま持ってきてREADMEか何かで
「このソフトウェアはGPLでライセンスされています.詳しくはCOPYINGを読んでください」
と書くだけでよいのでしょうか?
0851login:Penguin
04/01/25 19:58ID:B5VoqxYAGPL の最後読んだ?
0852login:Penguin
04/01/25 21:16ID:STnhf9z3すいません.今読みました.
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をそのまま使っていいんでしょうか?
0853login:Penguin
04/02/03 12:14ID:w95WYYei現在サーバを起動しているとメモリをどんどん減っていくという問題で困っています。
(もちろんfreeコマンドでキャッシュを差し引いたところを見ています)
メモリが圧迫された状況でも、topコマンドから消費メモリ順に並べても、
特にメモリを食っているプロセスはありません。
気になるのはゾンビプロセスが発生していることです。
>>842-845 にあるように
ゾンビは最終的にはinitに吸収されると思うのですが、
その際psやtopで見たinitの使用メモリは増大していくのでしょうか?
原因を特定できずに困っています。
現在は毎日再起動してなんとか運用中です。
0854login:Penguin
04/02/03 12:55ID:5ayoX5Ueゾンビを生んでる人を見つけて退治する。
毎日核落としてたんじゃバタリアンの中の人もかわいそう。
0855login:Penguin
04/02/03 13:05ID:dnjnuywSそのゾンビプロセスが何のプロセスかわからないと何とも言えない
0856login:Penguin
04/02/03 15:54ID:w95WYYeipostfix->local(Postfixのローカル配送プロセス)->procmail->bashスクリプト
と起動されており、
procmailから下がゾンビになってます。
まずはこのゾンビがメモリ圧迫の原因かどうか確かめたいのです。
ちなみにinitのメモリ使用量は増加してません。
純粋に空きメモリだけが減っていきます。
このようにゾンビが起きることでメモリを減らすということはあり得るのでしょうか?
もしあり得るとしたら、ローカルユーザは簡単にサーバを落とせてしまうことになってしまいませんか?
0857login:Penguin
04/02/03 16:14ID:5ayoX5Ueじゃあprocmailを殺す
ありうるし落とせるよ
だから殺す
0858login:Penguin
04/02/03 17:29ID:qJjZfJxc>>842-845は孤児の話だ。
親が骨を拾ってあげないからゾンビになる。
ということで親ごと殺さないとダメかも。
と書いていて思ったが、現実世界に当てはめたらとんでもねー表現だな。
0859login:Penguin
04/02/03 18:31ID:bGaWcOzSその親には問題がありそうだね。
0860login:Penguin
04/02/03 18:42ID:u8zu6V/Iちゃんと面倒見ない親を探して対処しないとな。
ていうか、孤児はinitが引き取るから、
引き取った後ならいい人のinitを殺す話になってしまう(藁
0861login:Penguin
04/02/03 20:59ID:NOAqHG+Fメモリはあまり食わないはず。
だいたいpsで見れば分かるじゃん。
0862853
04/02/03 21:22ID:w95WYYeipsで見るとこんな感じになってます。
926 16119 0.0 0.0 0 0 ? Z 22:24 0:00 [sed <defunct>]
しかしいつまでもゾンビが残るわけではなく、
ちょっと立つと自然に消えていきます。
自然に消えるゾンビなら気にしなくても良いのでしょうか?
それともゾンビが出ること自体がまずいのでしょうか?
0863login:Penguin
04/02/03 21:35ID:iQ6XyeXR親の顔が見たい。
0864login:Penguin
04/02/03 21:59ID:qJjZfJxc消えるなら、親の面倒見が悪いだけだろう。
気にするな。
0865login:Penguin
04/02/03 22:07ID:5ayoX5Ue死んだら出席簿から名前が消されるのに
ゾンビちゃんは出席簿に名前が残ったままだよ。
机は持ってかれるかもしれないけどさ。
0866login:Penguin
04/02/09 23:34ID:APi7kHwb関数を使ってみましたが、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です。
0867login:Penguin
04/02/10 00:13ID:0xm4A1oM標準ライブラリは使えまへん。
strncpyは親切な人が同じものを用意してくれているから。
モジュールから呼べるのはEXPORT_SYMBOLで宣言されてる。
まじめにやるなら馬本嫁。
0868866
04/02/10 01:48ID:LKCK7qEyEXPORT_SYMBOLでgrepしてみたら、i386_ksyms.cに記述されているのを
見つけました。
strncpyなどは、特別にここで用意されていたに過ぎないのですね。
馬本は、オライリーの「LINUXデバイスドライバ 第2版」のことでいいですか?
ちょっと高いですが買って勉強します。
0869login:Penguin
04/02/11 22:12ID:A4Mg4/pdライブラリ関数の使えないカーネル内でもシステムコールは使えますよ.
_syscall0とかのマクロを使うか,sys_openなど直接呼び出したりはできると思います.
0870login:Penguin
04/02/12 13:38ID:8sD0wTgvsyscallマクロは、システムコールに再入してまうのであまりよろしくありまへん。
カーネルスレッド使えば問題ないけど。
そもそも、モジュールの中でファイル開いてごりごりやるのはどうかと思いますな。
0871login:Penguin
04/02/15 18:11ID:UtEM83ENrootkitのwebページを参照にしているようでしたので,「どうかと思う」ことを敢えてやりたいのかなと.
>>866
カーネル内でファイル入出力をするなら,sys_acct辺りが参考になるんじゃないでしょうか.
0872866
04/02/19 04:01ID: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
(続く)
0873866
04/02/19 04:01ID:3kajdZP1fd = 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(の実装?)等参考に調べてみます。
0874login:Penguin
04/02/19 22:09ID:1aYGSfnX#define __KERNEL_SYSCALLS__
#include <asm/unistd.h>
int hogehoge(void)
{
int fd;
fd=open("hoge",O_RDONLY,0);
}
at 2.4.x
試してないけど。
0875login:Penguin
04/02/24 04:25ID:OerDcbnD#include <errno.h>
だとライブラリ関数のヘッダファイルをインクルードします.
#include <linux/errno.h>
で/usr/src/linux/include/linux/errno.hをインクルードしてみてください.
>>873
sys_openをモジュールの冒頭でextern宣言してもだめですか?
それと単純にカーネルでファイル操作をしたいのなら,ファイルディスクリプタを返す必要はありません.
acctシステムコールにヒントがあります.
#まずは本を読んで知識を得ることが先決だと思います.
0876login:Penguin
04/02/24 13:30ID:bvymi53Usys_openはEXPORT_SYMBOLされていない罠。
armあたりは見える様になってるな。メンテナの趣味かな。
#素直にドライバにしてread/write経由でやりとりした方が素直だと激しく思う。
0877login:Penguin
04/02/27 12:06ID:POIJFvcG実行が始まるわけですが、ld-linux.soというのは
カーネルのどの部分でロードされるのでしょうか。
straceで観察するとlibc.soをロードするシステムコールは
発行されていますが、ld-linux.soに対してはありません。
これというのはカーネルがロードしていると考えていいわけですよね。
その後、ld-linux.soがlibc.soをロードする。
0878login:Penguin
04/02/27 12:51ID:e6K8vpAQなのでロードしているのは ELF の処理部分ではないかと(fs/binfmt_elf.c とか)。
0879login:Penguin
04/02/27 14:10ID:vM/yZAhIfs/binfmt_elf.c:load_elf_interp
んでld-linux.soが参照している共有ライブラリを読んでくると。
興味があるならLinkers&Loadersかttp://ukai.jp/debuan/2002w/elf.txtを読むと
もっと詳しく書いてある。
0880login:Penguin
04/02/27 21:12ID:vdlMtlwTを吐いてくれるツールとか、ソースを可視化するようなツールがあれば
良いなぁと思い探しています。
今のところ以下のようなツールをみつけました。
global
ttp://www.gnu.org/software/global/
SourceNavigator
ttp://sourcenav.sourceforge.net/
他にも何か良いツールを知っている方がおられましたら
教えてください。
0881login:Penguin
04/02/27 22:01ID:/BhsszhI0882login:Penguin
04/02/27 22:02ID:PSE6rHdEDoxygenは?
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
0883880
04/02/27 22:11ID:vdlMtlwT新たなツールを発見したので紹介します。
Sapid
ttp://www.sapid.org/index-ja.html
かなり期待できそうですが使い方がいまいちわかりません。
使っている人がいたら使用感を教えてください。
0884????A?L?A?N?e?N?A
04/02/27 22:13ID:V05PQgy90885login:Penguin
04/02/27 23:33ID:vM/yZAhIそれように書かれていないので、あんまし面白くない。
0886login:Penguin
04/02/27 23:49ID:xaaJLb2zカーネル実行中にコンテキストスイッチがおこってユーザープロセスが動き出すってことですか?
0887login:Penguin
04/02/28 00:00ID:A3wPssc7http://www.atmarkit.co.jp/flinux/special/kernel25/kernel25b.html
0888886
04/02/28 00:16ID:xSTzzvuP@IT読んでなんだかわかったような気分になれました。
0889login:Penguin
04/02/28 14:09ID:J2FeZbHS0890Linuxカーネルの仕組み
04/02/28 19:39ID:bMmaH5z2彼らがガンガッテいるのでLinuxは動いているのです。
以上。
0891login:Penguin
04/02/28 20:38ID:WjxTg2dVCPUはなんだろ
0892login:Penguin
04/02/28 21:02ID:u/+Sj8Sqhttp://www.linux.or.jp/JF/JFdocs/BogoMips/
PentiumとPentiumMMXでずいぶん違うな。
0893sage
04/03/14 02:28ID:g+4Nnj/K意外と理解できるものなんだね。ちょい感動。
0894login:Penguin
04/03/17 13:15ID:a5f2rjZpfreeの表示にある-/+ buffers/cache: のusedの数値は、
man freeには「使用中のメモリからバッファメモリを引いた値」とあるのですが、
だとすると
/proc/meminfo にある
Active: の欄はどういう意味でしょうか?
私の使用しているLinuxでは、freeでみると、-/+ buffers/cache の usedは、常時100MBを
下回らないほど大きく、自分ではちょっとおかしい気がします。
/proc/meminfoのActiveの数値は20〜30MBで、
現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
その数値は正しいのではないかと思います。
Linuxのメモリ使用量は、どのように読めば良いのでしょうか。
0895login:Penguin
04/03/17 13:33ID:a+ywf6ub> 現在動かしているプロセスのメモリ使用量(topやpsコマンドで確認)から考えるに
どう計算したの?
0896894
04/03/17 14:23ID:a5f2rjZp>895さん
ps -xl --sort -vsize
で、VSZを目算で足してました。が、これも実際にawk使って
足してみたら、freeの数値ともActiveの数値とも大きく異なっていました。
そもそもpsのSZとVSZの違いからしてわかってないので、そっちを先に調べることにしまつ、、
とりあえず、manからアタックはしてるのですが、
man proc も、 man ps も、 man free も、「そもそもメモリを理解してる人が
読むもの」な気がします。
どなたか「馬鹿野郎、ここ嫁!」っていうヒントがあったら教えてください。
0897login:Penguin
04/03/27 16:24ID:q39k7y+S0898login:Penguin
04/03/30 03:22ID:ic2Sy5Sj0899login:Penguin
04/03/30 17:15ID:PoJ7z2hxcachedはページキャッシュ
0900login:Penguin
04/03/30 18:31ID:VHI8Xdt8Thanks!
0901login:Penguin
04/03/31 23:27ID:1pGTvgen板の下の方でひそひそ話なのですね。
ス・テ・キ
0902login:Penguin
04/04/08 19:09ID:dz3aoHOSfile_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;
}
------------------------------------------------
0903login:Penguin
04/04/10 00:38ID:04yJkWho0904login:Penguin
04/04/10 01:33ID:M+qXKgd2指定してエコーできませんか?
/etc/xinetd.d/echo-udpと/etc/servicesをいじれば
できそうな気はするのですが、だめかな?
0905login:Penguin
04/04/12 10:07ID:KSP28miV_| ̄|○
やはりスクラッチからですか?そうですか。
0906login:Penguin
04/04/12 11:06ID:VzmbJK3b余裕で出来ると思うけどカーネル関係ないよ
0907login:Penguin
04/04/13 09:48ID:nwYJmtfppci_dram_offset 変数はどういう意味でしょうか?
ホストメモリの、PCIメモリ空間におけるオフセット、
という理解であっていますでしょうか?
0908login:Penguin
04/04/13 23:17ID:V/u6W3OU#TASMをずっと使っていたので :-)
メモリ参照ではまってしまった。
(a,b,c)って書くと(a+b*c)だと思わなかったZE。
しかも、SourceとDestが逆!?
コンパイルして気づいたっっっ!!
これ全部直すのキツイっす!(泣
今日は徹夜だ。シクシク
0909ヽ(´ー`)ノ ◆.ogCuANUcE
04/04/14 09:28ID:6A+690eW> しかも、SourceとDestが逆!?
両方とも info 見りゃ分かるんだけどな。
0910908
04/04/15 02:51ID:Z+dQWDMrasm("mov a, offset b");
↑上記の場合でのAT&T形式のアセンブリコードって何ですか?
offsetでエラーが出る
>>909
>両方とも info 見りゃ分かるんだけどな。
info gasですか?
探してみたんですけど見つからない。
0911login:Penguin
04/04/15 09:12ID:ehDW48/Amov $b,a
0912login:Penguin
04/04/25 18:46ID:a4I3Ve2uものだと思ってたんですが、void引数の関数にもちらほらasmlinkageが見られ
ますよね。これってどういう意図でつけてあるのか教えてくらさい。
0913login:Penguin
04/04/25 19:30ID:PUgCYyE/惰性でつけてるとみた。
include/linux/linkage.hを見ると何もしていないことがわかる。
0914login:Penguin
04/04/26 02:04ID:90cdg9sZうげ、そんな適当なんだ。了解でつ。
ありがとう。
0915login:Penguin
04/04/26 10:48ID:V5Uh0zswWhat 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.
0916login:Penguin
04/04/26 11:33ID:90cdg9sZそれを読んで質問してるんだけど、なにか英文の解釈違いますか?
0917login:Penguin
04/05/16 18:59ID:FC6L1zfD0918login:Penguin
04/05/17 19:36ID:nMrIOM1Y0919login:Penguin
04/05/18 02:01ID:OpVrZf3yLinuxにもよく似たものってある?
教えてエロリポップな人!
0920login:Penguin
04/05/25 05:20ID:JP2tAIIS>それを読んで質問してるんだけど、なにか英文の解釈違いますか?
怒っちゃイヤ!!
0921login:Penguin
04/06/21 08:22ID:1lgVmpvk0922login:Penguin
04/08/08 16:46ID:8WCY4JUzカーネルセキュリティーな方へ
http://security.ten.thebbs.jp/1089489561/
わたしにゃさっぱりだけどなんか面白そうなんで
紹介しときます。
0923login:Penguin
04/08/28 22:13ID:PWSONyS6Context Switchの大体の動きはわかりましたが一つ疑問があります。
switch_toや__switch_to関数で汎用レジスタ(eax, ebx, ecx等)の退避を行っている箇所が
見当たりません。実際に退避しているレジスタは、eip,esp,fs,gsやfpuレジスタとかです。
Context Switch発生時、いったいどこで汎用レジスタを退避するのでしょうか?
0924login:Penguin
04/08/29 01:01ID:nVxTwlJG関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
0925login:Penguin
04/08/29 02:43ID:u2o1h55W>関数の呼び出しで破壊されてもいいレジスタはそもそも退避しない。
>壊れるとまずいレジスタは関数のエントリでスタックに退避されている。
ってことは、例えばユーザランドのある関数を実行中に
そのプロセスの実行割り当て時間を使いきった場合、
その時点で使用していたレジスタを退避するのでしょうか?
であるなら、switch_toや__switch_toを処理している時点では、
汎用レジスタを退避しなくてもいいということになるんですが。
>そういうのはアセンブラのソース吐かせて確認すればいいのではないかと思うが。
そうなんですけど、いったいどこでそれをしているのかよくわかっていないので。
0926login:Penguin
04/08/29 11:10ID:1PFwUqWGswitch_to()は引数をeax、edxから引っこ抜くわけだから、
そのとき既に、このレジスタに(仮にA、Bとすると)その値が
保存されてないといけないわけ。
退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
ああ、面倒。ここまで書いたら解かると思いますけど。
この辺り開けば、等価なコードが書かれてるでしょう。
0927login:Penguin
04/08/29 16:36ID:cGtjWn1N>switch_to()は引数をeax、edxから引っこ抜くわけだから、
>そのとき既に、このレジスタに(仮にA、Bとすると)その値が
>保存されてないといけないわけ。
引数にeaxとかが設定されているのはわかります。
>退避するって書いてるけど、switch_toがA、Bをeax、edx・・・
>ああ、面倒。ここまで書いたら解かると思いますけど。
いえ、自分が期待していたのはどっかで汎用レジスタを退避しているのでは
と思っていたのです。どっかでpusha,popaでもしているのかなと。
なんかよくわからなくなってきたので、もう一度調べてみます。
レスしてくれた方、ありがとう。
0928login:Penguin
04/08/29 16:42ID:nVxTwlJGユーザーランドで使っているレジスタは例外発生時に退避されます。
entry.SのSAVE_ALLマクロ使ってる所。
0929login:Penguin
04/08/29 19:36ID:cGtjWn1N見てみます。ありがとう。
0930923
04/08/30 02:36ID:s/M5nqAJ暗闇の中に一筋の光が見えてきました。
0931login:Penguin
04/09/06 16:37ID:zvPrxyTSム板より転載。
http://program2ch.jugem.cc/
0932login:Penguin
04/09/28 13:20:48ID:j6tq7+L52.2用のカーネルモジュール(driver)がありまして、2.4で使いたいのですけ
ど、カーネルに変更が加わった為かソースはそのままではmakeが通らないです。
一般的な話でいいのですが、kernel2.2から2.4などバージョンを上げる時
moduleのソースはどの辺りに修正加えてますか?
0933login:Penguin
04/10/12 13:21:06ID:8oNaJMZyオライリーの「LINUXデバイスドライバ」ぐらい持っとけ。
0934login:Penguin
04/12/22 21:16:51ID:pSCYM4cf2.2と2.4の同じデバイスのドライバ見比べてみたらどうでしょうか。
あと、「LINUXデバイスドライバ」って英語版はWeb上で読めましたっけ。
0935login:Penguin
04/12/23 07:06:29ID:S0CjoABJHIGHMEMが必要なわけですが、
HIGHMEMを使うにあたって、ペナルティ等はありますか?
2.6になって改善されたというような記事は見つかったのですが、
具体的な問題については見つかりませんでした。
0936login:Penguin
04/12/30 10:00:07ID:4MuG0KSsモジュールでシステムコールを追加する方法というのはありますが、
(hoge.oをロードしてる間だけhoge()と言うシステムコールが使える)
既存のシステムコールを上書きすることはできるのでしょうか。
(hoge.oをロードしている間だけカスタマイズしたopen()、close()が使えるような)
カーネルがROなROMに焼かれているシステムですので、カーネルに直接
手を入れることができず上記のような発想で対応したいと考えています。
0937login:Penguin
04/12/30 10:00:44ID:4MuG0KSsなお、対象のカーネルは2.4.17です。
0938login:Penguin
04/12/30 10:09:32ID:4MuG0KSsここにそのものズバリがありました。
ご参考に。
http://www.csg.is.titech.ac.jp/~kourai/memo/linux_kernel.html
0939login:Penguin
05/01/29 14:37:42ID:gZ/pqgzp# define __acquire(x)__context__(1)
__context__(1)ってのはどういう意味?
教えてくれた人には俺の妹をもれなくプレゼント!
0940login:Penguin
05/02/01 14:08:57ID:lTL5Ae25コンテキストスイッチ。
って何だったっけ?
ああ、不完全だからおぱーいとマソこだけでいいよ。
0941login:Penguin
05/02/01 15:58:58ID:Azn3cU4Mとりあえずレスに感謝。あんた最高だよ、ただコンテキストスイッチじゃないんだよな。
不正解だから>>940には、俺の使用済みティッシュ(3年分)をもれなくプレゼント!
__context__(1)ってのはどうもgcc拡張っぽい気がするんだ。
0942login:Penguin
05/02/03 11:47:43ID:vTRZ9nM+0943login:Penguin
05/02/03 12:58:08ID:8pVcdBBv理解できずに苦しんでます。どうかご教授ください。
0944login:Penguin
05/02/20 01:52:12ID:HsEiZt6DDEFINE_PER_CPUで定義したCPU毎の変数を取り出すマクロじゃないの?
ttp://lwn.net/Articles/22911/
0945login:Penguin
05/02/20 01:59:27ID:HsEiZt6D0946943
05/02/23 08:44:24ID:L5tOcRY0ありがとうございますm(_ _)m
半分、あきらめかけていました。
0947CPUID
05/02/25 14:48:05ID:T5ngmMgI0948login:Penguin
05/02/25 21:56:30ID:Kyzhm2lt0949login:Penguin
05/02/25 23:10:03ID:L0S86Pvnすプロセスディスクリプタの誤りです。
0950login:Penguin
05/02/25 23:55:11ID:Nj2juC+Sそんなんユーザー空間から見えちゃまずいだろう。
0951login:Penguin
05/02/26 13:57:10ID:NTEY/KLTお前は一人で世界を救おうというのか!
0952login:Penguin
05/02/26 20:38:32ID:c7lqcqLwカーネルを理解したいのだ。
「この本をこの通りに順番に読め!」
というのがあったら、教えてください。
0953login:Penguin
05/02/26 21:54:11ID:PsgioYqx本などない
ソース嫁
0954login:Penguin
05/02/27 14:18:38ID:BnGxFursこれ以上理解できない状態が続くと、妻を道連れに逝くかもしれません。
そうなったらお前らすごい後悔するよな、そうだよな、そうだろ!
心の中で否定しても無駄だ、絶対後悔しちゃうぞ。
後悔したくないよな、そうだよな。
じゃー、さっさと教えてちょ!
include/linux/compiler.h
# define __releases(x)__attribute__((context(1,0)))
# define __acquire(x)__context__(1)
すいません、ちょっと強気に迫ってみましたが、教えてください。
本当に困ってます。頼みます。m(_ _)m
0955login:Penguin
05/02/27 14:21:21ID:BnGxFurs1. UnixUserのLinux2.6解読室
2. 詳解Linuxカーネル
3. Linuxのソース
0956login:Penguin
05/02/27 20:25:37ID:1DzM+Kt1詳細Linuxカーネルは持ってます。
UnixUserのブートの本も。
ただ、それに至る知識がないのです。
Linuxプログラミング(ソフトバンクのやつ)も読んでいるのですが、
「何かが足りない」感じなのです。
0957login:Penguin
05/02/27 20:27:14ID:1DzM+Kt10958login:Penguin
05/02/27 20:53:44ID:+C2cvjvn恐らくハードウェアの知識と根性
>>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.
この辺り見れば?
0959login:Penguin
05/02/27 20:54:49ID:BnGxFursあくまで個人的な意見だが、Linuxカーネルはプロセッサの知識
が無いと苦しい。
「はじめて読む8086」→「はじめて読む486」
を読んで、プロセッサの知識を身につけておいた方が良いと思う。
ただ、「あれやって、これやって、そしてLinuxカーネルを読もう」
とあまり遠回りをするのではなく、プロセッサとC言語の知識が
あったら、すぐにLinuxカーネルを読み始めた方がよいように思う。
0960954
05/02/27 21:00:55ID:BnGxFursとりあえずレス、サンクス!感謝感謝感謝
Linux2.6.10です。
探してみたんだけど見つかりません>gccのinfo (ToT)
context()っていう関数が一体、どの関数のことなのか知りたいです。
0961login:Penguin
05/02/28 11:32:10ID:D7G2yqC2つ[GNU GLOBAL ソースコードタグシステム]
http://tamacom.com/global-j.html
0963960
05/03/01 11:16:17ID:yi/Urpstinclude/linux/compiler.h
の中のマクロってことがヒントかもしれない。
http://lxr.linux.no/source/include/linux/compiler.h#L6
↑の場所なんだが、
#ifdef __CHECKER__
っというのは何だろう?__ASSEMBLY__とかいう定義もあるが、
これはどこで調べれば良いのだろうか。
どうか放置せずに教えてください m(_ _)m
これ以上停滞してると、・・・お、お客さんが怖い・・・
0964login:Penguin
05/03/01 11:56:56ID:dudfwCjE0965login:Penguin
05/03/01 12:04:54ID:eifVJR66>これ以上停滞してると、・・・お、お客さんが怖い・・・
ソースを解析する仕事??
0966login:Penguin
05/03/01 12:14:12ID:PnFz+g+l0968login:Penguin
05/03/01 15:25:54ID:eifVJR660969960
05/03/01 16:13:44ID:yi/Urpst下請けなので断れない立場です(T_T)
0970login:Penguin
05/03/01 16:16:52ID:xn0lGzJZおたがい不幸になるだけだ。
0971login:Penguin
05/03/01 16:21:19ID:xn0lGzJZ【Linux】カーネル総合2【Kernel】
http://pc5.2ch.net/test/read.cgi/linux/1100967722/
0972login:Penguin
05/03/01 16:36:21ID:eifVJR66ちょっと調べたら自分はわかったよ。
言っておくけどデバドラ開発ならこれらは知らなくても別に問題ないよ。
無視してもいい。
ちょっとだけヒント:これらはgccでは使用しません
0973960
05/03/01 16:44:06ID:yi/Urpstサンクス!x9
か、かなり気が楽になったよ。お前は神だ!
できればどこを調べたのか知りたいのだが・・・頼む.com
>>970は厳しいね。
仕事、断れるくらい大きい会社に勤めてるんだろうね。うらやましぃ...
0974login:Penguin
05/03/01 17:47:44ID:eifVJR66>できればどこを調べたのか知りたいのだが・・・頼む.com
(ーー;)
無視してもよいと言ってるではないか...
Use the source and google, >>963
− May the source be with >>963!
0975必死な960
05/03/01 19:23:39ID:yi/Urpst>無視してもよいと言ってるではないか...
長いこと悩んでいたので、結局なんだったのか知りたいです。
といろいろ検索かけてみたが、未だわかりませんorz
どうか、どうか教えてください m(_ _)m
0976login:Penguin
05/03/01 20:15:49ID:eifVJR66じゃあ手がかりを与えよう (といっても答えを言ってるようなものだけど..)
ttp://www.linuxjournal.com/article/7272
0978login:Penguin
05/03/01 22:09:08ID:eifVJR660979& ◆/WemEjDB42
05/03/01 22:41:33ID:yi/Urpst現在英語を読んでいるところだが、よくわからんのだ。
ただ、気持ちだけは伝わってるぜ。
サンキュー、ミスター!あんた最高だよ。
ついでに言っておくが、日本語で解説してくれると
うれしい。
0980login:Penguin
05/03/01 22:44:19ID:eifVJR66>ついでに言っておくが、日本語で解説してくれると
>うれしい。
ガン( ゚д゚)ガレ
0981login:Penguin
05/03/01 22:54:00ID:yi/Urpst「はじめて読む8086」「はじめて読む486」は良い本だよ。
両方とも古い本なので、486の方はサンプルコードがMASM
とMS-C用なんだよな。で、DOSで動かすことを前提として
いる。今となっては、そのような環境は手に入らないかも
しれない。でも、あきらめるのは早い。
MS-DOSの代わりにFreeDOSを使えば良いし、MASMやMS-Cの
代わりにLSI C-86試食版を使えば良い。
FreeDOS
ttp://homepage1.nifty.com/bible/fdos/
LSI C-86試食版
ttp://oku.edu.mie-u.ac.jp/~okumura/c/lsic.html
FreeDOSにLSI C-86試食版を導入する方法
ttp://homepage1.nifty.com/bible/fdos/lsic/lsi-c.html
根気よく頑張れよ!
0982login:Penguin
05/03/01 22:59:55ID:eifVJR66まぁ簡単に言うとだな、
リーナスがちょっとしたちっちゃなコンパイラを作ったぞ、みたいな
古いK&Rスタイルは嫌だからANSI Cが好きなの、みたいな
GCCを使わずにそれでソースチェックに使ったりしてるよ、みたいな
んな事言ってるように思われ。
んだからそのリーナスコンパイラ"Sparse"って言うのか?は、
別にKernelコンパイルにもデバドラ作成にも必須で無いぞって事。
(Kernelハッカーには嬉しいツールらしいが..)
0983960
05/03/01 23:06:31ID:yi/Urpstよくぞ説明してくれた!なるほど!
俺はもうあきらめて愛用のパジャマに着替えた
ところだよ。
感謝の気持ちとして俺の使用済みティッシュ
(1ヶ月分)をもれなくプレゼント!
0984login:Penguin
05/03/01 23:09:19ID:eifVJR66>よくぞ説明してくれた!なるほど!
>俺はもうあきらめて愛用のパジャマに着替えた
>ところだよ。
それでいいのか!サラリーマンよ!w
>感謝の気持ちとして俺の使用済みティッシュ
>(1ヶ月分)をもれなくプレゼント!
(゚�听)イラネ
0985960
05/03/01 23:19:08ID:yi/Urpst>それでいいのか!サラリーマンよ!w
良くは無いんだけど、俺はクソエンジニアだからいいの。
でもありがとな。助かったよ。
sparseについて調べてみるといくつか見つかった。↓こういう使われ方を
してるんだね。
RedHatのサイトにて:
sparseという自動化ツールを使用してLinux 2.6ソースを調べて
いたところ、いくつかの問題が発見された。そのうち一部の問題
は、2.4シリーズのLinuxカーネルにも当てはまるものである。
japan.linux.comにて:
sparseという自動化ツールを使用してLinux 2.6ソース
を調べていたところ、複数の弱点が発見された。
0986I am free.
05/03/01 23:29:18ID:eifVJR66日々を過ごしてるだけだから忠告するほど偉くはないんだけどね。w
レス数が950を超えています。1000を超えると書き込みができなくなります。