ジャイアントロック (Giant lock) とは、オペレーティングシステムにおいて、対称型マルチプロセッシングをサポートするために必要なカーネル内の並行性制御を実現するために用いられるロック機構である。

ジャイアントロックでは、スレッドカーネル空間に入る際(たとえばシステムコールの後)、単一の大域的なロックを獲得し、スレッドがユーザー空間に戻る際にロックを開放する。

ユーザー空間のスレッドは複数のプロセッサがあれば並行的に動作するが、この方法ではカーネル空間では一つのスレッドしか動作しないので、他のプロセッサからカーネル空間に入ろうとするスレッドは待機する必要がある。すなわちジャイアントロックではカーネル空間の並行性が失われる。

ジャイアントロックの欠点はこの点にあり、マルチプロセッサのシステムでの性能を低下させてしまう。しかし、ジャイアントロックにはオペレーティングシステムの多数の箇所を変更する必要がなく実装が簡単という利点がある。ジャイアントロックは SMP に対応する方法として初期に用いられることが多い。ジャイアントロックより優れた方法として、現代的なオペレーティングシステムの大半は細粒度ロックを用いる。

関連項目 編集