※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ふつうの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 の意。バイナリデータの流れ。

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


名前:
コメント:
|