理系学生日記

おまえはいつまで学生気分なのか

c

スレッド

スレッドはプロセスと良く似ており、1 つのプログラムを同時に並行して実行することができる。概念的にはスレッドはプロセスの中で走る。つまりスレッドはプロセスよりも粒度の細かい概念である。 プロセスの場合、子プロセスのメモリ空間やファイルディスク…

ゾンビプロセス

子プロセスが終了したときに親プロセスが wait システムコールを呼び出していないとき、子プロセスはゾンビプロセスになる。ps コマンドでは、ゾンビプロセスのステータスは Z と表示される。 一方、親プロセスが wait を呼び出さずに終了したときは、子プロ…

Process Termination

プロセスの終了方法は大きく分けると以下のように分けられる。 exit 関数の呼び出し main 関数の終了 シグナルに対する反応としての異常終了 異常終了を引き起こすシグナルとしては、SIGBUS、SIGSEGV、SIGFPE などがある。SIGINT は Ctrl + C の押下で送信さ…

Signals

シグマルは、プロセスに対する特別なメッセージである。シグナルを受けたプロセスは、即座に(非同期に)そのシグナルを処理する。各シグナルにはデフォルトの処理があり、プログラムで明示的にシグナルハンドラを指定していない場合は、あるいはそのシグナル…

Process Scheduling

Linux では、どのプロセスが最初に実行されるか、あるいは、割り込みがかかるまでにどれだけの時間がかかるか、といったことをスケジューラは保証しない。ただし、各プロセスに優先度(niceness)を設定することはできる。 デフォルトでは、各プロセスが 0 の …

Process の生成

Linux におけるプロセス ID は、ユニークな process ID によって識別される。また、init を除く全てのプロセスは親プロセス ID (ppid) を持っており、これによって Linux 上のプロセスはツリーで表現できる。 プロセス ID を参照する際は、sys/types.h で定…

Shared Libraries

共有ライブラリは、アーカイブとよく似ているが、いくつかの重要な違いがある。 共有ライブラリをリンクした実行ファイルには共有ライブラリのコードは含まれず、参照のみを含む アーカイブのようにオブジェクトファイルをグルーピングしたものではなく、1 …

Archive

アーカイブは、オブジェクトファイルを 1 つのファイルにまとめたものである。リンカにアーカイブを渡すと、リンカは必要なオブジェクトファイルをアーカイブから抽出し、オブジェクトファイルが直接渡されたかのように扱う。 アーカイブは ar コマンドで作…

advanced linux programming

これ。 ISBN:978-0735710436:detail assert アプリケーションのコーディングにおける目標は、異常発生時にできるだけ早くプログラムを終了させるようにすること。というわけで、積極的に assert を使うべき。assert の果たす役割は、ランタイムチェックはも…

kqueue によるファイル監視の際は EV_CLEAR を忘れないように

c

kqueue(2) を使うと、様々なイベント待ちが可能になる。例えば、特定のソケッチに対する入出力があった場合や、ファイルに何らかの書き込みがあったときに何かの処理を実行すると言った具合。kqueue は使ったことがなかったので、一度試しに使ってみようかと…

Shebang が interpreter を呼び出す仕組み

c

ぼくは参加してないんだけどシェル講習会みたいなのがあるっぽくて、そこで Shebang の話を 60 分するらしいんだけど、Shebang の話っていったって何を話すんだろう。。。 Shebang はご存知の通り、スクリプトの先頭に書くこんな一行です。 #! interpreter […

socketpair なんてのがあるんだな

c

プロセス間で通信というと,pipe システムコールを 2 つ使って,送信用と受信用ソケット作るだろ常考というのがぼくの中での固定観念としてあったんですけど,なんか socketpair なんてお洒落なものがあるということを知ったりしました.いやリアルで全然知…