#include <sys/mman.h> int mlockall(int flags);
¸Þ¸ð¸® Àá±ÝÀº ÁÖ·Î µÎ °¡Áö °æ¿ì¿¡ ÀÀ¿ëµÈ´Ù: ½Ç½Ã°£ ¾Ë°í¸®Áò°ú high-security µ¥ÀÌŸ ó¸®. ½Ç½Ã°£ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì´Â °áÁ¤·ÐÀûÀΠŸÀְ̹ú ½ºÄÉÁÙ¸µ °°Àº °ÍÀÌ ¿ä±¸µÇ´Âµ¥, ÀÌ ¶§ ÆäÀÌ¡Àº ¿¹»óÄ¡ ¸øÇÑ ÇÁ·Î±×·¥ ½ÇÇà Áö¿¬À» ¾ß±âÇÏ´Â ÁÖ¿ä ¿øÀÎÀÌ´Ù. ¶ÇÇÑ ½Ç½Ã°£ ÀÀ¿ëÇÁ·Î±×·¥Àº º¸Åë sched_setscheduler·Î ½Ç½Ã°£ ½ºÄÉÁì·¯¸¦ »ç¿ëÇÑ´Ù. ¾ÏÈ£ º¸¾È ¼ÒÇÁÆ®¿þ¾î´Â µ¥ÀÌÅÍ·Î ¾ÏÈ£³ª º¸¾ÈÅ° °°Àº Áß¿ä ¹ÙÀÌÆ®¸¦ ó¸®ÇÑ´Ù. ÆäÀÌ¡ °á°ú, ÀÌ µ¥ÀÌÅÍ°¡ Áö¼ÓÀûÀÎ ½º¿Ò ÀúÀå ÀåÄ¡¿¡ ÀúÀåµÇ¸ç º¸¾È ¼ÒÇÁÆ®¿þ¾î°¡ RAM¿¡¼ ÀÌ µ¥ÀÌÅ͸¦ Áö¿ì°í ³¡³ ÈÄ¿¡µµ ¿À·§µ¿¾È ¿ÜºÎ¿¡ ³ëÃâµÉ ¼ö ÀÖ´Ù. º¸¾È ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ ÀÛÀº ¸Þ¸ð¸® ¿µ¿ª¸¸À» Àá°¡¾ßÇÏ°í, ÀÌ ¶§´Â mlockÀ» ÀÌ¿ëÇϱâ Àû´çÇÏ´Ù.
flags ÀÎÀÚ´Â ´ÙÀ½ »ó¼ö¸¦ ³í¸® OR¸¦ ÇÏ¿© ÁöÁ¤µÉ ¼ö ÀÖ´Ù.
¸¸¾à MCL_FUTUREÀÌ ÁöÁ¤µÇ°í Àá±ä ÆäÀÌÁö ¼ö°¡ Çã¿ëµÈ ÇѰ踦 ÃÊ°úÇÏ¸é ½Ã½ºÅÛ ÄÝÀº ENOMEM ¿¡·¯·Î ½ÇÆÐÇÒ °ÍÀÌ´Ù. ½ºÅÃÀÌ ´Ã¾î³ª »õ ÆäÀÌÁö°¡ ´ëÀÀµÇ¸é, Ä¿³ÎÀº ½ºÅà ȮÀåÀ» °ÅºÎÇÏ°í SIGSEGV ½Ã±×³ÎÀ» º¸³½´Ù.
½Ç½Ã°£ ÇÁ·Î¼¼½º´Â ½Ã°£ ÀÓ°è ¿µ¿ªÀ» ¼öÇàÇϱâ Àü¿¡ ÃæºÐÇÑ ½ºÅà ÆäÀÌÁö¸¦
Àá°¡µÎ¾î, ±× ÇÔ¼ö È£Ãâ¿¡ ÀÇÇØ ÆäÀÌÁö ¿À·ù°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ÀÌ´Â ÃæºÐÈ÷
Å« Áö¿ª º¯¼ö¸¦ °¡Áö°í, ½ºÅà ÆäÀÌÁö¸¦ ¸¸µé±â À§ÇØ ÀÌ Å« ¹è¿ÀÌ Â÷ÁöÇÑ ¸Þ¸ð¸®¿¡
¾²±â¸¦ ÇÏ´Â ÇÔ¼ö¸¦ È£ÃâÇÏ¿©¼ ÀÌ·ê ¼ö ÀÖ´Ù. ÀÌ·± ¹æ¹ýÀ¸·Î ÃæºÐÇÑ ÆäÀÌÁö¸¦
½ºÅÿ¡ ´ëÀÀ½ÃÄÑ RAM¿¡ Àá°¡µÑ ¼ö ÀÖ´Ù. ÀÌ ¾²±â´Â ÀÓ°è ¿µ¿ª¿¡¼ copy-on-write
ÆäÀÌÁö ¿À·ù°¡ ¹ß»ýÇÏÁö ¾Ê°Ô ÇÑ´Ù.
¸Þ¸ð¸® Àá±ÙÀº ½ºÅÃÀÌ ¾Æ´Ï´Ù.
Áï,
mlockÀ̳ª
mlockallÀÌ
¿©·¯¹ø È£ÃâµÇ¾î ¿©·¯¹ø Àá°å´ø ÆäÀÌÁö´Â »óÀÀÇÏ´Â ¹üÀ§¿¡ ´ëÇÑ
munlockÀ̳ª
munlockall¸¦
´Ü Çѹø È£ÃâÇÏ¿© Àá±ÝÀ» Ç® ¼ö ÀÖ´Ù.
¿©·¯ À§Ä¡³ª ¿©·¯ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ Àá°ÜÁø ÆäÀÌÁö´Â Àû¾îµµ ÇϳªÀÇ
À§Ä¡³ª ÇÁ·Î¼¼½º¿¡ ÀÇÇØ Àá°ÜÁ® ÀÖ´Â ÇÑ RAM¿¡¼ °è¼ÓÀûÀ¸·Î Àá±ÝÀÌ À¯ÁöµÈ´Ù.
mlockall°ú munlockall¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â POSIX ½Ã½ºÅÛ¿¡¼ _POSIX_MEMLOCKÀº <unistd.h>¿¡ Á¤ÀǵǾî ÀÖ´Ù.