Linuxのマルチスレッド:基礎概念とPOSIXスレッドの実践

スレッドの基礎概念スレッドとはプロセスを生成する際、カーネルはプロセス制御ブロック(task_struct)、メモリ空間(mm_struct)、およびページテーブルなどを独自に作成し、仮想アドレスと物理アドレスのマッピングを構築する。一方、スレッドの作成時には新たなtask_structが作成されるが、アドレス空間やページテーブルは親プロセスと共有される。プロセス内の実行経 ...

7月17日 20:02 投稿

Linuxでの読み書きロックの使い方

読み書きロックの概要 読み書きロックはミューテックスの進化版で、読込ロックを取得した場合、複数スレッドが並列/並行で読み込み操作を実行可能です。これにより読み込み処理時のパフォーマンスが向上します。一方で書き込みロックは排他制御を行うため、ミューテックスと同様にシリアライズされます。 Linuxではpthread_rwlock_t型で定義されます。この型を用いてロッ ...

7月15日 19:55 投稿

ZooKeeper を用いたシンプルなサービス登録・検出機能(C++): 接続管理層の実装

ZooKeeper クライアントとの永続的な接続を管理し、自動再接続・監視機能を備えた単一ヒープ生成的なハンドラクラスを C++ で実装します。 コピー禁止基底クラス class CNonCopyable { protected: CNonCopyable() = default; virtual ~CNonCopyable() = default; CNonCopyable(const CNonCopyable&) = delete; CNonCopyable& operator=(const CNonC ...

6月3日 19:26 投稿

OSにおけるスレッドの動作原理と並行制御の基礎

スレッドは、単一のプロセス空間内で独立して実行フローを保持する実行コンテキストです。OSのスケジューラが直接対象とする最小の単位であり、親プロセスのヒープやデータセグメント、ファイルディスクリプタテーブルなどを共有しつつ、独自のスタックやレジスタ状態を保持します。これにより、コンテキストスイッチのオーバーヘッドを抑制しながら並列処理を実現します。 ...

5月23日 20:08 投稿