「システムコール」の版間の差分

提供: セキュリティ
移動: 案内検索
 
行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 によって変わってきます。
  • バッファリングによるパフォーマンスアップ
  • 開発効率
    • ライブラリ関数がシステムコールをラップしてくれているため、短いコードで簡単に利用できる。

システムコールの制限

システムコールのトレース

システムコールは、トレースできます。実行中のプロセスの情報を取得したり、記録することができます。

FreeBSD
ktrace
Linux
strace, auditd

関連項目