SGI KDBを使ったカーネルデバッグスレ
■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
NGNGカーネルデバッグの話はここで存分にどうぞ
102オリジナルスレの1
NGNG>>98
ソースを見てみてデバッグしてみた。101が正しいな。
fork.cのdo_fork関数に以下のようなコードがある。
retval = -EAGAIN;
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->__count);
atomic_inc(&p->user->processes);
でp->userはsched.hを見るとuser_structだから、user_structの定義を見ると
これもsched.hにある。
struct user_struct {
atomic_t __count; /* reference count */
atomic_t processes; /* How many processes does this user have? */
atomic_t files; /* How many open files does this user have? */
/* Hash table maintenance information */
struct user_struct *next, **pprev;
uid_t uid;
};
これらよりコメントを見れば分かるけどprocessesはこのユーザコンテキスト
上でいくつのプロセスが走っているかを示している。それを
p->rlim[RLIMIT_NPROC].rlim_cur と比較してそれ以上になったら
fork処理を失敗させている。rlim_curはfork_initでイニシャライズ
されていてmax_threads/2になっている。
ソースを見てみてデバッグしてみた。101が正しいな。
fork.cのdo_fork関数に以下のようなコードがある。
retval = -EAGAIN;
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->__count);
atomic_inc(&p->user->processes);
でp->userはsched.hを見るとuser_structだから、user_structの定義を見ると
これもsched.hにある。
struct user_struct {
atomic_t __count; /* reference count */
atomic_t processes; /* How many processes does this user have? */
atomic_t files; /* How many open files does this user have? */
/* Hash table maintenance information */
struct user_struct *next, **pprev;
uid_t uid;
};
これらよりコメントを見れば分かるけどprocessesはこのユーザコンテキスト
上でいくつのプロセスが走っているかを示している。それを
p->rlim[RLIMIT_NPROC].rlim_cur と比較してそれ以上になったら
fork処理を失敗させている。rlim_curはfork_initでイニシャライズ
されていてmax_threads/2になっている。
103オリジナルスレの1
NGNG実際にデバッガでどう動いているか見てみよう。
まず main(){while(fork());} をコンパイルし実行する。
pauseキーでブレイクインし、do_forkにブレイクポイントを張る。
[1]kdb> bp do_fork
Instruction(i) BP #0 at 0xc0115270 (do_fork)
is enabled globally adjust 1
gで、再実行。先ほど実行したプログラムでforkが実行されまくってる
からねすかさず止まるはず。
Instruction(i) breakpoint #0 at 0xc0115270 (adjusted)
0xc0115270 do_forkint3
Entering kdb (current=0xc5f82000, pid 15240) on processor 1
due to Breakpoint @0xc0115270
止まったら
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
の行までトレースする。ソースをみるとこの条件判断はalloc_task_structの
次の次の条件判断であることが分かる。この辺りのコードでアロケートしてるのは
0xc01152ee do_fork+0x7ecall 0xc012fbe0 __get_free_pages
0xc01152f3 do_fork+0x83mov %eax,%ebx
0xc01152f5 do_fork+0x85test %ebx,%ebx
0xc01152f7 do_fork+0x87je 0xc01158d8 do_fork+0x668
のコードだ。test %ebx,%ebx jeはif (!p) gotoであることは容易に分かる
このコードの次の条件判断は
0xc0115314 do_fork+0xa4mov 0x4(%edx),%eax
0xc0115317 do_fork+0xa7cmp 0x300(%ebx),%eax
0xc011531d do_fork+0xadjae 0xc011596b do_fork+0x6fb
だから、ここまでトレース。トレースはssコマンドだ。
まず main(){while(fork());} をコンパイルし実行する。
pauseキーでブレイクインし、do_forkにブレイクポイントを張る。
[1]kdb> bp do_fork
Instruction(i) BP #0 at 0xc0115270 (do_fork)
is enabled globally adjust 1
gで、再実行。先ほど実行したプログラムでforkが実行されまくってる
からねすかさず止まるはず。
Instruction(i) breakpoint #0 at 0xc0115270 (adjusted)
0xc0115270 do_forkint3
Entering kdb (current=0xc5f82000, pid 15240) on processor 1
due to Breakpoint @0xc0115270
止まったら
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
の行までトレースする。ソースをみるとこの条件判断はalloc_task_structの
次の次の条件判断であることが分かる。この辺りのコードでアロケートしてるのは
0xc01152ee do_fork+0x7ecall 0xc012fbe0 __get_free_pages
0xc01152f3 do_fork+0x83mov %eax,%ebx
0xc01152f5 do_fork+0x85test %ebx,%ebx
0xc01152f7 do_fork+0x87je 0xc01158d8 do_fork+0x668
のコードだ。test %ebx,%ebx jeはif (!p) gotoであることは容易に分かる
このコードの次の条件判断は
0xc0115314 do_fork+0xa4mov 0x4(%edx),%eax
0xc0115317 do_fork+0xa7cmp 0x300(%ebx),%eax
0xc011531d do_fork+0xadjae 0xc011596b do_fork+0x6fb
だから、ここまでトレース。トレースはssコマンドだ。
104オリジナルスレの1
NGNG俺は実際にはトレースするの面倒だから 0xc0115317にブレイクポイントを
設定し実行した。
[0]kdb> bp 0xc0115317
Instruction(i) BP #1 at 0xc0115317 (do_fork+0xa7)
is enabled globally adjust 1
[1]kdb> g
Instruction(i) breakpoint #1 at 0xc0115317 (adjusted)
0xc0115317 do_fork+0xa7int3
Entering kdb (current=0xc5f82000, pid 15240) on processor 1
due to Breakpoint @0xc0115317
次に実行されるインストラクションはこれ。
0xc0115317 do_fork+0xa7cmp 0x300(%ebx),%eax
レジスタの内容を見てみよう。eaxが&p->user->processesのはず。
[1]kdb> rd
eax = 0x00001000 ebx = 0xc2bd0000 ecx = 0x00000000 edx = 0xc6d0dfc0
esi = 0xc5f82680 edi = 0xc2bd0680 esp = 0xc5f83f50 eip = 0xc0115317
ebp = 0xc5f83fa4 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00000286
xds = 0xc5f80018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc5f83f1c
eaxは0x1000つまり4096だな。0x300(%ebx)も見てみよう。メモリダンプはmdだ。
[0]kdb> md %ebx+0x300
0xc5aaa300 00001000 00001000 00000400 00000400 ................
p->rlim[RLIMIT_NPROC].rlim_curも0x1000,4096であることがわかる。
つまりこのマシンでは1ユーザーコンテキスト上では4096個以上のプロセスは
立ち上げられないことになる。実際にpsコマンドでみても4096以上は
立ち上がっていない。
設定し実行した。
[0]kdb> bp 0xc0115317
Instruction(i) BP #1 at 0xc0115317 (do_fork+0xa7)
is enabled globally adjust 1
[1]kdb> g
Instruction(i) breakpoint #1 at 0xc0115317 (adjusted)
0xc0115317 do_fork+0xa7int3
Entering kdb (current=0xc5f82000, pid 15240) on processor 1
due to Breakpoint @0xc0115317
次に実行されるインストラクションはこれ。
0xc0115317 do_fork+0xa7cmp 0x300(%ebx),%eax
レジスタの内容を見てみよう。eaxが&p->user->processesのはず。
[1]kdb> rd
eax = 0x00001000 ebx = 0xc2bd0000 ecx = 0x00000000 edx = 0xc6d0dfc0
esi = 0xc5f82680 edi = 0xc2bd0680 esp = 0xc5f83f50 eip = 0xc0115317
ebp = 0xc5f83fa4 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00000286
xds = 0xc5f80018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc5f83f1c
eaxは0x1000つまり4096だな。0x300(%ebx)も見てみよう。メモリダンプはmdだ。
[0]kdb> md %ebx+0x300
0xc5aaa300 00001000 00001000 00000400 00000400 ................
p->rlim[RLIMIT_NPROC].rlim_curも0x1000,4096であることがわかる。
つまりこのマシンでは1ユーザーコンテキスト上では4096個以上のプロセスは
立ち上げられないことになる。実際にpsコマンドでみても4096以上は
立ち上がっていない。
105オリジナルスレの1
NGNGまあ、こんなもんだ。まあまあの題材だったね。
2.2.19にも
retval = -EAGAIN;
if (p->user) {
if (atomic_read(&p->user->count) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->count);
}
ちゅうコードがあるからちゃんと動くはずだけどなあ。
2.2.19にも
retval = -EAGAIN;
if (p->user) {
if (atomic_read(&p->user->count) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->count);
}
ちゅうコードがあるからちゃんと動くはずだけどなあ。
NGNG
∩
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!クソレスがついてます!
/ / \ やはりちゃんころですか!?鬱だ、sageます!
/ /| / \_____________
__| | .| |
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!クソレスがついてます!
/ / \ やはりちゃんころですか!?鬱だ、sageます!
/ /| / \_____________
__| | .| |
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
NGNG
.'⌒⌒丶
_ ′从 从)_ もう寝る
| __ヽゝ・_・ν |
|\ ⌒⌒⌒⌒⌒\
| \ \
\ |⌒⌒⌒⌒⌒|
\ |_____|
_ ′从 从)_ もう寝る
| __ヽゝ・_・ν |
|\ ⌒⌒⌒⌒⌒\
| \ \
\ |⌒⌒⌒⌒⌒|
\ |_____|
108login:Penguin
NGNG109オリジナルスレの1
NGNGrootユーザーの場合はulimitコマンドで設定することが可能。
一般ユーザーは設定できない。一般ユーザの最大プロセス数を変更したい場合は
2.2系では最大値はtask.hで
#define MAX_TASKS_PER_USER (NR_TASKS/2)
と定義されてるからここを適当にかえて再構築。
2.4系では>>102で書いたようにfork_initの中で物理メモリの搭載量をもとに
max_threadsが計算され、その半分に設定されている。
変更したい場合は物理メモリの搭載量をかえましょう。
どうしてもメモリをそのままでプロセス数だけ変更したい場合はfork.cのfork_initの
init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
のmax_threads/2を適当な値に変えて再構築しましょう。
一般ユーザーは設定できない。一般ユーザの最大プロセス数を変更したい場合は
2.2系では最大値はtask.hで
#define MAX_TASKS_PER_USER (NR_TASKS/2)
と定義されてるからここを適当にかえて再構築。
2.4系では>>102で書いたようにfork_initの中で物理メモリの搭載量をもとに
max_threadsが計算され、その半分に設定されている。
変更したい場合は物理メモリの搭載量をかえましょう。
どうしてもメモリをそのままでプロセス数だけ変更したい場合はfork.cのfork_initの
init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
のmax_threads/2を適当な値に変えて再構築しましょう。
NGNG
NGNG
>>オリジナルスレの1
ちょっといい?
ちょっといい?
NGNG
114login:Penguin
NGNG晒しage
115オリジナルスレの53
NGNG>>88
やんわりと同意。
このスレはLinuxのことやってるんだから、興味ない人や
他のスレの発言から1が嫌いな人は放っておけばいい。
恥ずかしい論理でLinux厨房ぶりを晒さないことだ。
確かに1は>>35-37みたいな恥ずかしい自作自演をする輩ではある。
だいたい>>36は前スレの190だろ。
http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=989048022&st=190&to=191&nofirst=true
文体が変わってるし急に馴れ馴れしくなってるよ。キャラは一貫性を持たせろ。
>たまにリロードして窺ってました。
>5時間くらい人がこなかったので誰もいなくなったのかと思ってました。
俺は前スレの190=1のこの粘着ぶりをみて気持ち悪くなり
手を引いた。確かにおもちゃにするにはおもしろい相手だけどな。
だからあまり刺激するな。
1は反論するやつはみんな俺に見えてるみたいだが、そんなに君を
傷つけて心に深い傷を負わしてしまったかな。
ごめんな、がんばれよ。
まあ2chの掃き溜めで1もいろんな意味で英雄になったな。嬉しいぞ。
やんわりと同意。
このスレはLinuxのことやってるんだから、興味ない人や
他のスレの発言から1が嫌いな人は放っておけばいい。
恥ずかしい論理でLinux厨房ぶりを晒さないことだ。
確かに1は>>35-37みたいな恥ずかしい自作自演をする輩ではある。
だいたい>>36は前スレの190だろ。
http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=989048022&st=190&to=191&nofirst=true
文体が変わってるし急に馴れ馴れしくなってるよ。キャラは一貫性を持たせろ。
>たまにリロードして窺ってました。
>5時間くらい人がこなかったので誰もいなくなったのかと思ってました。
俺は前スレの190=1のこの粘着ぶりをみて気持ち悪くなり
手を引いた。確かにおもちゃにするにはおもしろい相手だけどな。
だからあまり刺激するな。
1は反論するやつはみんな俺に見えてるみたいだが、そんなに君を
傷つけて心に深い傷を負わしてしまったかな。
ごめんな、がんばれよ。
まあ2chの掃き溜めで1もいろんな意味で英雄になったな。嬉しいぞ。
NGNG
>>115
やめろって。。。また。。
やめろって。。。また。。
11755
NGNGNGNG
>>117
言うだけなら1でも出来るな。
言うだけなら1でも出来るな。
NGNG
>>35-37
つうか午前4時にあの間隔のカキコはなあ。
つうか午前4時にあの間隔のカキコはなあ。
NGNG
NGNG
間隔&月曜の午前4時だぜ。
そんでまた偶然36、37が出てくる。
君たちはデムパで繋がってるの?
そんでまた偶然36、37が出てくる。
君たちはデムパで繋がってるの?
NGNG
確かに。その限られた中で、さらに数少ない1に同意した人間がねえ。
決めつけるのは良くないが、かなり不自然であるとだけ。
決めつけるのは良くないが、かなり不自然であるとだけ。
12455
NGNGいいじゃん。このスレためになるし。
NGNG
NGNG
そんじゃ55=1ってことか。
自分でネタフリして自分で答えるのはスレを盛り上げるために
使われる手段ではあるので、別に批判はしない。
自分でネタフリして自分で答えるのはスレを盛り上げるために
使われる手段ではあるので、別に批判はしない。
12737
NGNG>自分でネタフリして自分で答えるのはスレを盛り上げるために
>使われる手段ではあるので、別に批判はしない。
まあ、つまらん煽りや正体探しより遙かに有益だわな
>使われる手段ではあるので、別に批判はしない。
まあ、つまらん煽りや正体探しより遙かに有益だわな
NGNG
開きなおった(藁
面白いなー
面白いなー
NGNG
トリッキーの1か?もしかして
NGNG
132login:Penguin
NGNGage
もっとしゃべって
もっとしゃべって
13337
NGNG>>131
有益な情報を書いてくれる人にエールを送るのはダメなのか?
有益な情報を書いてくれる人にエールを送るのはダメなのか?
NGNG
>>133
自作自演だからダメなんだろ馬鹿(w
自作自演だからダメなんだろ馬鹿(w
NGNG
そうそう、温かいエールも自作自演だとひたすら寒い。
13655
NGNGそろそろ 1にきてもらいたいなぁ
NGNG
NGNG
NGNG
そろそろカーネルの話に戻してよ
NGNG
…などと1らしき人が発言してますが、皆さんいかがでしょう?
NGNG
NGNG
NGNG
>いや、カーネルデバッグ以外でLinuxの話ならOKでしょ(w
カーネルデバッグの話はいやなのか?
カーネルデバッグの話はいやなのか?
NGNG
NGNG
だって1がうざいんだもん。
NGNG
NGNG
>>146
Lin厨にはテクニカルな話は理解不能です。
Lin厨にはテクニカルな話は理解不能です。
NGNG
オリ1とは無関係です
NGNG
NGNG
>>148
1必死だな。
1必死だな。
NGNG
本物かどうか試験してやろう
jiffies が10倍早く回るようにする為にはどうすればいい?
jiffies が10倍早く回るようにする為にはどうすればいい?
155あおりじゃ無いぞ
NGNGなかなか面白いな。このスレ。
>オリジナルスレの1
煽りはほっといて質問
プロセステーブルが一杯になったからと言ってシステムの動作がおかしくなるのは何故だ?
psやkillが上がらないのは当然として、kernelの挙動には影響無いはずだが。
デバッグの格好の対象だと思うがどうだ。
あと、プロセスを上げず(killコマンドじゃなくて)にシステムを正常に戻す方法はないのか?
>エセLin注
プロセステーブル一杯でプロセスが上がらなくなるのはLinuxだけじゃないぞ。
>オリジナルスレの1
煽りはほっといて質問
プロセステーブルが一杯になったからと言ってシステムの動作がおかしくなるのは何故だ?
psやkillが上がらないのは当然として、kernelの挙動には影響無いはずだが。
デバッグの格好の対象だと思うがどうだ。
あと、プロセスを上げず(killコマンドじゃなくて)にシステムを正常に戻す方法はないのか?
>エセLin注
プロセステーブル一杯でプロセスが上がらなくなるのはLinuxだけじゃないぞ。
NGNG
うん、もうやめようよ。
1の自作自演はもう限りなく有力ではあるが、
これ以上ひっぱるのはやめよう。
優しく1を見守ってやろう。
「>>115 1発見!」とかもなしな。
言いたいのはわかるが、おさえろ。
本来の趣旨に戻してやってくれ。
1の自作自演はもう限りなく有力ではあるが、
これ以上ひっぱるのはやめよう。
優しく1を見守ってやろう。
「>>115 1発見!」とかもなしな。
言いたいのはわかるが、おさえろ。
本来の趣旨に戻してやってくれ。
15755
NGNG158login:Penguin
NGNG>>156
ゲキウザ
ゲキウザ
160あおりじゃ無いぞ
NGNG>>157
デーモンはforkに失敗して死ぬことはあると思う。
ただ、inetdが死んだからってkernelには影響ないと思う。
inetdもユーザプロセスだからな。
initがプロセス作ろうとして失敗するからか?
>オリジナルスレの1
本物かどうかのチェックなんてどうでも良いからこっちやろうぜ。
デーモンはforkに失敗して死ぬことはあると思う。
ただ、inetdが死んだからってkernelには影響ないと思う。
inetdもユーザプロセスだからな。
initがプロセス作ろうとして失敗するからか?
>オリジナルスレの1
本物かどうかのチェックなんてどうでも良いからこっちやろうぜ。
161オリジナルスレの1
NGNG>>155
うーん、俺のところではそういう状況になってないからはっきりとした
ことは言えないが、2.2系ではプロセステーブルが一杯になっても
確かにカーネルの挙動には影響ないはず。
2.4系ではforkが落ちる=メモリ確保失敗だから、他のカーネルモードドライバ/
ファイルシステムもメモリ確保できないはずだから挙動はおかしくなるはず。
こうなったらもう、どうにもならない。仕様だね。
うーん、俺のところではそういう状況になってないからはっきりとした
ことは言えないが、2.2系ではプロセステーブルが一杯になっても
確かにカーネルの挙動には影響ないはず。
2.4系ではforkが落ちる=メモリ確保失敗だから、他のカーネルモードドライバ/
ファイルシステムもメモリ確保できないはずだから挙動はおかしくなるはず。
こうなったらもう、どうにもならない。仕様だね。
162あおりじゃ無いぞ
NGNG>>161
こらこら適当に回答するんじゃない。なんだか投げやりだぞ。頑張れ
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
これでなんでメモリ確保のエラーなのだ?
メモリは空いてるはずだが。
おれもカーネルソース見てみるかな。ちと興味が湧いた 藁
こらこら適当に回答するんじゃない。なんだか投げやりだぞ。頑張れ
if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
これでなんでメモリ確保のエラーなのだ?
メモリは空いてるはずだが。
おれもカーネルソース見てみるかな。ちと興味が湧いた 藁
163オリジナルスレの1
NGNG違う違う。落ちる可能性があるのはその前の
p = alloc_task_struct();
if (!p)
goto fork_out;
p = alloc_task_struct();
if (!p)
goto fork_out;
164オリジナルスレの1
NGNGちょっと補足すると。俺の環境ではRLIMIT_NPROCがちゃんと働いてメモリを
使い切らない程度にしかプロセスは立ち上がらない。この時にはすでに
立ち上がってるデーモンや、カーネル/カーネルモードドライバにはなにも
影響がなくおかしな挙動もない。
もし、RLIMIT_NPROCを非常に大きな値に設定した場合はforkが落ちるのは
メモリ確保失敗だから他のメモリ確保も失敗する。そうなったら挙動は
当然おかしくなる。
使い切らない程度にしかプロセスは立ち上がらない。この時にはすでに
立ち上がってるデーモンや、カーネル/カーネルモードドライバにはなにも
影響がなくおかしな挙動もない。
もし、RLIMIT_NPROCを非常に大きな値に設定した場合はforkが落ちるのは
メモリ確保失敗だから他のメモリ確保も失敗する。そうなったら挙動は
当然おかしくなる。
NGNG
2.2系ではお手上げってことか
NGNG
168親切君
NGNG169オリジナルスレの1
NGNG36,37に迷惑がかかるのは嫌なので言っておく。
俺は最近この板に書き込むときにはちゃんと"オリジナルスレの1"を使ってる。
だから 36も37も全く別の人。他の人に噛み付くのは止めてくれ。
俺は最近この板に書き込むときにはちゃんと"オリジナルスレの1"を使ってる。
だから 36も37も全く別の人。他の人に噛み付くのは止めてくれ。
NGNG
171あおりじゃ無いぞ
NGNGLinux板にはカーネルデバッグを嫌う奴がいるみたいだな。
人それぞれだから、それはそれで良いとしても、
オープンソースを掲げるLinuxの板がこれではなぁ...
人それぞれだから、それはそれで良いとしても、
オープンソースを掲げるLinuxの板がこれではなぁ...
172あおりだぞ
NGNG>>171
カーネルデバックがダメって主張してるのは一人ぽい。
他の人はオリジナルスレの1がうざいとか、
おもしろい素材だから煽って遊んでるってな感じじゃないの?
前科なくこのスレを建てていたら好意を持って迎えられていたでしょう。
カーネルデバックがダメって主張してるのは一人ぽい。
他の人はオリジナルスレの1がうざいとか、
おもしろい素材だから煽って遊んでるってな感じじゃないの?
前科なくこのスレを建てていたら好意を持って迎えられていたでしょう。
173オリジナルスレの1
NGNG前科ねえ(笑。そういう俺が何かレスしたら煽るって粘着っていうんじゃないの?
17455
NGNGNGNG
NGNG
某所の「オリジナルスレの1 うぉっちスレ」も盛り上がってきました。
177オリジナルスレの1
NGNGいまちゃんと2.2系のソースを見てみたら、こんな風になってる。
static inline struct task_struct ** find_empty_process(void)
{
struct task_struct **tslot = NULL;
if ((nr_tasks < NR_TASKS - MIN_TASKS_LEFT_FOR_ROOT) || !current->uid)
tslot = get_free_taskslot();
return tslot;
}
MIN_TASKS_LEFT_FOR_ROOTはtasks.hで#define MIN_TASKS_LEFT_FOR_ROOT 4
と定義されてるから、4つのプロセスだけROOTのメンテ用に残されてる。
だから、ちゃんと動くはず。
これでも動かないとなると、搭載物理メモリ量に対して起動できるプロセスが
多すぎるんだね。メモリアロケーションで失敗するよりも、
retval = -EAGAIN;
if (p->user) {
if (atomic_read(&p->user->count) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->count);
}
こっちのチェックで失敗するようにNR_TASKSを小さな値にして再構築するべきだね。
2.4系ではNR_TASKSは搭載物理メモリ(MB)*64になってる。例えば32MB積んでるなら
32*64で2048個。
でも512個って8MBのメモリのマシン用の設定なんだよね。55がそんな少ないメモリの
マシンを使ってるとは思えないんだよなあ。または既に増やして再構築済みとか?
static inline struct task_struct ** find_empty_process(void)
{
struct task_struct **tslot = NULL;
if ((nr_tasks < NR_TASKS - MIN_TASKS_LEFT_FOR_ROOT) || !current->uid)
tslot = get_free_taskslot();
return tslot;
}
MIN_TASKS_LEFT_FOR_ROOTはtasks.hで#define MIN_TASKS_LEFT_FOR_ROOT 4
と定義されてるから、4つのプロセスだけROOTのメンテ用に残されてる。
だから、ちゃんと動くはず。
これでも動かないとなると、搭載物理メモリ量に対して起動できるプロセスが
多すぎるんだね。メモリアロケーションで失敗するよりも、
retval = -EAGAIN;
if (p->user) {
if (atomic_read(&p->user->count) >= p->rlim[RLIMIT_NPROC].rlim_cur)
goto bad_fork_free;
atomic_inc(&p->user->count);
}
こっちのチェックで失敗するようにNR_TASKSを小さな値にして再構築するべきだね。
2.4系ではNR_TASKSは搭載物理メモリ(MB)*64になってる。例えば32MB積んでるなら
32*64で2048個。
でも512個って8MBのメモリのマシン用の設定なんだよね。55がそんな少ないメモリの
マシンを使ってるとは思えないんだよなあ。または既に増やして再構築済みとか?
178オリジナルスレの1
NGNG自作自演疑惑の煽りとかコピペの煽りじゃなくて、もうちっと技術的な煽りは
出来ないんかい?ちょっと難しい題材提示するとかさあ。
これじゃあ技術的な話に付いてこれないって言うのを認めてるようなもんだぞ。
でもjiffiesの増分を変えるとかいう、ソースサーバーの電源を立ち上げて
3分で分かるような簡単な質問はやめてくれよな。つまんないし勉強にもならない。
あと、全く情報がないのとか不可能な題材も勘弁な。
出来ないんかい?ちょっと難しい題材提示するとかさあ。
これじゃあ技術的な話に付いてこれないって言うのを認めてるようなもんだぞ。
でもjiffiesの増分を変えるとかいう、ソースサーバーの電源を立ち上げて
3分で分かるような簡単な質問はやめてくれよな。つまんないし勉強にもならない。
あと、全く情報がないのとか不可能な題材も勘弁な。
179login:Penguin
NGNG180login:Penguin
NGNG>>オリ1 殿
デバイスドライバ作りにおいて、カーネルスレッドを起こしたとき
rmmodするときはまず先に殺しとかないと文句垂れられるけど
あれってシグナル受け取るか共有メモリ使うかとかする必要が
あってけっこうめんどくさいよね。
かといって手を抜くわけにもいかないし。
なんかいいスケルトンとか、サンプルになるソースってある?
デバイスドライバ作りにおいて、カーネルスレッドを起こしたとき
rmmodするときはまず先に殺しとかないと文句垂れられるけど
あれってシグナル受け取るか共有メモリ使うかとかする必要が
あってけっこうめんどくさいよね。
かといって手を抜くわけにもいかないし。
なんかいいスケルトンとか、サンプルになるソースってある?
181オリジナルスレの1
NGNG>>180
とりあえず、サンプルは探してみる、ちょっとまってな。
なかったら自分でこさえてみるよ。
でもそこまで分かってるんなら、多分それ以外の方法はないし、自分で
出来るんじゃないか?(笑
ところでLinuxってNT/W2KでいうWaitForMultipleObjectsみたいな
関数はないの?これがあれば、カーネルスレッドのWorkItemでの待ちと
終了用のイベントの待ちを同時に行えてエレガントなコードに出来ると
思うんだけど。
とりあえず、サンプルは探してみる、ちょっとまってな。
なかったら自分でこさえてみるよ。
でもそこまで分かってるんなら、多分それ以外の方法はないし、自分で
出来るんじゃないか?(笑
ところでLinuxってNT/W2KでいうWaitForMultipleObjectsみたいな
関数はないの?これがあれば、カーネルスレッドのWorkItemでの待ちと
終了用のイベントの待ちを同時に行えてエレガントなコードに出来ると
思うんだけど。
NGNG
NGNG
>>181
一応自分でも作ったんだよね〜。
でもジュウザなみに我流なんで、何とかしたいなあと。
今使ってる方法は共通エリアに終了フラグを作っといて、
終わりたいときはcleanupモジュールでそのフラグ立てて
インたら_sleep_onですぐ寝ると。で、カーネルスレッド側で
ループの先頭でそのフラグを見たら適当に終了処理して
cleanupで寝てる人を起こす。
なんか危なっかしい(正常ルートしか考慮してないし)ので
上手い方法ご教示プリーズ
一応自分でも作ったんだよね〜。
でもジュウザなみに我流なんで、何とかしたいなあと。
今使ってる方法は共通エリアに終了フラグを作っといて、
終わりたいときはcleanupモジュールでそのフラグ立てて
インたら_sleep_onですぐ寝ると。で、カーネルスレッド側で
ループの先頭でそのフラグを見たら適当に終了処理して
cleanupで寝てる人を起こす。
なんか危なっかしい(正常ルートしか考慮してないし)ので
上手い方法ご教示プリーズ
NGNG
NGNG
>>185
ループの最中に必ずスケジューラを呼ぶついでに
そのへんの終了プロセスを一手に引き受けてくれるような
便利な仕組みがあったら欲しいんだよね。
そういう便利ルーチンが用意されてないとなると、自分で
適当に作るしかないってことかな? ・・・なんで用意してないんだろ。
余談だけどRT-Linuxはその辺が標準でサポートされてて、
ブッ殺すって心の中で思ったならッ!
その時スデにプロセスは終わっているんだッ!
って感じで便利だったよ。
ループの最中に必ずスケジューラを呼ぶついでに
そのへんの終了プロセスを一手に引き受けてくれるような
便利な仕組みがあったら欲しいんだよね。
そういう便利ルーチンが用意されてないとなると、自分で
適当に作るしかないってことかな? ・・・なんで用意してないんだろ。
余談だけどRT-Linuxはその辺が標準でサポートされてて、
ブッ殺すって心の中で思ったならッ!
その時スデにプロセスは終わっているんだッ!
って感じで便利だったよ。
187login:Penguin
NGNGまだやってんのか(ププ
NGNG
>>187
うるせえよ、ヴァカ。
うるせえよ、ヴァカ。
NGNG
NGNG
今見たけど、きもいね1。
真・粘着厨房と呼ぼう。
真・粘着厨房と呼ぼう。
NGNG
粘着対粘着
この勝負いかに!?
この勝負いかに!?
192login:Penguin
NGNGさらなるネタ希望age
タスク切り替えのコストとか解説が欲しい今日この頃
タスク切り替えのコストとか解説が欲しい今日この頃
NGNG
1は大阪の事件で・・・
だからあまり追い込むなと・・・
だからあまり追い込むなと・・・
195粘着じゃないぞ
NGNGうん。その方が良いと思うぞ。
どっか別な場所に情報上げたら教えてくれ。
粘着も良くかも知れないが 藁
どっか別な場所に情報上げたら教えてくれ。
粘着も良くかも知れないが 藁
196オリジナルスレの1
NGNG自作自演に疲れました。探さないでください。
スレが伸びるのは自作自演と煽りばかり、虚しくなりました。
スレが伸びるのは自作自演と煽りばかり、虚しくなりました。
NGNG
ヽ ♪刺しちゃうぞォ〜〜♪ ∩_∩
l 」 ∧_∧ ∩_∩ ∩_∩ ( ´Д⊂ヽイヤー
‖( ゚∀゚ ) ガオー! ( ´Д⊂ヽママー ( ´Д⊂ヽウグゥ⊂ ノ
⊂ つ ⊂ ノ ∩_∩ ⊂ ノ 人 Y
人 Y 人 Y ( ´Д⊂ヽウワアン人 Y し (_)
し(_) .∩_∩し (_) ⊂ ノ し (_) ∩_∩
( ´Д⊂ヽセンセーイ 人 Y ( ´Д⊂ヽヤダー
⊂ ノ し (_) ∩_∩ ⊂ ノ
人 Y ∩_∩ ( ´Д⊂ヽシヌウ 人 Y
し (_) ( ´Д⊂ヽタスケテ⊂ ノ し (_)
⊂ ノ 人 Y
人 Y し (_)
し (_)
========================================
∩_∩ _ ∩_∩ lヽ
(。Д。⊂ `つ ⊂⌒~⊃。Д。)⊃ l 」 ∧_∧
' ' '' ''' '''' ' ' ' ' ,,.,,.,.,..,_ ' '' ' ' '' '' ' ' ∩_∩ _ ‖( ゚∀゚ ) ガオー
⊂l:;:;:;;⊂ ⌒⊃ (。Д。⊂ `つ ⊂ )
'' '' ' ' '' ' '' '' ' ∩_∩ ' ' '' ''' ''' ' ' ' ' ' ' | | |
⊂⌒~⊃。Д。)⊃ (__)_)
∩_∩ '' ' ' ' '' ''' '' ''''
⊂⌒~⊃。Д。)⊃ ,,.,,.,.,..,_
'''' ' '' ' '' ' ' ' '' ∩_∩ _ ⊂l:;:;:;;⊂ ⌒⊃
(。Д。⊂ `つ '' '' ' ' '' ' '' '' '
' ' '' ''' ''' ' ' ' ' ' '
l 」 ∧_∧ ∩_∩ ∩_∩ ( ´Д⊂ヽイヤー
‖( ゚∀゚ ) ガオー! ( ´Д⊂ヽママー ( ´Д⊂ヽウグゥ⊂ ノ
⊂ つ ⊂ ノ ∩_∩ ⊂ ノ 人 Y
人 Y 人 Y ( ´Д⊂ヽウワアン人 Y し (_)
し(_) .∩_∩し (_) ⊂ ノ し (_) ∩_∩
( ´Д⊂ヽセンセーイ 人 Y ( ´Д⊂ヽヤダー
⊂ ノ し (_) ∩_∩ ⊂ ノ
人 Y ∩_∩ ( ´Д⊂ヽシヌウ 人 Y
し (_) ( ´Д⊂ヽタスケテ⊂ ノ し (_)
⊂ ノ 人 Y
人 Y し (_)
し (_)
========================================
∩_∩ _ ∩_∩ lヽ
(。Д。⊂ `つ ⊂⌒~⊃。Д。)⊃ l 」 ∧_∧
' ' '' ''' '''' ' ' ' ' ,,.,,.,.,..,_ ' '' ' ' '' '' ' ' ∩_∩ _ ‖( ゚∀゚ ) ガオー
⊂l:;:;:;;⊂ ⌒⊃ (。Д。⊂ `つ ⊂ )
'' '' ' ' '' ' '' '' ' ∩_∩ ' ' '' ''' ''' ' ' ' ' ' ' | | |
⊂⌒~⊃。Д。)⊃ (__)_)
∩_∩ '' ' ' ' '' ''' '' ''''
⊂⌒~⊃。Д。)⊃ ,,.,,.,.,..,_
'''' ' '' ' '' ' ' ' '' ∩_∩ _ ⊂l:;:;:;;⊂ ⌒⊃
(。Д。⊂ `つ '' '' ' ' '' ' '' '' '
' ' '' ''' ''' ' ' ' ' ' '
199名無しさん
NGNGおいおい、とんでもないオナニースレだな。
自分で気持ち悪い粘着ぶり晒しといて
「粘着がいるから」ハァ?
イタ過ぎて笑うしかないねこりゃ。
じゃ、ここを代表して最後に
>スレが伸びるのは自作自演と煽りばかり
オマエノナー
自分で気持ち悪い粘着ぶり晒しといて
「粘着がいるから」ハァ?
イタ過ぎて笑うしかないねこりゃ。
じゃ、ここを代表して最後に
>スレが伸びるのは自作自演と煽りばかり
オマエノナー
NGNG
201login:Penguin
NGNG home > 社会 > 速報
おすすめ最新情報
コンフェデ決勝
日本は準優勝
巨泉コラム
ある裁判結果
勉強もゲーム風
ネットで学習塾ソフト
児童刺殺事件
出頭要請の当日に凶行
Popup選挙区
よくわかる都議選情勢
読者の書評
つんく著『LOVE論』
プロ野球
巨人5−0阪神
朝日新聞社から
アサヒ・コムから
問い合わせ
新聞購読のご案内
写真ニュース
「エリート校なら死刑確実」児童殺傷容疑者が犯行認める 大阪府池田市の大阪教育大学付属池田小学校で児童ら23人が殺傷された事件で、逮捕された元伊丹市職員宅間守容疑者(37)=池田市新町=は池田署の捜査本部の調べに対し、「エリート校のインテリの子どもを殺せば、確実に死刑になると思った」と、学校での殺害を認める供述をしていることが10日、分かった。
また、凶器の包丁は事件当日の8日朝、池田市内の刃物店で購入し「人を殺すために買った」と供述しているという。
一方、10日夜に接見した弁護士は「宅間容疑者は『死刑にしてくれと言ったことはない』と話している」と述べた。(20:57)
関連情報
特集・大阪児童殺傷事件
社会最新ニュース
「エリート校なら死刑確実」児童殺傷容疑者が犯行認める(20:57)
工場で有毒ガス漏れ、従業員50人に異状6人入院 山口(19:53)
札幌の祭り会場に爆破予告、威力業務妨害容疑で男逮捕(19:49)
外国人旅行者に不人気ジャパン 「出入」差1300万人(19:25)
軽乗用車がトラックに正面衝突、3人死傷 山形・上山(16:54)
血管や皮膚の再生医療に指針検討 厚労省が専門委設置(16:48)
市議団企画の「つくる会」講演会に教育委員を招請 埼玉(16:38)
草刈り業務で財団法人が1000万円水増し請求 茨城(16:31)
ノートパソコン18台盗まれる 埼玉・蕨の電器店(13:47)
大津の中学校にも包丁持った男 すぐ保護(13:34)
おすすめ最新情報
コンフェデ決勝
日本は準優勝
巨泉コラム
ある裁判結果
勉強もゲーム風
ネットで学習塾ソフト
児童刺殺事件
出頭要請の当日に凶行
Popup選挙区
よくわかる都議選情勢
読者の書評
つんく著『LOVE論』
プロ野球
巨人5−0阪神
朝日新聞社から
アサヒ・コムから
問い合わせ
新聞購読のご案内
写真ニュース
「エリート校なら死刑確実」児童殺傷容疑者が犯行認める 大阪府池田市の大阪教育大学付属池田小学校で児童ら23人が殺傷された事件で、逮捕された元伊丹市職員宅間守容疑者(37)=池田市新町=は池田署の捜査本部の調べに対し、「エリート校のインテリの子どもを殺せば、確実に死刑になると思った」と、学校での殺害を認める供述をしていることが10日、分かった。
また、凶器の包丁は事件当日の8日朝、池田市内の刃物店で購入し「人を殺すために買った」と供述しているという。
一方、10日夜に接見した弁護士は「宅間容疑者は『死刑にしてくれと言ったことはない』と話している」と述べた。(20:57)
関連情報
特集・大阪児童殺傷事件
社会最新ニュース
「エリート校なら死刑確実」児童殺傷容疑者が犯行認める(20:57)
工場で有毒ガス漏れ、従業員50人に異状6人入院 山口(19:53)
札幌の祭り会場に爆破予告、威力業務妨害容疑で男逮捕(19:49)
外国人旅行者に不人気ジャパン 「出入」差1300万人(19:25)
軽乗用車がトラックに正面衝突、3人死傷 山形・上山(16:54)
血管や皮膚の再生医療に指針検討 厚労省が専門委設置(16:48)
市議団企画の「つくる会」講演会に教育委員を招請 埼玉(16:38)
草刈り業務で財団法人が1000万円水増し請求 茨城(16:31)
ノートパソコン18台盗まれる 埼玉・蕨の電器店(13:47)
大津の中学校にも包丁持った男 すぐ保護(13:34)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「習氏より先に言うとは…」 トランプ氏同盟国発言、日本政府内に困惑 [蚤の市★]
- 第2次大戦に触れトランプ氏「米中は同盟国」、当時は中華民国…「抗日」巡る中国の言説補強する恐れ ★7 [蚤の市★]
- 高市総理「日米は非常に強い絆で結ばれた同盟国」 トランプ大統領の“中国は同盟国だった”発言受け [首都圏の虎★]
- 【野球】広島東洋カープの矢野雅哉・前川誠太選手を書類送検 ゾンビたばこを巡る容疑 広島県警 [Ailuropoda melanoleuca★]
- 「暗い未来に子供を産みたくない…」それでも左派よりも右派の方が「たくさん子供を産む」のはなぜか【米研究】 [首都圏の虎★]
- 【速報】 ベッセント米財務長官、円安は問題であると高市政権と確認 [お断り★]
- 【同時視聴】博衣こよりのえちえち初配信 Part2
- ガールズ&パンツァー第9話「絶対絶命です!」実況スレ🏡21時スタート
- ハッタショって人から「ハッタショ」と指摘されるのはめちゃくちゃ嫌がるよな
- 【高市日本】高市と石破、それぞれの訪米の時のおやびんがこちら [165981677]
- 今も米軍で使われる「ガンホー」は中国語由来だった。米中はWW2で「同盟国」 トランプ大統領はフライング・タイガースを称賛 [931948549]
- 女性「たのしいピクニック女は、男は好きでも女が見るとめっちゃ不安になる。生きる力がない女なのよ。それが分からないの?」 [592058334]