ふつうのLinuxプログラミングのまとめ




09/05/14

システムコール


ハードウェアを操作できるのはカーネルだけ。
そのカーネルに対して仕事をお願いするときにシステムコールを呼ぶ。

open,read,write,etc...

プログラム中でシステムコールを呼び出す場合、
n = read(fd,buf,sizeof buf);
というように、関数呼び出しとして利用していたものが
実はシステムコールだったのだ。

ライブラリ

ライブラリにはライブラリ関数とマクロが収められている。
これまで関数として利用していたものは、システムコールの呼び出し又はライブラリ関数の呼び出しだったのだ。
標準Cライブラリ(libc)なら /lib に入ってる。
ライブラリの中身は関数とマクロで、それらからシステムコールを呼び出していることもある。たとえば、printfは内部でwriteってシステムコールを呼び出している。


API

APIとはシステムコールの呼び出しではない。
libcのAPIとは関数やマクロのこと。
カーネルのAPIはシステムコールのこと。
よくいう"Win32 API"ってのは、"WindowsOSのWin32サブシステムのAPI"のこと。

ファイル、プロセス、ストリーム

Linuxではハードウェアもファイルとして扱われる。 /dev とかに置かれてる。
プロセスはプログラムが実行されることによって作られる。 ps ax で走ってるプロセスを確認できる。
ストリームは byte stream の意。バイナリデータの流れ。

プロセス-プロセス間とかプロセス-ファイル間のバイナリデータの流れがストリーム。


名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月14日 20:16