|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > s > sem_overview - 約束事その他の説明 sem_overview - 約束事その他の説明 - Linux コマンド集 一覧表名前sem_overview - POSIX セマフォの概要 説明
POSIX セマフォを使用すると、プロセスやスレッド間でその動作を
同期させることができる。
名前付きセマフォ
名前付きセマフォは
/somename
という形式の名前で識別される。
sem_open
(3) に同じ名前を渡すことにより、2 つのプロセス間で同じ名前のセマフォ
に対し操作を行うことができる。
名前なしセマフォ (メモリベース・セマフォ)
名前なしセマフォは名前を持たない。その代わり、セマフォは、
複数スレッド間で共有されたメモリ領域、もしくは複数プロセス間で
共有されたメモリ領域に置かれる (前者を
スレッド共有セマフォ (thread-shared semaphore)
、後者を
プロセス共有セマフォ (process-shared semaphore)
と呼ぶ)。スレッド共有セマフォは、同じプロセス内のスレッド間で共有された
メモリ領域、例えば大域変数 (global variable) に配置される。
プロセス共有セマフォは、共有メモリ領域 (例えば、
semget
(2) を使って作成できる System V 共有メモリ・セグメントや
shm_open
(3) を使って作成できる POSIX 共有メモリ・オブジェクト)
内に配置しなければならない。
Linux 固有の詳細事項
バージョンバージョン 2.6 より前のカーネルでは、Linux は 名前なしのスレッド共有セマフォのみをサポートしていた。 Linux 2.6 と NPTL スレッド実装を提供している glibc が入った システムでは、POSIX セマフォの完全な実装が提供される。 持続性POSIX 名前付きセマフォはカーネル内で保持される。 sem_unlink ()で削除されなければ、セマフォは システムがシャットダウンされるまで存在し続ける。 リンクPOSIX セマフォ API を使用したプログラムは cc -lrt でコンパイルし、リアルタイムライブラリ librt とリンクしなければならない。 ファイルシステム経由での名前付きセマフォへのアクセスLinux では、名前付きセマフォは仮想ファイルシステム (virtual file system) 内に sem. nameという形の名前で作成される。仮想ファイルシステムは通常 /dev/shm 以下にマウントされる。 準拠POSIX.1-2001. 注意System V セマフォ ( semget (2), semop (2) など) は古いセマフォ API である。 POSIX セマフォは System V よりも 簡単で、うまく設計されたインタフェースを提供している。 一方で、POSIX セマフォは System V セマフォと比べると 利用できるシステムが少ない (特に、古いシステムでは少ない)。 例各種の POSIX セマフォ関数を使用した例が sem_wait (3) に記載されている。 関連項目
sem_close
(3),
sem_destroy
(3),
sem_init
(3),
sem_getvalue
(3),
sem_open
(3),
sem_post
(3),
sem_unlink
(3),
sem_wait
(3),
pthreads
(7)
|
|