´ÙÀ½ À§·Î ÀÌÀü ¸ñÂ÷ ¸®´ª½º ÇÁ·Î±×·¡¸Ó¸¦ À§ÇÑ °¡À̵å

6.4.1 ±âº»ÀûÀÎ °³³ä (Fundamental Concepts)

½Ã½ºÅÛ V»ó¿¡¼­ AT&T´Â IPC ¼³ºñÀÇ °®´Â ¼¼°¡Áö »õ·Î¿î ÇüÅÂ(¸Þ¼¼Áö Å¥(message queue), ¼¼¸¶ÆÛ(semaphores), °øÀ¯ ¸Þ¸ð¸®(shared memory))¸¦ ¼Ò°³Çß´Ù. POSIX À§¿øȸ¿¡¼­´Â ¾ÆÁ÷ ÀÌ ¼¼°¡Áö ¼³ºñ¿¡ ´ëÇÑ Ç¥ÁØÈ­¸¦ ¸¶Ä¡Áö ¸øÇÏ°í ÀÖÁö¸¸, ´ëºÎºÐÀÇ ±¸ÇöµéÀº À̵éÀ» Áö¿øÇÏ°í ÀÖ´Ù. ´õ±º´Ù³ª ¹öŬ¸®(BSD)´Â ½Ã½ºÅÛ V ¿ä¼Òº¸´Ù´Â ¼ÒÄÏÀ» IPCÀÇ ±âÃÊ ÇüÅ·Π»ç¿ëÇÑ´Ù. µÞÀå¿¡¼­ ¼ÒÄÏ¿¡ ´ëÇØ ³íÇÏ°ÚÁö¸¸, ¸®´ª½º´Â IPCÀÇ µÎ°¡Áö ÇüÅÂ(BSD¿Í System V)¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

½Ã½ºÅÛ V IPCÀÇ ¸®´ª½º ±¸ÇöÀº Krishna balasubramanian(balasub@cis.ohio-state.edu)¿¡ ÀÇÇØ ±â¼úµÇ¾ú´Ù.



IPC È®ÀÎÀÚ (IPC Identifiers)

°¢°¢ÀÇ IPC °´Ã¼(Object)Àº ±×°Í°ú ¿¬°üµÈ À¯ÀÏÇÑ IPC È®ÀÎÀÚ(Identifier)¸¦ °®´Â´Ù. "IPC °´Ã¼(object)"¶ó°í ÇÔÀº ´ÜÀÏ ¸Þ¼¼Áö Å¥(single message queue), ¼¼¸¶ÆÛ ÁýÇÕ(semaphore set), ¶Ç´Â °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®(shared memory segment)¸¦ ¸»ÇÑ´Ù. IPC °´Ã¼¿¡ ´ëÇÑ ¿ìÀÏÇÑ È®ÀÎÀÚ´Â Ä¿³Î ¾È¿¡¼­ »ç¿ëµÈ´Ù. ¿¹¸¦ µé¸é, Ưº°ÇÑ °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¿¡ Á¢±ÙÇϱâ À§ÇØ ±× ¼¼±×¸ÕÆ®¿¡ ÇÒ´çµÈ À¯ÀÏÇÑ ID °ªÀÌ ÇÊ¿äÇÏ´Ù.

È®ÀÎÀÚÀÇ À¯ÀϼºÀº ¹®Á¦ÀÇ °´Ã¼ ŸÀÔ(type)°ú °ü°è ÀÖ´Ù. À̸¦ ¼³¸íÇϱâ À§ÇØ, "12345"¶ó´Â ¼öÄ¡ È®ÀÎÀÚ¸¦ °¡Á¤ÇÏÀÚ. °°Àº È®ÀÎÀÚ¸¦ °°´Â µÎ°³ÀÇ ¸Þ¼¼Áö Å¥´Â ¾øÀ¸¹Ç·Î, °°Àº ¼öÄ¡ È®ÀÎÀÚ¸¦ °¡Áø °øÀ¯ ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¿Í ¸Þ¼¼Áö Å¥¸¦ ±¸º°ÇÒ ¼ö ÀÖ´Â °¡´É¼ºÀÌ Á¸ÀçÇÑ´Ù.


IPC Å° (IPC Keys)

À¯ÀÏÇÑ ID¸¦ ¾ò±âÀ§ÇØ, Å°(key)°¡ »ç¿ëµÇ¾îÁ®¾ß ÇÑ´Ù. Å°(key)´Â Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö ÇÁ·Î¼¼½º°£¿¡ ¼­·Î µ¿ÀǵǾî¾ß ÇÑ´Ù. ÀÌ°ÍÀº ÀÀ¿ëÇÁ·Î±×·¥À» À§ÇÑ Å¬¶óÀ̾ðÆ®/¼­¹ö üÁ¦¸¦ ±¸¼ºÇϴ ù¹ø° ´Ü°è¸¦ ÀǹÌÇÑ´Ù.

´ç½ÅÀÌ ´©±º°¡¿¡°Ô ÀüÈ­¸¦ ÇÏ°íÀÚ ÇÒ ¶§´Â ÀüÈ­¹øÈ£¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. °Ô´Ù°¡ ÀüÈ­ ȸ»ç´Â ´ç½Å¿¡°Ô¼­ ³ª°¡´Â ÀüÈ­¸¦ ¸¶Áö¸· ¸ñÀûÁö±îÁö ¾î¶»°Ô Áß°èÇÒ °ÍÀÎÁö ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ¹Ý´ëÆíÀÌ ÀüÈ­¿¡ ÀÀ´äÇØ¾ß ¿¬°áÀÌ ÀÌ·ç¾î Áø´Ù.

½Ã½ºÅÛ V IPC ¼³ºñÀÇ °æ¿ì, ÀüÈ­´Â »ç¿ëµÇ´Â °´Ã¼ÀÇ Å¸ÀÔÀ» °¡Áö°í Á÷Á¢ÀûÀÎ °ü·ÃÀÌ ÀÖ´Ù. ÀüÈ­ ȸ»ç³ª ¶ó¿ìÆà ¹æ¹ý(routing method)Àº IPC Å°(key)¿Í ÀûÁ¢ ¿¬°üµÇ¾î Áø´Ù.

Å°´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ Å°°ªÀ» ÇϵåÄÚµùÇÔÀ¸·Î½á Ç×»ó °°Àº °ªÀ» °¡Áú ¼ö ÀÖ´Ù. ÀÌ°ÍÀº Å°°¡ ÀÌ¹Ì »ç¿ëµÈ °ÍÀÏ ¼ö ÀÖ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. Á¾Á¾ ftok() ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö ¸ðµÎ¿¡ ÀÇÇØ Å°°ªÀ» ¹ß»ý½ÃÅ°´Âµ¥ »ç¿ëµÈ´Ù.


 LIBRARY FUNCTION: ftok();

  PROTOTYPE: key_t ftok ( char *pathname, char proj );
    RETURNS: new IPC key value if successful
             -1 if unsuccessful, errno set to return of stat() call

ftok()·Î ºÎÅÍ ¹ÝȯµÈ Å°°ªÀº ù¹ø° ¾Æ±Ô¸ÕÆ®ÀÎ ÆÄÀÏ·Î ºÎÅÍ inode ¹øÈ£, minor ÀåÄ¡¹øÈ£¿Í µÎ¹ø° ¾Æ±Ô¸ÕÆ®ÀÎ ÇѱÛÀÚ ÇÁ·ÎÁ§Æ® È®ÀÎÀÚÀÇ Á¶ÇÕ¿¡ ÀÇÇØ ¹ß»ýÇÑ´Ù. ÀÌ°ÍÀº À¯ÀϼºÀ» º¸ÀåÇÏÁö ¾ÊÁö¸¸, ÀÀ¿ëÇÁ·Î±×·¥Àº Ãæµ¹À» üũÇÏ¿© Å°¸¦ ´Ù½Ã ¹ß»ý½Ãų ¼ö ÀÖ´Ù.


	key_t	mykey;
	mykey = ftok("/tmp/myapp",'a');

À§ÀÇ ¿¹¿¡¼­, µð·ºÅ丮 "/tmp/myapp"´Â 'a'¶ó´Â ÇѱÛÀÚ¿Í Á¶ÇյȴÙ. ¶Ç ´Ù¸¥ ÀϹÝÀûÀÎ ¿¹´Â ÇöÀç µð·ºÅ丮¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.


	key_t	mykey;
	mykey = ftok(".",'a');

»ç¿ëµÇ´Â Å° ¹ß»ý ¾Ë°í¸®ÁòÀº ÀüÀûÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥ ÇÁ·Î±×·¡¸ÓÀÇ ¸¶À½¿¡ ´Þ·Á ÀÖ´Ù. ÃøÁ¤ÀÌ µ¥µå¶ô(deadlocks), °æÀï»óÅÂÀÇ ¹æÁöµî¿¡ ÀÖ´Â ÇÑ, ¾î¶² ¹æ¹ýÀÌµç ³ªÅ¸³¯ ¼ö ÀÖ´Ù. ¿¹Á¦ÀÇ ¸ñÀûÀº ftok()ÀÇ »ç¿ë¿¡ ÀÖ´Ù. ¸¸¾à °¢ Ŭ¶óÀ̾ðÆ® ÇÁ·Î¼¼½º°¡ °¢±â À¯ÀÏÇÑ È¨ µð·ºÅ丮·Î ºÎÅÍ ¼öÇàµÉ °ÍÀ̶ó°í °¡Á¤ÇÑ´Ù¸é, ¹ß»ýµÇ´Â Å°´Â ¿ì¸®ÀÇ Çʿ並 ÃæÁ·½ÃÄÑ¾ß ÇÑ´Ù.

¾ò¾îÁø Å°°ªÀº IPC °´Ã¼¸¦ ¸¸µé°í Á¢±ÙÇϱâ À§ÇØ ÀÏ·ÃÀÇ IPC ½Ã½ºÅÛ È£Ãâ¿¡¼­ »ç¿ëµÈ´Ù.


ipcs ¸í·É¾î (The ipcs Command)

ipcs ¸í·É¾î´Â ¸ðµç ½Ã½ºÅÛ V IPC °´Ã¼ÀÇ »óŸ¦ ¾ò´Âµ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ ÅøÀÇ ¸®´ª½º ¹öÀüÀº Krishna Balasubramanian¿¡ ÀÇÇØ Á¦À۵Ǿú´Ù.


ipcs	-q:	¸Þ¼¼Áö Å¥(message queues)¸¸À» º¸¿©ÁØ´Ù.
ipcs	-s:	¼¼¸¶ÆÛ(semaphore)¸¸À» º¸¿©ÁØ´Ù.
ipcs	-m:	°øÀ¯ ¸Þ¸ð¸®(shared memory)¸¸À» º¸¿©ÁØ´Ù
ipcs --help:	ºÎ°¡ÀûÀÎ ¾Æ±Ô¸ÕÆ®(arguments)

µðÆúÆ®·Î ¼¼°¡Áö °´Ã¼ÀÇ Á¾·ù°¡ ¸ðµÎ º¸¿©Áø´Ù. ´ÙÀ½ÀÇ °£´ÜÇÑ ipcsÀÇ Ãâ·ÂÀ» »ìÆ캸ÀÚ:


------ Shared Memory Segments --------
shmid     owner     perms     bytes     nattch    status      

------ Semaphore Arrays --------
semid     owner     perms     nsems     status      

------ Message Queues --------
msqid     owner     perms     used-bytes  messages    
0         root      660       5           1

¿©±â¼­ ¿ì¸®´Â "0"À̶ó´Â È®ÀÎÀÚ(Identifier)¸¦ °¡Áø ´ÜÀÏ ¸Þ¼¼Áö Å¥(single message queue)¸¦ º¼ ¼ö ÀÖ´Ù. ±×°ÍÀÇ ÁÖÀÎÀº root »ç¿ëÀÚÀÌ°í, 660(-rw-rw--)ÀÇ 8Áø Çã°¡»çÇ×À» °¡Áö°í ÀÖ´Ù. Å¥¿¡´Â ÇÑ°³ÀÇ ¸Þ¼¼Áö°¡ ÀÖ°í, ¸Þ¼¼ÁöÀÇ ÃÑ Å©±â´Â 5¹ÙÀÌÆ®ÀÌ´Ù.

ipcs ¸í·É¾î´Â IPC °´Ã¼¿¡ ´ëÇØ Ä¿³ÎÀÇ ÀúÀå Á¶Á÷À» ¿³º¼ ¼ö ÀÖ´Â °¡Àå °­·ÂÇÑ µµ±¸ÀÌ´Ù.


ipcrm ¸í·É¾î (The ipcrm Command)

ipcrm ¸í·É¾î´Â Ä¿³Î·Î ºÎÅÍ IPC °´Ã¼¸¦ Á¦°ÅÇϴµ¥ »ç¿ëµÈ´Ù. IPC °´Ã¼´Â »ç¿ëÀÚ Äڵ峻¿¡¼­ ½Ã½ºÅÛ È£ÃâÀ» °æ¿ìÇÏ¿© Á¦°ÅµÉ ¼ö ÀÖÀ¸¸ç, ƯÈ÷ °³¹ß ȯ°æÇÏ¿¡¼­ Á¾Á¾ ¼öµ¿À¸·Î IPC °´Ã¼¸¦ Á¦°ÅÇؾßÇÒ ÇÊ¿ä°¡ ¹ß»ýÇÑ´Ù. »ç¿ë¹ýÀº °£´ÜÇÏ´Ù.:


ipcrm <msg | sem | shm>  <IPC ID>


Áö¿ï °´Ã¼°¡ ¸Þ¼¼Áö Å¥(msg)ÀÎÁö ¼¼¸¶ÆÛ(sem)ÀÎÁö °øÀ¯ ¸Þ¸ð¸®(shm)ÀÎÁö¸¦ °£´ÜÈ÷ ÁöÁ¤ÇÑ´Ù. IPC ID´Â ipcs ¸í·É¾î·Î ±¸ÇÒ ¼ö ÀÖ´Ù. È®ÀÎÀÚ´Â °°Àº ŸÀԾȿ¡¼­¸¸ À¯ÀÏÇÔÀ¸·Î °´Ã¼ÀÇ Å¸ÀÔÀ» ÁöÁ¤ÇØ ÁÖ¾î¾ß¸¸ ÇÑ´Ù. (¾ÕÀÇ ³»¿ëÀ» »ó±âÇ϶ó)


ÀÌÀü:6.4 ½Ã½ºÅÛ V IPC (System V IPC) ´ÙÀ½:6.4.2 ¸Þ¼¼Áö Å¥ (Massge Queues)

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Nov 18,1997
Created Nov 17,1997