サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
ether.dip.jp
以下はprintf()関数を使わずに、システムコールを使って、じかに標準出力への出力を行っています。 // syscall.c #include int main(void){ const char message[] = "Hello\n"; int len = sizeof(message); write(1, message, len); exit(0); } よくシステムコールを利用したプログラムに登場するこのような関数群は、実際にはシステムコールそのものではなく、POSIXの規定にある関数を実装したライブラリ関数であることになります。これらのライブラリ関数を呼び出すことで、内部に実装された各機能に対応するシステムコールを発行していることになります。 実際のシステムコール 実際のシステムコールの利用では、/usr/include/asm/unistd.hに定義されているシステム
バックグラウンドで呼び出しがあるまで待機状態にあり、呼び出されるときにだけ動作する特殊なプロセスとして、デーモンプロセスがあります。デーモンプロセスは名前こそデーモンとついてますが、基本的に通常のプロセスと同じです。しかし、その動作には通常のプロセスとは異なる点がいくつかあります。具体的にはfork()、exec()系などのプロセス生成の過程において、実行するシステムコールは通常のプロセスと変わらないのですが、デーモンプロセスの特徴を実現するために行うプロセス生成の工程が異なります。デーモンプロセスを作成するためには以下のような処理が必要になります。 ・ファイスディスクリプタのクローズ ・端末セッションとプロセスグループの切り離し ・ワーキングディレクトリの移動 ・ファイル生成マスク値の変更 ・SIGCHILDシグナルの処理 以上の項目はデーモンプロセスを生成する上で、実装すべき処理になり
pdflushを制御してLinuxのキャッシュバッファのチューニングを考えてみたいと思います。 kernel2.6系から書き込みに関するキャッシュバッファ管理はpdflushによって実現されています。これはkernel2.4系の時代にはbdflush+kupdateの組み合わせで実現されていたものです。このpdflushを制御することにより、ディスクI/Oを向上させる可能性があります。 ※ 当然ですが、パフォーマンスが向上するか否かは環境によります。 ・Linuxの遅延書き込み機構(ざっくりと) 一応、前提となる遅延書き込みについて簡単に触れておくと、データの書き込みは1次記憶装置から2次記憶装置へ・・・みたいな感じで、徐々に記憶容量の多いほうに渡されていきます。一般的に記憶容量が多くなるに反比例して記憶装置へのアクセスは遅くなりますね。 要はメモリからHDDへのディスク媒体にデータが書
前回ファイル名はハードリンクである、というお話(こちらで復習)をしましたが、ファイル名がハードリンクであるならばこのリンクを解除するとどうなるのでしょうか?単にリンクを解除するということだけを考えるとリンクは解除され、フ [...]
ゾンビ状態とはpsコマンド上では実際にはプロセスは終了しているが、プロセスが完全にクリアされていない状態を指します。具体的にどのような場合に起こり、どのような状態になっているのかが問題です。この問題をとく鍵がプロセスのライフサイクルにあります。 Linuxではexit()でプロセスが終了するとき、すぐにリソースを解放するのではなく、いったんゾンビ状態(TASK_ZOMBIE)に遷移します。これは親プロセスがwait()システムコールを呼び、その子プロセスの終了状態を得られるような仕組みを提供しているからです。 つまりプロセスはゾンビ状態を経て、親プロセスのwait()が終了すると完全に破棄されます。このことから親プロセスのwait()が実行される前に子プロセスが終了している場合、子プロセスはゾンビプロセスであるといえます。 例えば意図的にゾンビ状態を作るプログラムを考えてみます。 //
このページを最初にブックマークしてみませんか?
『Linuxhack.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く