Index / Reload
ありゃ、Linuxはまだカーネルスタックにレッドゾーンを設けることができなかったですか。それは辛い。ただ、カーネルスタックに置いて良いのはせいぜい NAME_MAXぐらいまでのサイズで、PATH_MAXくらいのサイズだと、もうスタックは避けた方が良い(たとえば、多重割り込みがかかる場合の割り込みスタックで使うと、明らかにまずい)というのが、昔風の感覚です。スタックサイズは昔と変わらないので、このあたりの感覚も、Linuxでも昔と変わってない気がします。(あと、ふつうのUNIXだとスタックはswap out時には主記憶上にないので、利用に 注意が必要ですし...)
sodaさん、情報ありがとうございます。Linuxカーネルのスタックサイズに制限があるのは知っていたのですが想定よりもサイズが小さかったようです。オーバーフローしても警告なしなのはちょっと辛いです。
UNIX系OSは、Linuxも含め、カーネルスタックサイズは固定のものがほとんどだと思います。8kBぐらいが多いと思いますがアーキテクチャによってはconfigで切替え可能です。Linuxの中身は良く知らないんですが、THREAD_SIZE(より若干小さい値)がこのサイズに該当する気がします。
ありゃ、Linuxはまだカーネルスタックにレッドゾーンを設けることができなかったですか。
それは辛い。
ただ、カーネルスタックに置いて良いのはせいぜい NAME_MAXぐらいまでのサイズで、
PATH_MAXくらいのサイズだと、もうスタックは避けた方が良い(たとえば、多重割り込みが
かかる場合の割り込みスタックで使うと、明らかにまずい)というのが、昔風の感覚です。
スタックサイズは昔と変わらないので、このあたりの感覚も、Linuxでも昔と変わってない気が
します。
(あと、ふつうのUNIXだとスタックはswap out時には主記憶上にないので、利用に
注意が必要ですし...)
sodaさん、情報ありがとうございます。
Linuxカーネルのスタックサイズに制限があるのは知っていたのですが想定よりもサイズが小さかったようです。
オーバーフローしても警告なしなのはちょっと辛いです。
UNIX系OSは、Linuxも含め、カーネルスタックサイズは固定のものがほとんどだと思います。
8kBぐらいが多いと思いますがアーキテクチャによってはconfigで切替え可能です。
Linuxの中身は良く知らないんですが、THREAD_SIZE(より若干小さい値)がこのサイズに該当する気がします。