OSDN Git Service

Convert release and draft pages to UTF-8.
[linuxjm/jm.git] / manual / LDP_man-pages / draft / man2 / mlock.2
index e8823e8..346c1fd 100644 (file)
 .\" Updated 2006-02-14, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
 .\" Updated 2008-11-10, Akihiro MOTOKI, LDP v3.13
 .\"
-.\"WORD:       unlock                  ¥í¥Ã¥¯²ò½ü
-.\"WORD:       previlege               Æø¢
+.\"WORD:       unlock                  ロック解除
+.\"WORD:       previlege               特権
 .\"
 .TH MLOCK 2 2008-09-25 "Linux" "Linux Programmer's Manual"
 .\"O .SH NAME
 .\"O mlock, munlock, mlockall, munlockall \- lock and unlock memory
-.SH Ì¾Á°
-mlock \- ¥á¥â¥ê¤Î¥í¥Ã¥¯¤È¥í¥Ã¥¯²ò½ü¤ò¹Ô¤¦
+.SH 名前
+mlock \- メモリのロックとロック解除を行う
 .\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.SH 書式
 .nf
 .B #include <sys/mman.h>
 .sp
@@ -54,7 +54,7 @@ mlock \- 
 .B int munlockall(void);
 .fi
 .\"O .SH DESCRIPTION
-.SH ÀâÌÀ
+.SH 説明
 .\"O .BR mlock ()
 .\"O and
 .\"O .BR mlockall ()
@@ -70,19 +70,19 @@ mlock \- 
 .\"O once more to be swapped out if required by the kernel memory manager.
 .\"O Memory locking and unlocking are performed in units of whole pages.
 .BR mlock ()
-¤È
+と
 .BR mlockall ()
-¤Ï¤½¤ì¤¾¤ì¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î²¾ÁÛ¥¢¥É¥ì¥¹¶õ´Ö¤Î°ìÉô¤Þ¤¿¤ÏÁ´Éô¤ò
-RAM ¾å¤Ë¥í¥Ã¥¯¤·¡¢¥á¥â¥ê¤¬¥¹¥ï¥Ã¥×¥¨¥ê¥¢¤Ë¥Ú¡¼¥¸¥ó¥°¤µ¤ì¤ë¤Î¤òËɤ°¡£
+はそれぞれ、呼び出し元プロセスの仮想アドレス空間の一部または全部を
+RAM 上にロックし、メモリがスワップエリアにページングされるのを防ぐ。
 .BR munlock ()
-¤È
+と
 .BR munlockall ()
-¤ÏµÕ¤ÎÁàºî¤Ç¡¢¤½¤ì¤¾¤ì¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î²¾ÁÛ¥¢¥É¥ì¥¹¶õ´Ö¤Î°ìÉô¤Þ¤¿¤ÏÁ´Éô¤ò
-¥í¥Ã¥¯²ò½ü¤¹¤ë¡£¤Ä¤Þ¤ê¡¢»ØÄꤵ¤ì¤¿²¾ÁÛ¥¢¥É¥ì¥¹ÈϰϤΥڡ¼¥¸¤Ï
-¥«¡¼¥Í¥ë¥á¥â¥ê¥Þ¥Í¡¼¥¸¥ã¡¼¤«¤éÍ׵ᤵ¤ì¤ì¤Ð¥¹¥ï¥Ã¥×¥¢¥¦¥È¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¡£
-¥á¥â¥ê¤Î¥í¥Ã¥¯¤È¥í¥Ã¥¯²ò½ü¤Ï¥Ú¡¼¥¸Ã±°Ì¤Ç¹Ô¤ï¤ì¤ë¡£
+は逆の操作で、それぞれ呼び出し元プロセスの仮想アドレス空間の一部または全部を
+ロック解除する。つまり、指定された仮想アドレス範囲のページは
+カーネルメモリマネージャーから要求されればスワップアウトするようになる。
+メモリのロックとロック解除はページ単位で行われる。
 .\"O .SS "mlock() and munlock()"
-.SS "mlock() ¤È munlock()"
+.SS "mlock()  munlock()"
 .\"O .BR mlock ()
 .\"O locks pages in the address range starting at
 .\"O .I addr
@@ -93,15 +93,15 @@ RAM 
 .\"O guaranteed to be resident in RAM when the call returns successfully;
 .\"O the pages are guaranteed to stay in RAM until later unlocked.
 .BR mlock ()
-¤Ï
+は
 .I addr
-¤«¤é»Ï¤Þ¤ëŤµ
+から始まる長さ
 .I len
-¥Ð¥¤¥È¤Î¥¢¥É¥ì¥¹ÈϰϤΥڡ¼¥¸¤ò¥í¥Ã¥¯¤¹¤ë¡£
-¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
-»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹ÈϰϤò´Þ¤àÁ´¤Æ¤Î¥Ú¡¼¥¸¤Ï
-RAM ¤Ë»Ä¤ê³¤±¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¡£
-¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ï¸å¤Ç¥í¥Ã¥¯²ò½ü¤µ¤ì¤ë¤Þ¤Ç RAM ¤Ë»Ä¤ê³¤±¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¡£
+バイトのアドレス範囲のページをロックする。
+呼び出しが成功した場合には、
+指定されたアドレス範囲を含む全てのページは
+RAM に残り続けることが保証される。
+これらのページは後でロック解除されるまで RAM に残り続けることが保証される。
 
 .\"O .BR munlock ()
 .\"O unlocks pages in the address range starting at
@@ -112,15 +112,15 @@ RAM 
 .\"O After this call, all pages that contain a part of the specified
 .\"O memory range can be moved to external swap space again by the kernel.
 .BR munlock ()
-¤Ï¡¢
+は、
 .I addr
-¤«¤é»Ï¤Þ¤ëŤµ
+から始まる長さ
 .I len
-¥Ð¥¤¥È¤Î¥¢¥É¥ì¥¹ÈϰϤΥڡ¼¥¸¤Î¥í¥Ã¥¯¤ò²ò½ü¤¹¤ë¡£
-¤³¤Î¸Æ¤Ó½Ð¤·¤ò¹Ô¤Ã¤¿¸å¤Ï¡¢¥«¡¼¥Í¥ë¤¬¡¢»ØÄꤵ¤ì¤¿¥á¥â¥êÈϰϤò´Þ¤à
-Á´¤Æ¤Î¥Ú¡¼¥¸¤ò³°Éô¤Î¥¹¥ï¥Ã¥×¶õ´Ö¤Ë°ÜÆ°¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£
+バイトのアドレス範囲のページのロックを解除する。
+この呼び出しを行った後は、カーネルが、指定されたメモリ範囲を含む
+全てのページを外部のスワップ空間に移動できるようになる。
 .\"O .SS "mlockall() and munlockall()"
-.SS "mlockall() ¤È munlockall()"
+.SS "mlockall()  munlockall()"
 .\"O .BR mlockall ()
 .\"O locks all pages mapped into the address space of the
 .\"O calling process.
@@ -131,25 +131,25 @@ RAM 
 .\"O to be resident in RAM when the call returns successfully;
 .\"O the pages are guaranteed to stay in RAM until later unlocked.
 .BR mlockall ()
-¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò
-¥í¥Ã¥¯¤¹¤ë¡£¤³¤ì¤Ë¤Ï¥³¡¼¥É¡¢¥Ç¡¼¥¿¡¢¥¹¥¿¥Ã¥¯¤Î
-³Æ¥»¥°¥á¥ó¥È¡¢¶¦Í­¥é¥¤¥Ö¥é¥ê¡¢¥«¡¼¥Í¥ë¤Î¥æ¡¼¥¶¡¼¶õ´Ö¥Ç¡¼¥¿¡¢
-¶¦Í­¥á¥â¥ê¡¢¥á¥â¥ê¡¦¥Þ¥Ã¥×¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤ë¡£
-¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤¬À®¸ù¤·¤¿¾ì¹ç¤Ë¤ÏÁ´¤Æ¤Î¥Þ¥Ã¥×¤µ¤ì¤¿¥Ú¡¼¥¸¤Ï RAM ¤Ë
-»Ä¤ë¤³¤È¤òÊݾڤµ¤ì¤ë¡£
-¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ï¸å¤Ç¥í¥Ã¥¯²ò½ü¤µ¤ì¤ë¤Þ¤Ç RAM ¤Ë»Ä¤ê³¤±¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¡£
+は呼び出し元プロセスのアドレス空間にマップされている全てのページを
+ロックする。これにはコード、データ、スタックの
+各セグメント、共有ライブラリ、カーネルのユーザー空間データ、
+共有メモリ、メモリ・マップされたファイルが含まれる。
+システム・コールが成功した場合には全てのマップされたページは RAM に
+残ることを保証される。
+これらのページは後でロック解除されるまで RAM に残り続けることが保証される。
 
 .\"O The
 .\"O .I flags
 .\"O argument is constructed as the bitwise OR of one or more of the
 .\"O following constants:
 .I flags
-°ú¿ô¤Ï°Ê²¼¤ÎÆâÍƤΰì¤Ä¤Þ¤¿¤ÏÊ£¿ô¤Î¥Ó¥Ã¥È OR ¤«¤é¹½À®¤µ¤ì¤ë:
+引数は以下の内容の一つまたは複数のビット OR から構成される:
 .TP 1.2i
 .B MCL_CURRENT
 .\"O Lock all pages which are currently mapped into the address space of
 .\"O the process.
-¸½ºß¡¢¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò¥í¥Ã¥¯¤¹¤ë¡£
+現在、プロセスのアドレス空間にマップされている全てのページをロックする。
 .TP
 .B MCL_FUTURE
 .\"O Lock all pages which will become mapped into the address space of the
@@ -157,9 +157,9 @@ RAM 
 .\"O These could be for instance new pages required
 .\"O by a growing heap and stack as well as new memory mapped files or
 .\"O shared memory regions.
-¾­Íè¡¢¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥Þ¥Ã¥×¤µ¤ì¤ëÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò¥í¥Ã¥¯¤¹¤ë¡£
-Î㤨¤Ð¡¢¥Ò¡¼¥× (heap) ¤ä¥¹¥¿¥Ã¥¯¤ÎÀ®Ä¹¤Ë¤è¤ê¿·¤·¤¯É¬Íפˤʤä¿¥Ú¡¼¥¸¤À¤±¤Ç
-¤Ê¤¯¡¢¿·¤·¤¯¥á¥â¥ê¥Þ¥Ã¥×¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ä¶¦Í­¥á¥â¥êÎΰè¤â¥í¥Ã¥¯¤µ¤ì¤ë¡£
+将来、プロセスのアドレス空間にマップされる全てのページをロックする。
+例えば、ヒープ (heap) やスタックの成長により新しく必要になったページだけで
+なく、新しくメモリマップされたファイルや共有メモリ領域もロックされる。
 .PP
 .\"O If
 .\"O .B MCL_FUTURE
@@ -170,60 +170,60 @@ RAM 
 .\"O may fail if it would cause the number of locked bytes to exceed
 .\"O the permitted maximum (see below).
 .B MCL_FUTURE
-¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¡¢°Ê¸å¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë (Î㤨¤Ð¡¢
+が指定されていると、以後のシステムコール (例えば、
 .BR mmap (2),
 .BR sbrk (2),
 .BR malloc (3))
-¤Ï¡¢¥í¥Ã¥¯¤¹¤ë¥Ð¥¤¥È¿ô¤¬µö²Ä¤µ¤ì¤¿ºÇÂçÃÍ (²¼µ­»²¾È) ¤òĶ¤¨¤¿¾ì¹ç¤Ë
-¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
+は、ロックするバイト数が許可された最大値 (下記参照) を超えた場合に
+失敗する可能性がある。
 .\"O In the same circumstances, stack growth may likewise fail:
 .\"O the kernel will deny stack expansion and deliver a
 .\"O .B SIGSEGV
 .\"O signal to the process.
-ƱÍͤˡ¢¥¹¥¿¥Ã¥¯¤ÎÀ®Ä¹¤â¼ºÇÔ¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
-¤½¤Î¾ì¹ç¡¢¥«¡¼¥Í¥ë¤Ï¥¹¥¿¥Ã¥¯¤Î³ÈÄ¥¤òµñÈݤ·¡¢
+同様に、スタックの成長も失敗する可能性がある。
+その場合、カーネルはスタックの拡張を拒否し、
 .B SIGSEGV
-¤ò¥×¥í¥»¥¹¤ËÁ÷¤ë¡£
+をプロセスに送る。
 
 .\"O .BR munlockall ()
 .\"O unlocks all pages mapped into the address space of the
 .\"O calling process.
 .BR munlockall ()
-¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¤Æ¤¤¤ë
-Á´¤Æ¤Î¥Ú¡¼¥¸¤ò¥í¥Ã¥¯²ò½ü¤¹¤ë¡£
+は、呼び出し元プロセスのアドレス空間にマッピングされている
+全てのページをロック解除する。
 .\"O .SH "RETURN VALUE"
-.SH ÊÖ¤êÃÍ
+.SH 返り値
 .\"O On success these system calls return 0.
 .\"O On error, \-1 is returned,
 .\"O .I errno
 .\"O is set appropriately, and no changes are made to any locks in the
 .\"O address space of the process.
-À®¸ù¤·¤¿¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥¼¥í¤òÊÖ¤¹¡£
-¥¨¥é¡¼¤Î¾ì¹ç¤Ï \-1 ¤¬ÊÖ¤µ¤ì¡¢
+成功した場合は、これらのシステムコールはゼロを返す。
+エラーの場合は \-1 が返され、
 .I errno
-¤¬Å¬ÀÚ¤ËÀßÄꤵ¤ì¡¢¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¤ª¤±¤ë¥í¥Ã¥¯¤ÏÊѹ¹¤µ¤ì¤Ê¤¤¡£
+が適切に設定され、プロセスのアドレス空間におけるロックは変更されない。
 .\"O .SH ERRORS
-.SH ¥¨¥é¡¼
+.SH ã\82¨ã\83©ã\83¼
 .TP
 .B ENOMEM
 .\"O (Linux 2.6.9 and later) the caller had a nonzero
 .\"O .B RLIMIT_MEMLOCK
 .\"O soft resource limit, but tried to lock more memory than the limit
 .\"O permitted.
-(Linux 2.6.9 °Ê¹ß) ¸Æ¤Ó½Ð¤·¸µ¤ÏÈó¥¼¥í¤Î
-¥½¥Õ¥È»ñ¸»À©¸Â
+(Linux 2.6.9 以降) 呼び出し元は非ゼロの
+ソフト資源制限
 .B RLIMIT_MEMLOCK
-¤ò»ý¤Ä¤¬¡¢À©¸Â¤¬µö²Ä¤·¤Æ¤¤¤ë°Ê¾å¤Î¥á¥â¥ê¤ò¥í¥Ã¥¯¤·¤è¤¦¤È¤·¤¿¡£
+を持つが、制限が許可している以上のメモリをロックしようとした。
 .\"O This limit is not enforced if the process is privileged
 .\"O .RB ( CAP_IPC_LOCK ).
-¤³¤ÎÀ©¸Â¤Ï¡¢¥×¥í¥»¥¹¤¬Æø¢
+この制限は、プロセスが特権
 .RB ( CAP_IPC_LOCK )
-¤ò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¤ÏŬÍѤµ¤ì¤Ê¤¤¡£
+を持っている場合は適用されない。
 .TP
 .B ENOMEM
 .\"O (Linux 2.4 and earlier) the calling process tried to lock more than
 .\"O half of RAM.
-(Linux 2.4 °ÊÁ°) ¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬ RAM ¤ÎȾʬ°Ê¾å¤ò¥í¥Ã¥¯¤·¤è¤¦¤È¤·¤¿¡£
+(Linux 2.4 以前) 呼び出し元プロセスが RAM の半分以上をロックしようとした。
 .\"O .\" In the case of mlock(), this check is somewhat buggy: it doesn't
 .\"O .\" take into account whether the to-be-locked range overlaps with
 .\"O .\" already locked pages.  Thus, suppose we allocate
@@ -239,87 +239,87 @@ RAM 
 .\"O and its
 .\"O .B RLIMIT_MEMLOCK
 .\"O soft resource limit was 0.
-(Linux 2.6.9 °Ê¹ß) ¸Æ¤Ó½Ð¤·¸µ¤ÏÆø¢
+(Linux 2.6.9 以降) 呼び出し元は特権
 .RB ( CAP_IPC_LOCK )
-¤ò»ý¤¿¤º¡¢¥½¥Õ¥È»ñ¸»À©¸Â
+を持たず、ソフト資源制限
 .B RLIMIT_MEMLOCK
-¤¬ 0 ¤Ç¤¢¤ë¡£
+が 0 である。
 .TP
 .B EPERM
 .\"O (Linux 2.6.8 and earlier)
 .\"O The calling process has insufficient privilege to call
 .\"O .BR munlockall ().
-(Linux 2.6.8 °ÊÁ°)
-¸Æ¤Ó½Ð¤·¸µ¥×¥í¥»¥¹¤¬
+(Linux 2.6.8 以前)
+呼び出し元プロセスが
 .BR munlockall ()
-¤ò¸Æ¤Ó½Ð¤¹¤Î¤ËɬÍפÊÆø¢¤ò½êÍ­¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¡£
+を呼び出すのに必要な特権を所有していなかった。
 .\"O Under Linux the
 .\"O .B CAP_IPC_LOCK
 .\"O capability is required.
-Linux ¤Ç¤Ï¡¢
+Linux では、
 .B CAP_IPC_LOCK
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤¬É¬ÍפǤ¢¤ë¡£
+ケーパビリティが必要である。
 .\"O .\"SVr4 documents an additional EAGAIN error code.
-.\"SVr4 ¤Î¥É¥­¥å¥á¥ó¥È¤Ë¤Ï¡¢¤³¤ì°Ê³°¤Ë¥¨¥é¡¼¥³¡¼¥É EAGAIN ¤Îµ­ºÜ¤¬¤¢¤ë¡£
+.\"SVr4 のドキュメントには、これ以外にエラーコード EAGAIN の記載がある。
 .LP
 .\"O For
 .\"O .BR mlock ()
 .\"O and
 .\"O .BR munlock ():
 .BR mlock ()
-¤È
+と
 .BR munlock ()
-ÍѤȤ·¤Æ:
+用として:
 .TP
 .B EAGAIN
 .\"O Some or all of the specified address range could not be locked.
-»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹ÈϰϤΰìÉô¤Þ¤¿¤ÏÁ´¤Æ¤ò¥í¥Ã¥¯¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£
+指定されたアドレス範囲の一部または全てをロックすることができなかった。
 .TP
 .B EINVAL
 .\"O .I len
 .\"O was negative.
 .I len
-¤¬Éé¤Î¿ô¤Ç¤¢¤ë¡£
+が負の数である。
 .TP
 .B EINVAL
 .\"O (Not on Linux)
 .\"O .I addr
 .\"O was not a multiple of the page size.
-(Linux ¤Ç¤Ï¤³¤Î°ÕÌ£¤Ç»È¤ï¤ì¤Ê¤¤)
+(Linux ではこの意味で使われない)
 .I addr
-¤¬¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÇÜ¿ô¤Ç¤Ï¤Ê¤¤¡£
+がページサイズの倍数ではない。
 .TP
 .B ENOMEM
 .\"O Some of the specified address range does not correspond to mapped
 .\"O pages in the address space of the process.
-»ØÄꤵ¤ì¤¿¥¢¥É¥ì¥¹ÈϰϤ¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Ë¥Þ¥Ã¥×¤µ¤ì¤¿¥Ú¡¼¥¸¤È
-°ìÃפ·¤Ê¤¤¡£
+指定されたアドレス範囲がプロセスのアドレス空間にマップされたページと
+一致しない。
 .LP
 .\"O For
 .\"O .BR mlockall ():
 .BR mlockall ()
-ÍѤȤ·¤Æ:
+用として:
 .TP
 .B EINVAL
 .\"O Unknown \fIflags\fP were specified.
-̤ÃΤΠ\fIflags\fP ¤¬»ØÄꤵ¤ì¤¿¡£
+未知の \fIflags\fP が指定された。
 .LP
 .\"O For
 .\"O .BR munlockall ():
 .BR munlockall ()
-ÍѤȤ·¤Æ:
+用として:
 .TP
 .B EPERM
 .\"O (Linux 2.6.8 and earlier) The caller was not privileged
 .\"O .RB ( CAP_IPC_LOCK ).
-(Linux 2.6.8 °ÊÁ°) ¸Æ¤Ó½Ð¤·¸µ¤¬¸¢¸Â
+(Linux 2.6.8 以前) 呼び出し元が権限
 .RB ( CAP_IPC_LOCK )
-¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£
+を持っていない。
 .\"O .SH "CONFORMING TO"
-.SH ½àµò
+.SH 準拠
 POSIX.1-2001, SVr4.
 .\"O .SH AVAILABILITY
-.SH ²ÄÍÑÀ­
+.SH 可用性
 .\"O On POSIX systems on which
 .\"O .BR mlock ()
 .\"O and
@@ -332,17 +332,17 @@ POSIX.1-2001, SVr4.
 .\"O (if defined) in \fI<limits.h>\fP or by calling
 .\"O .IR sysconf(_SC_PAGESIZE) .
 .BR mlock ()
-¤È
+と
 .BR munlock ()
-¤¬»ÈÍѲÄǽ¤Ê POSIX ¥·¥¹¥Æ¥à¤Ç¤Ï
+が使用可能な POSIX システムでは
 .B _POSIX_MEMLOCK_RANGE
-¤¬ \fI<unistd.h>\fP ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-¤Þ¤¿¡¢¥Ú¡¼¥¸¤¢¤¿¤ê¤Î¥Ð¥¤¥È¿ô¤Ï¡¢
-\fI<limits.h>\fP ¤ÇÄêµÁ¤µ¤ì¤ëÄê¿ô
+が \fI<unistd.h>\fP で定義されている。
+また、ページあたりのバイト数は、
+\fI<limits.h>\fP で定義される定数
 .B PAGESIZE
-¤«¤é (ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç)¡¢¤â¤·¤¯¤Ï
+から (定義されている場合)、もしくは
 .I sysconf(_SC_PAGESIZE)
-¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç·èÄê¤Ç¤­¤ë¡£
+を呼び出すことで決定できる。
 
 .\"O On POSIX systems on which
 .\"O .BR mlockall ()
@@ -354,22 +354,22 @@ POSIX.1-2001, SVr4.
 .\"O (See also
 .\"O .BR sysconf (3).)
 .BR mlockall ()
-¤È
+と
 .BR munlockall ()
-¤¬ÍøÍѲÄǽ¤Ê POSIX ¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
+が利用可能な POSIX システムでは、
 .B _POSIX_MEMLOCK
-¤Ï \fI<unistd.h>\fP ¤Ç 0 ¤è¤êÂ礭¤¤ÃͤËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
+は \fI<unistd.h>\fP で 0 より大きい値に定義されている
 .RB ( sysconf (3)
-¤â»²¾È¤Î¤³¤È)¡£
+も参照のこと)。
 .\"O .\" POSIX.1-2001: It shall be defined to -1 or 0 or 200112L.
 .\"O .\" -1: unavailable, 0: ask using sysconf().
 .\"O .\" glibc defines it to 1.
-.\" POSIX.1-2001: ¤³¤ÎÊÑ¿ô¤Ï -1 ¤« 0 ¤« 200112l ¤Î¤¤¤º¤ì¤«¤Ë
-.\" ÄêµÁ¤¹¤Ù¤­¤È¤Ê¤Ã¤Æ¤¤¤ë¡£
-.\" -1: ÍøÍѤǤ­¤Ê¤¤¡¢0: sysconf() ¤ËÌ䤤¹ç¤ï¤»¤ë
-.\" glibc ¤Ç¤Ï 1 ¤ËÄêµÁ¤·¤Æ¤¤¤ë¡£
+.\" POSIX.1-2001: この変数は -1 か 0 か 200112l のいずれかに
+.\" 定義すべきとなっている。
+.\" -1: 利用できない、0: sysconf() に問い合わせる
+.\" glibc では 1 に定義している。
 .\"O .SH "NOTES"
-.SH Ãí°Õ
+.SH 注意
 .\"O Memory locking has two main applications: real-time algorithms and
 .\"O high-security data processing.
 .\"O Real-time applications require
@@ -378,13 +378,13 @@ POSIX.1-2001, SVr4.
 .\"O Real-time applications will
 .\"O usually also switch to a real-time scheduler with
 .\"O .BR sched_setscheduler (2).
-¥á¥â¥ê¤Î¥í¥Ã¥¯¤ÎÍÑÅӤȤ·¤Æ¤Ï¼ç¤ËÆó¤Ä¤¢¤ë: ¥ê¥¢¥ë¥¿¥¤¥à
-¥¢¥ë¥´¥ê¥º¥à¤È¹â¤¤¥»¥­¥å¥ê¥Æ¥£¤ÎɬÍפʥǡ¼¥¿½èÍý¤Ç¤¢¤ë¡£¥ê¥¢¥ë¥¿¥¤¥à¤Î
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï·èÄêŪ¤Ê¥¿¥¤¥ß¥ó¥°¤ä¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤òɬÍפȤ¹¤ë¤¬¡¢
-¥Ú¡¼¥¸¥ó¥°¤Ïͽ´ü¤·¤Ê¤¤¥×¥í¥°¥é¥à¤Î¼Â¹ÔÃÙ±ä¤ò¤â¤¿¤é¤¹¼çÍפÊÍ×°ø¤È¤Ê¤ë¡£
-¥ê¥¢¥ë¥¿¥¤¥à¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤¿¤¤¤Æ¤¤¤Ï
+メモリのロックの用途としては主に二つある: リアルタイム
+アルゴリズムと高いセキュリティの必要なデータ処理である。リアルタイムの
+アプリケーションは決定的なタイミングやスケジューリングを必要とするが、
+ページングは予期しないプログラムの実行遅延をもたらす主要な要因となる。
+リアルタイムのアプリケーションはたいていは
 .BR sched_setscheduler (2)
-¤Ç¥ê¥¢¥ë¥¿¥¤¥à¥¹¥±¥¸¥å¡¼¥é¤ËÊѹ¹¤µ¤ì¤ë¡£
+でリアルタイムスケジューラに変更される。
 .\"O Cryptographic security software often handles critical bytes like
 .\"O passwords or secret keys as data structures.
 .\"O As a result of paging,
@@ -394,14 +394,14 @@ POSIX.1-2001, SVr4.
 .\"O (But be aware that the suspend mode on laptops and some desktop
 .\"O computers will save a copy of the system's RAM to disk, regardless
 .\"O of memory locks.)
-°Å¹æ¤ä¥»¥­¥å¥ê¥Æ¥£¤Î¥½¥Õ¥È¥¦¥§¥¢¤Ï¤·¤Ð¤·¤Ð¥Ñ¥¹¥ï¡¼¥É¤äÈëÌ©¸°¤Î¥Ç¡¼¥¿¤Î
-¤è¤¦¤Ê½ÅÍפʥХ¤¥ÈÎó¤ò°·¤¦¡£¥Ú¡¼¥¸¥ó¥°¤Î·ë²Ì¡¢¤³¤ì¤é¤ÎÈëÌ©¤¬
-¥¹¥ï¥Ã¥×ÍѤθÇÄêÇÞÂΤËžÁ÷¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£¤½¤·¤Æ¡¢¥»¥­¥å¥ê¥Æ¥£¡¦
-¥½¥Õ¥È¥¦¥§¥¢¤¬ RAM ¾å¤ÎÈëÌ©¤òºï½ü¤·¤Æ½ªÎ»¤·¤¿¤º¤Ã¤È¸å¤Ë¤Ê¤Ã¤Æ¤â¡¢
-¤³¤Î¥¹¥ï¥Ã¥×¤µ¤ì¤¿¥Ç¡¼¥¿¤Ë¤ÏŨ¤¬¥¢¥¯¥»¥¹¤Ç¤­¤ë²ÄǽÀ­¤¬¤¢¤ë
-(¤·¤«¤·¡¢¥é¥Ã¥×¥È¥Ã¥×¤È¤¤¤¯¤Ä¤«¤Î¥Ç¥¹¥¯¥È¥Ã¥×¥³¥ó¥Ô¥å¡¼¥¿¤Î
-¥µ¥¹¥Ú¥ó¥É¥â¡¼¥É¤Ï¥·¥¹¥Æ¥à¤Î RAM ¤ÎÆâÍƤò¥á¥â¥ê¤Î¥í¥Ã¥¯¤Ë´Ø¤ï¤é¤º
-¥Ç¥£¥¹¥¯¤ËÊݸ¤¹¤ë¤³¤È¤ËÃí°Õ)¡£
+暗号やセキュリティのソフトウェアはしばしばパスワードや秘密鍵のデータの
+ような重要なバイト列を扱う。ページングの結果、これらの秘密が
+スワップ用の固定媒体に転送されるかもしれない。そして、セキュリティ・
+ソフトウェアが RAM 上の秘密を削除して終了したずっと後になっても、
+このスワップされたデータには敵がアクセスできる可能性がある
+(しかし、ラップトップといくつかのデスクトップコンピュータの
+サスペンドモードはシステムの RAM の内容をメモリのロックに関わらず
+ディスクに保存することに注意)。
 
 .\"O Real-time processes that are using
 .\"O .BR mlockall ()
@@ -415,38 +415,38 @@ POSIX.1-2001, SVr4.
 .\"O locked into RAM.
 .\"O The dummy writes ensure that not even copy-on-write
 .\"O page faults can occur in the critical section.
-¥ê¥¢¥ë¥¿¥¤¥à¥×¥í¥»¥¹¤¬
+リアルタイムプロセスが
 .BR mlockall ()
-¤ò»È¤Ã¤Æ¥Ú¡¼¥¸¥Õ¥©¡¼¥ë¥È¤Ë¤è¤ëÃÙ±ä¤òËɤ´¤¦¤È¤¹¤ë¾ì¹ç¡¢
-´Ø¿ô¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¥Ú¡¼¥¸¥Õ¥©¡¼¥ë¥È¤¬È¯À¸¤·¤Ê¤¤¤è¤¦¤Ë¡¢
-»þ´ÖÀ©¸Â¤Î¸·¤·¤¤Éôʬ (time-critical section) ¤ËÆþ¤ëÁ°¤Ë
-½½Ê¬¤ÊÎ̤Υí¥Ã¥¯¤µ¤ì¤¿¥¹¥¿¥Ã¥¯¤ò³ÎÊݤ·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¡£
-¤³¤ì¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢½½Ê¬¤ÊÂ礭¤µ¤Î¼«Æ°ÊÑ¿ô (¤ÎÇÛÎó) ¤ò³ÎÊݤ·¡¢
-¤³¤ì¤é¤Î¥¹¥¿¥Ã¥¯ÍѤΥڡ¼¥¸¤¬¥á¥â¥ê¾å¤Ë³ÎÊݤµ¤ì¤ë¤è¤¦¤Ë¤³¤ÎÇÛÎó¤Ë
-½ñ¤­¹þ¤ß¤ò¹Ô¤¦´Ø¿ô¤òÍÑ°Õ¤·¡¢¤³¤ì¤ò¸Æ¤Ó½Ð¤»¤Ð¤è¤¤¡£¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢
-½½Ê¬¤ÊÎ̤Υڡ¼¥¸¤¬¥¹¥¿¥Ã¥¯¤Ë¥Þ¥Ã¥Ô¥ó¥°¤µ¤ì¡¢RAM ¤Ë¥í¥Ã¥¯¤µ¤ì¤ë¡£
-¥À¥ß¡¼¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢
-»þ´ÖÀ©¸Â¤Î¸·¤·¤¤Éôʬ (critical section) Æâ¤Ç¤Ï½ñ¤­¹þ¤ß»þ¥³¥Ô¡¼¤Ë¤è¤ë
-¥Ú¡¼¥¸¥Õ¥©¡¼¥ë¥È¤µ¤¨¤âȯÀ¸¤·¤Ê¤¤¤³¤È¤¬Êݾڤµ¤ì¤ë¡£
+を使ってページフォールトによる遅延を防ごうとする場合、
+関数呼び出しによってページフォールトが発生しないように、
+時間制限の厳しい部分 (time-critical section) に入る前に
+十分な量のロックされたスタックを確保しておく必要がある。
+これを実現するには、十分な大きさの自動変数 (の配列) を確保し、
+これらのスタック用のページがメモリ上に確保されるようにこの配列に
+書き込みを行う関数を用意し、これを呼び出せばよい。こうすることで、
+十分な量のページがスタックにマッピングされ、RAM にロックされる。
+ダミーの書き込みを行うことによって、
+時間制限の厳しい部分 (critical section) 内では書き込み時コピーによる
+ページフォールトさえも発生しないことが保証される。
 
 .\"O Memory locks are not inherited by a child created via
 .\"O .BR fork (2)
 .\"O and are automatically removed (unlocked) during an
 .\"O .BR execve (2)
 .\"O or when the process terminates.
-¥á¥â¥ê¥í¥Ã¥¯¤Ï
+メモリロックは
 .BR fork (2)
-¤ÇºîÀ®¤µ¤ì¤¿»Ò¥×¥í¥»¥¹¤Ë¤Ï·Ñ¾µ¤µ¤ì¤º¡¢
+で作成された子プロセスには継承されず、
 .BR execve (2)
-¤¬¸Æ¤Ð¤ì¤¿¤ê¡¢¥×¥í¥»¥¹¤¬½ªÎ»¤·¤¿¾ì¹ç¤Ï
-¼«Æ°Åª¤Ëºï½ü¤µ¤ì¤ë (¥í¥Ã¥¯²ò½ü¤µ¤ì¤ë)¡£
+が呼ばれたり、プロセスが終了した場合は
+自動的に削除される (ロック解除される)。
 
 .\"O The memory lock on an address range is automatically removed
 .\"O if the address range is unmapped via
 .\"O .BR munmap (2).
-¤¢¤ë¥¢¥É¥ì¥¹ÈϰϤËÂФ¹¤ë¥á¥â¥ê¥í¥Ã¥¯¤Ï¡¢¤½¤Î¥¢¥É¥ì¥¹ÈϰϤ¬
+あるアドレス範囲に対するメモリロックは、そのアドレス範囲が
 .BR munmap (2)
-¤Ë¤è¤Ã¤Æ¥¢¥ó¥Þ¥Ã¥×¤µ¤ì¤¿¾ì¹ç¤Ïºï½ü¤µ¤ì¤ë¡£
+によってアンマップされた場合は削除される。
 
 .\"O Memory locks do not stack, that is, pages which have been locked several times
 .\"O by calls to
@@ -460,21 +460,21 @@ POSIX.1-2001, SVr4.
 .\"O Pages which are mapped to several locations or by several processes stay
 .\"O locked into RAM as long as they are locked at least at one location or by
 .\"O at least one process.
-¥á¥â¥ê¤Î¥í¥Ã¥¯¤ÏÎßÀѤ·¤Ê¤¤¡£
-¤¹¤Ê¤ï¤ÁÊ£¿ô²ó
+メモリのロックは累積しない。
+すなわち複数回
 .BR mlock ()
-¤ä
+や
 .BR mlockall ()
-¤ò¸Æ¤Ó½Ð¤·¤Æ¥í¥Ã¥¯¤µ¤ì¤¿¥Ú¡¼¥¸¤Ç¤â¡¢
-Âбþ¤¹¤ëÈϰϤËÂФ·¤Æ
+を呼び出してロックされたページでも、
+対応する範囲に対して
 .BR munlock ()
-¤ò 1 ²ó¸Æ¤Ó½Ð¤·¤¿¤ê
+を 1 回呼び出したり
 .BR munlockall ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¤ê¤¹¤ë¤À¤±¤Ç¥í¥Ã¥¯²ò½ü¤µ¤ì¤ë¡£
-Ê£¿ô¤Î¾ì½ê¤äÊ£¿ô¤Î¥×¥í¥»¥¹¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤Ï¡¢¾¯¤Ê¤¯¤È¤â°ì¤Ä¤Î¾ì½ê¡¢
-°ì¤Ä¤Î¥×¥í¥»¥¹¤Ç¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤ë¸Â¤ê¤Ï RAM ¤Ë»Ä¤ê³¤±¤ë¡£
+を呼び出したりするだけでロック解除される。
+複数の場所や複数のプロセスにマップされているページは、少なくとも一つの場所、
+一つのプロセスでロックされている限りは RAM に残り続ける。
 .\"O .SS "Linux Notes"
-.SS Linux ¤Ç¤ÎÃí°Õ
+.SS Linux での注意
 .\"O Under Linux,
 .\"O .BR mlock ()
 .\"O and
@@ -482,60 +482,60 @@ POSIX.1-2001, SVr4.
 .\"O automatically round
 .\"O .I addr
 .\"O down to the nearest page boundary.
-Linux ¤Ç¤Ï¡¢
+Linux では、
 .BR mlock ()
-¤È
+と
 .BR munlock ()
-¤Ï¼«Æ°Åª¤Ë
+は自動的に
 .I addr
-¤òü¿ôÀÚ¤ê¼Î¤Æ¤Ë¤è¤ê°ìÈֶᤤ¥Ú¡¼¥¸¶­³¦¤Ø¤È´Ý¤á¤ë¡£
+を端数切り捨てにより一番近いページ境界へと丸める。
 .\"O However, POSIX.1-2001 allows an implementation to require that
 .\"O .I addr
 .\"O is page aligned, so portable applications should ensure this.
-¤·¤«¤· POSIX.1-2001 ¤Ï
+しかし POSIX.1-2001 は
 .I addr
-¤¬¥Ú¡¼¥¸¶­³¦¤Ë¹ç¤Ã¤Æ¤¤¤ë¤³¤È¤òÍ׵᤹¤ë¼ÂÁõ¤âµö¤·¤Æ¤¤¤ë¡£
-¤½¤Î¤¿¤á°Ü¿¢À­¤ò°Õ¿Þ¤·¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¤­¤Á¤ó¤È¶­³¦¤Ë¹ç¤ï¤»¤¿Êý¤¬Îɤ¤¡£
+がページ境界に合っていることを要求する実装も許している。
+そのため移植性を意図したアプリケーションではきちんと境界に合わせた方が良い。
 .\"O .SS "Limits and permissions"
-.SS À©¸Â¤È¸¢¸Â
+.SS 制限と権限
 .\"O In Linux 2.6.8 and earlier,
 .\"O a process must be privileged
 .\"O .RB ( CAP_IPC_LOCK )
 .\"O in order to lock memory and the
 .\"O .B RLIMIT_MEMLOCK
 .\"O soft resource limit defines a limit on how much memory the process may lock.
-Linux 2.6.8 °ÊÁ°¤Ç¤Ï¡¢¥á¥â¥ê¤ò¥í¥Ã¥¯¤¹¤ë¤¿¤á¤Ë¤ÏÆø¢
+Linux 2.6.8 以前では、メモリをロックするためには特権
 .RB ( CAP_IPC_LOCK )
-¤¬É¬Íפǡ¢
-¥½¥Õ¥È»ñ¸»À©¸Â
+が必要で、
+ソフト資源制限
 .B RLIMIT_MEMLOCK
-¤Ï¥×¥í¥»¥¹¤¬¤É¤ì¤À¤±¤Î¥á¥â¥ê¤ò¥í¥Ã¥¯¤Ç¤­¤ë¤«¤ÎÀ©¸Â¤òÄêµÁ¤¹¤ë¡£
+はプロセスがどれだけのメモリをロックできるかの制限を定義する。
 
 .\"O Since Linux 2.6.9, no limits are placed on the amount of memory
 .\"O that a privileged process can lock and the
 .\"O .B RLIMIT_MEMLOCK
 .\"O soft resource limit instead defines a limit on how much memory an
 .\"O unprivileged process may lock.
-Linux 2.6.9 °Ê¹ß¤Ç¤Ï¡¢Æø¢¤ò»ý¤Ä¥×¥í¥»¥¹¤¬¥í¥Ã¥¯¤Ç¤­¤ë¥á¥â¥êÎ̤Ï̵À©¸Â¤È¤Ê¤ê¡¢
-Âå¤ï¤ê¤Ë¥½¥Õ¥È»ñ¸»À©¸Â
+Linux 2.6.9 以降では、特権を持つプロセスがロックできるメモリ量は無制限となり、
+代わりにソフト資源制限
 .B RLIMIT_MEMLOCK
-¤ÏÆø¢¤ò»ý¤¿¤Ê¤¤¥×¥í¥»¥¹¤¬¥í¥Ã¥¯¤Ç¤­¤ë¥á¥â¥êÎ̤ÎÀ©¸Â¤òÄêµÁ¤¹¤ë¡£
+は特権を持たないプロセスがロックできるメモリ量の制限を定義する。
 .\"O .SH "BUGS"
-.SH ¥Ð¥°
+.SH ã\83\90ã\82°
 .\"O In the 2.4 series Linux kernels up to and including 2.4.17,
 .\"O a bug caused the
 .\"O .BR mlockall ()
 .\"O .B MCL_FUTURE
 .\"O flag to be inherited across a
 .\"O .BR fork (2).
-2.4.17 ¤Þ¤Ç¤Î 2.4 ¥·¥ê¡¼¥º¤Î Linux ¥«¡¼¥Í¥ë¤Ë¤Ï¡¢
+2.4.17 までの 2.4 シリーズの Linux カーネルには、
 .BR mlockall ()
 .B MCL_FUTURE
-¥Õ¥é¥°¤¬
+フラグが
 .BR fork (2)
-¤Ç·Ñ¾µ¤µ¤ì¤ë¤È¸À¤¦¥Ð¥°¤¬¤¢¤ë¡£
+で継承されると言うバグがある。
 .\"O This was rectified in kernel 2.4.18.
-¤³¤ì¤Ï¥«¡¼¥Í¥ë 2.4.18 ¤Ç½¤Àµ¤µ¤ì¤¿¡£
+これはカーネル 2.4.18 で修正された。
 
 .\"O Since kernel 2.6.9, if a privileged process calls
 .\"O .I mlockall(MCL_FUTURE)
@@ -549,27 +549,27 @@ Linux 2.6.9 
 .\"O will fail if the
 .\"O .B RLIMIT_MEMLOCK
 .\"O resource limit is encountered.
-¥«¡¼¥Í¥ë 2.6.9 °Ê¹ß¤Ç¤Ï¡¢Æø¢¤ò»ý¤Ã¤¿¥×¥í¥»¥¹¤¬
+カーネル 2.6.9 以降では、特権を持ったプロセスが
 .I mlockall(MCL_FUTURE)
-¤ò¸Æ¤Ó½Ð¤·¤¿¸å¤Ç¡¢Æø¢¤ò¤Ê¤¯¤·¤¿¾ì¹ç (Î㤨¤Ð¡¢
-¼Â¸ú UID ¤ò 0 °Ê³°¤ÎÃͤËÊѹ¹¤¹¤ë¤Ê¤É¤Ë¤è¤ê¡¢
+を呼び出した後で、特権をなくした場合 (例えば、
+実効 UID を 0 以外の値に変更するなどにより、
 .B CAP_IPC_LOCK
-¥±¡¼¥Ñ¥Ó¥ê¥Æ¥£¤ò¼º¤Ã¤¿¾ì¹ç)¡¢¥ê¥½¡¼¥¹¾å¸Â
+ケーパビリティを失った場合)、リソース上限
 .B RLIMIT_MEMLOCK
-¤Ë㤹¤ë¤È¡¢¤½¤ì°Ê¹ß¤Î¥á¥â¥ê³ä¤êÅö¤Æ (Î㤨¤Ð
+に達すると、それ以降のメモリ割り当て (例えば
 .BR mmap (2),
 .BR brk (2))
-¤Ï¼ºÇÔ¤¹¤ë¡£
+は失敗する。
 .\"O .\" See the following LKML thread:
 .\"O .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=113801392825023&w=2
 .\"O .\" "Rationale for RLIMIT_MEMLOCK"
 .\"O .\" 23 Jan 2006
-.\" LKML ¤Î°Ê²¼¤Î¥¹¥ì¥Ã¥É¤ò»²¾È:
+.\" LKML の以下のスレッドを参照:
 .\" http://marc.theaimsgroup.com/?l=linux-kernel&m=113801392825023&w=2
 .\" "Rationale for RLIMIT_MEMLOCK"
 .\" 23 Jan 2006
 .\"O .SH "SEE ALSO"
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
 .BR mmap (2),
 .BR setrlimit (2),
 .BR shmctl (2),