「システムコール」の版間の差分
提供: セキュリティ
行23: | 行23: | ||
=== システムコールの制限 === | === システムコールの制限 === | ||
* [[Linuxカーネル]]には、[[seccomp]] (secure computing mode) と呼ばれる [[サンドボックス]] があります。 | * [[Linuxカーネル]]には、[[seccomp]] (secure computing mode) と呼ばれる [[サンドボックス]] があります。 | ||
+ | == システムコールのトレース == | ||
+ | [[システムコール]]は、トレースできます。実行中のプロセスの情報を取得したり、記録することができます。 | ||
+ | ;[[FreeBSD]]:ktrace | ||
+ | ;[[Linux]]:[[strace]], [[auditd]] | ||
== 関連項目 == | == 関連項目 == | ||
+ | * [[auditd]] | ||
* [[カーネル]] | * [[カーネル]] | ||
− | <!-- | + | * [[システムモニタリングツール]] |
− | vim: filetype=mediawiki | + | <!-- vim: filetype=mediawiki |
--> | --> |
2015年12月19日 (土) 21:49時点における最新版
システムコール (System Call) とは、 OS の カーネル の機能を呼び出すための仕組みです。
読み方
- システムコール
- しすてむ こーる
- system call
- しすてむ こーる
概要
システムコール は、OS (カーネル) が一般のプログラムに提供する機能 や OS (カーネル) が提供する機能を呼び出すための API のことをいいます。
プログラムは、入出力装置や物理メモリを直接操作することができません。そうしたプログラムの変わりに、カーネル が処理を実行します。 ライブラリ関数とシステムコールがありますが、 fopen などの関数は、内部的に システムコール を呼び出しています。 ファイル I/O 系のライブラリ関数は、バッファリングの機能などを持っているため、直接 システムコール を呼び出すよりもパフォーマンスが良いかもしれません。
UNIX のシステムコール
- fopen / fread / fgets などの関数は、ライブラリ関数です。
- open / read / write などの関数は、システムコール です。
ライブラリ関数を利用する利点
- 移植性(ポータビリティ)の向上
- システムコール は、OS によって変わってきます。
- バッファリングによるパフォーマンスアップ
- 開発効率
- ライブラリ関数がシステムコールをラップしてくれているため、短いコードで簡単に利用できる。
システムコールの制限
システムコールのトレース
システムコールは、トレースできます。実行中のプロセスの情報を取得したり、記録することができます。