JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... れているマルチプロセッサシステム のことである。メモリーノードへのアクセス時間は、アクセス元の CPU と アクセス先のノードの相対的な位置関係に依存する (これに対し、対称型マルチプロセ ... ッサシステムでは、どの CPU から どのメモリーへのアクセス時間も同じである)。 通常は、 NUMA システムの各 CPU にはローカルのメモリーノードがあり、 そのメモリーノードには、 ... 他の CPU のローカルノードや全ての CPU で 共有されるバス上のメモリーよりも早くアクセスすることができる。 NUMA システムコール Linux カーネルには、次に示す NUMA 関連のシステムコールが実装されてい ... ... , unsigned long maxnode , unsigned flags ); -lnuma でリンクする。 説明 mbind () は、 addr から始まる長さ len バイトの範囲のメモリーに NUMA メモリーポリシーを設定する。 NUMA ポリシーはポリシーモードと 0 個以上のノードから構成される。 メモリーポリシーはどの ... ノードからメモリーを割り当てるかを決定する。 addr と len で指定されたメモリー範囲に、 メモリーの「無名」領域 --- MAP_ANONYMOUS 付きの mmap (2) ... システムコールを使って作成されたメモリー領域 --- や MAP_PRIVATE 付きの mmap (2) を使ってマップされたメモリーマップファイルが含まれている場合、アプリケーションがその ... ... 。これは open (2) と同じである。下記にある他のインターフェースで使用する ファイルディスクリプターを返す。 ftruncate (2) 共有メモリーオブジェクトの大きさを設定する。 mmap (2) 呼び出したプロセスの仮想アドレス空間に共有メモリーオブジェクトを マップする。 munm ... ap (2) 呼び出したプロセスの仮想アドレス空間から 共有メモリーオブジェクトをアンマップする。 shm_unlink (3) 共有メモリーオブジェクト名を削除する。 close (2) shm_open (3) で割り当てられた ... ファイルディスクリプターが不要になった際に、 そのファイルディスクリプターをクローズする。 fstat (2) その共有メモリーオブジェクトについての情報が入った stat 構造体を取得する。 このシステムコールが返す情報には、オブジェクトのサイズ ( st_size ... ... ーはポリシーモードと 0 個以上のノードから構成され、 設定内容は引数 mode , nodemask , maxnode により指定される。 NUMA (非対称メモリーアクセス) マシンでは、CPU により メモリーコントローラーが異なり、距離も異なっている。 メモリーポリシーは、どのノードからメモ ... cy () は、スレッドのデフォルトポリシーを定める。スレッドのポリシーは、 mbind (2) で設定される特定のポリシーにより制御されるメモリー領域以外のスレッドのアドレス空間におけるページの割り当てに適用される。 スレッドのデフォルトポリシーは、 MAP_PRIVATE フラグを ... 指定した mmap (2) を使ってマップされたメモリーマップファイルに対する読み出し専用 (ロードされるだけ) のページの割り当てにも適用される。 また、 MAP_SHARED フラグを指定した ... ... * old_address , size_t old_size , size_t new_size , int flags , ... /* void * new_address */); 説明 mremap () は既存のメモリーマッピングの拡張 (または縮小) を行う。 同時に移動されることもある ( flags 引き数と利用可能な仮想アドレス空間によって決まる)。 ... old_address は拡張 (または縮小) しようとする仮想メモリーブロック の元のアドレスである。 old_address はページ境界に合っていなければ ならない点に注意すること。 old_size は元の仮想メモ ... リーブロックの サイズである。 new_size は要求する変更後の仮想メモリーブロックのサイズである。 5 番目の引き数として new_address を指定することができる。下記の MREMAP_FIXED の説明を参照のこと。 L ... ... y does not have the value IPC_PRIVATE ), or to create a new set. key の値が IPC_PRIVATE の場合、もしくは key に対応する共有メモリーセグメントが存在せず、 shmflg に IPC_CREAT が指定されていた場合、 新しい共有メモリーセグメントを作成する。 作成される共有メモ ... の倍数へと切り上げた (round up) 大きさとなる。 shmflg に IPC_CREAT と IPC_EXCL の両方が指定された場合、 key に対応する共有メモリーセグメントが既に存在すると、 shmget () は失敗し、 errno に EEXIST が設定される (これは open (2) に O_CREAT | O_EXCL を指定し ... ワップ空間を予約した場合は、そのセグメントの変更が必ず成功することが 保証される。スワップ空間の予約を行わなかった場合は、物理メモリーに空きが ないと書き込み時に SIGSEGV を受け取る可能性がある。 proc (5) にある /proc/sys/vm/overcommit_memory ファイルに関する ... ... のすべてのユーザーがこのファイルを読み出すことができる。 /proc/[pid]/map_files/ (kernel 3.3 以降) このサブディレクトリには、 メモリーマップされたファイルに対応するエントリーが置かれる ( mmap (2) 参照)。 エントリーの名前がメモリー領域の (16 進数表現の) 開始ア ... 21:31 3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so ... これらのエントリーが存在するのは MAP_FILE フラグでマッピングされたメモリー領域についてであるが、 Linux での無名の共有メモリー ( MAP_ANON | MAP_SHARED で作成された領域) の実装方法では、 このディレクト ... リに無名の共有メモリーに関するエントリーも存在する。 以下は、 マッピング元のファイルが削除された /dev/zero ファイルでの例である。 lrw-------. 1 ro ... ... のすべてのユーザーがこのファイルを読み出すことができる。 /proc/[pid]/map_files/ (kernel 3.3 以降) このサブディレクトリには、 メモリーマップされたファイルに対応するエントリーが置かれる ( mmap (2) 参照)。 エントリーの名前がメモリー領域の (16 進数表現の) 開始ア ... 21:31 3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so ... これらのエントリーが存在するのは MAP_FILE フラグでマッピングされたメモリー領域についてであるが、 Linux での無名の共有メモリー ( MAP_ANON | MAP_SHARED で作成された領域) の実装方法では、 このディレクト ... リに無名の共有メモリーに関するエントリーも存在する。 以下は、 マッピング元のファイルが削除された /dev/zero ファイルでの例である。 lrw-------. 1 ro ... ... hmid_ds * buf ); 説明 shmctl () は、識別子が shmid の System V 共有メモリーセグメントに対して cmd で指示した制御命令を実行する。 buf 引数は、 shmid_ds 構造体へのポインターである。 この構造体は < sys/ ... his is an ipc_perm structure (see below) that specifies the access permissions on the shared memory segment. shm_segsz 共有メモリーセグメントのサイズ (バイト単位)。 shm_atime Time of the last shmat (2) system call that attached this segment. shm_dtime Tim ... ched tgis segment. shm_ctime Time of creation of segment or time of the last shmctl () IPC_SET operation. shm_cpid その共有メモリーセグメントを作成したプロセスの ID。 shm_lpid ID of the last process that executed a shmat (2) or shmdt (2) system call on th ... ... unlockall(void); 説明 mlock () と mlockall () は、呼び出し元プロセスの仮想アドレス空間の一部または全部を RAM 上にロックし、メモリーがスワップエリアにページングされるのを防ぐ。 munlock () と munlockall () は逆の操作で、それぞれ呼び出し元プロセスの仮想アドレ ... ス空間の一部または全部を ロック解除する。つまり、指定された仮想アドレス範囲のページは カーネルメモリーマネージャーから要求されればスワップアウトするようになる。 メモリーのロックとロック解除はページ単位で行われる。 メモリーのロ ... 、 addr から始まる長さ len バイトのアドレス範囲のページのロックを解除する。 この呼び出しを行った後は、カーネルが、指定されたメモリー範囲を含む 全てのページを外部のスワップ空間に移動できるようになる。 mlockall() と munlockall() mlockall () は呼び出し元プロセ ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。