3.6 °øÀ¯¸Þ¸ð¸® »ç¿ëÇϱâ

¹ö½º¸¶½ºÅÍ DMA ÀåÄ¡µéÀ» À§ÇØ ¹Ì´ÏÆ÷Æ® NIC µå¶óÀ̹öµéÀº NIC °ú NIC µå¶óÀ̹ö¿¡ ÀÇÇØ »ç¿ëÀ» À§ÇØ °øÀ¯µÈ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¾ß ÇÑ´Ù. Ưº° ¹Ì¸® Á¶½ÉÀº ±×·¯ÇÑ µå¶óÀ̹ö¿Í NIC »çÀÌ¿¡ ij½¬µÈ ¸Þ¸ð¸®¸¦ °øÀ¯ÇÒ ¶§ ÇÊ¿äÇÏ´Ù. ¾î¶² ¾ÆÅ°ÅØÃ³¿¡¼­, ƯÁ¤ ´Ü°èµéÀÌ ¸Þ¸ð¸®°¡ NIC µå¶óÀ̹ö°¡ ij½¬¸¦ ÅëÇØ ¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ´Â µ¿¾È Á÷Á¢ °øÀ¯µÈ ¹°¸® ¸Þ¸ð¸®¸¦ Á¢±ÙÇÒ ¼ö Àֱ⠶§¹®¿¡ coherentÇÏ´Ù´Â °ÍÀ» È®½ÇÈ÷ Çϱâ À§ÇØ ÃëÇØÁø´Ù. À̰ÍÀº ¸¸¾à ±×µéÀÌ °°Àº À§Ä¡¸¦ º»´Ù¸éÀº ¸Þ¸ð¸®³»¿¡ µå¶óÀ̹ö¿Í NICÀÌ °¨ÁöÇÏ´Â Á¡¿¡¼­ Â÷ÀÌÁ¡À» ¾ß±âÇÒ ¼ö ÀÖ´Ù.

ºñij½¬È­µÈ °øÀ¯ ¸Þ¸ð¸®ÀÇ »ç¿ëÀº ij½¬È­µÈ °øÀ¯ ¸Þ¸ð¸®¿Í °ü·ÃµÈ ´ëºÎºÐÀÇ ¹®Á¦µéÀ» ÇÇÇÑ´Ù. ±×·¯³ª, ºñij½¬È­µÈ ¸Þ¸ð¸®´Â ºÎÁ·ÇÑ ½Ã½ºÅÛ ÀÚ¿øÀÌ°í ±×·¯ÇÑ ¸Þ¸ð¸®ÀÇ ÇÒ´çÀº Á¦ÇÑµÉ ¼ö ÀÖ´Ù. ½ÇÁ¦ ¸Þ¸ð¸®¿¡ ¾²¿©Áö´Â µ¥ÀÌÅͰ¡ Á¶±×¸¶ÇÑ ¾²±â Å¥¸¦ »ç¿ëÇØ¾ß ÇÒ ¶§, ºñij½¬È­µÈ µ¥ÀÌÅÍ´Â Áï½Ã ½ÇÁ¦ ¸Þ¸ð¸®³»¿¡ ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÌ´Ù. Ãß°¡ÀûÀ¸·Î, ºñij½¬È­µÈ ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÃßõµÇÁöµµ °¡´ÉÇÏÁöµµ ¾Ê´Â °æ¿ìµéÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î, NIC µå¶óÀ̹ö°¡ ¹Ýº¹ÀûÀ¸·Î Àд µ¥ÀÌÅÍ´Â Ç×»ç ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱â À§ÇØ Ä³½¬È­µÉ °ÍÀÌ´Ù. ȤÀº ¶ÇÇϳªÀÇ ¿¹Ã³·³, NIC µå¶óÀ̹ö´Â ¸¹Àº ´Ù¸¥ ÇÁ·ÎÅäÄÝ µå¶óÀ̹öµéÀÌ ¼ö½ÅµÈ µ¥ÀÌÅÍ ÆÐŶÀ» Àü´ÞÇϴµ¥ ÇÊ¿ä·Î µÉ °ÍÀÌ´Ù. ij½¬È­µÈ ¸Þ¸ð¸®´Â ÀÌ·¯ÇÑ °æ¿ì¿¡ ³ô°Ô ÃßõµÇ¾îÁú °ÍÀÌ´Ù. NIC µå¶óÀ̹ö´Â ¶ÇÇÑ ÇÁ·ÎÅäÄÝ µå¶óÀ̹ö¿¡ ÀÇÇØ Àü´ÞµÇ¾îÁö´Â ¾î¶² µ¥ÀÌÅ͸¦ À§ÇØ Ä³½¬È­µÈ ¸Þ¸ð¸®¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.

NdisMAllocateSharedMemory ÇÔ¼ö´Â ³×Æ®¿öÅ© ¾î´ðÅÍ¿Í NIC µå¶óÀ̹ö »çÀÌ¿¡ ¿µ¿øÇÑ °øÀ¯¸¦ À§ÇØ ¸Þ¸ð¸®¸¦ ÇÒ´çÇϱâ À§ÇØ ¹ö½º¸¶½ºÅÍ NIC µå¶óÀ̹ö¿¡ ÀÇÇØ È£ÃâµÇ¾îÁú ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ÇÔ¼ö´Â °¡»ó ÁÖ¼Ò¸¦ ¸®ÅÏÇÏ°í °øÀ¯ ¸Þ¸ð¸®¸¦ À§ÇØ ½ÇÁ¦ ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù. ÁÖ¼ÒµéÀº NdisMFreeSharedMemory¿¡ ´ëÇÑ È£Ãâ·Î ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÒ ¶§±îÁö À¯È¿ÇÏ´Ù.

°øÀ¯ ij½¬È­µÈ ¸Þ¸ð¸®°¡ »ç¿ëµÇ¾î Áú¶§, NDIS´Â NICÀÌ º¸´Â °Í°ú NIC µå¶óÀ̹ö°¡ º¸´Â °Í »çÀÌ¿¡ coherency¸¦ È®½ÇÈ÷ Çϱâ À§ÇØ NIC µå¶óÀ̹ö¿¡ ÀÇÇØ È£ÃâµÇ¾îÁú ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. º¸³»±â ȤÀº ¹Þ±â¿¡¼­ °øÀ¯ ¸Þ¸ð¸®¸¦ Á¢±ÙÇϱâ Àü¿¡, NIC µå¶óÀ̹ö´Â NdisFlushBuffer¸¦ È£ÃâÇØ¾ß ÇÏ°í ¶ÇÇÑ Ä³½¬ coherence¸¦ È®½ÇÈ÷ Çϱâ À§ÇØ NdisMUpdateSharedMeory¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.