<?xml version="1.0" encoding="EUC-KR" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.ko.xsl"?>
<!-- English Revision: 106090:151405 (outdated) -->

<!--
 Copyright 2003-2004 The Apache Software Foundation

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="dso.xml.meta">

  <title>µ¿Àû°øÀ¯°´Ã¼ (DSO) Áö¿ø</title>

  <summary>
    <p>¾ÆÆÄÄ¡ À¥¼­¹ö´Â °ü¸®ÀÚ°¡ ¸ðµâµéÀ» ¼±ÅÃÇÏ¿© ¼­¹ö¿¡ Æ÷ÇÔÇÒ
    ±â´ÉÀ» °áÁ¤ÇÒ ¼ö ÀÖ´Â ¸ðµâÈ­µÈ ÇÁ·Î±×·¥ÀÌ´Ù. ¼­¹ö¸¦ ÄÄÆÄÇÒ¶§
    <code>httpd</code> ½ÇÇàÆÄÀÏ¿¡ Á¤ÀûÀ¸·Î ¸ðµâÀ» ÄÄÆÄÀÏÇÒ
    ¼ö ÀÖ´Ù. ¾Æ´Ï¸é ¸ðµâÀ» <code>httpd</code> ½ÇÇàÆÄÀÏ°ú
    ºÐ¸®ÇÏ¿© µ¿Àû°øÀ¯°´Ã¼(Dynamic Shared Objects, DSO)·Î ÄÄÆÄÀÏÇÒ
    ¼ö ÀÖ´Ù. DSO ¸ðµâÀº ¼­¹ö¸¦ ÄÄÆÄÀÏÇÒ¶§ ÄÄÆÄÀÏÇÏ°Å³ª, Apache
    Extension Tool (<a href="programs/apxs.html">apxs</a>)À»
    »ç¿ëÇÏ¿© ³ªÁß¿¡ ÄÄÆÄÀÏÇÏ¿© Ãß°¡ÇÒ ¼ö ÀÖ´Ù.</p>

    <p>ÀÌ ¹®¼­´Â DSO ¸ðµâ »ç¿ë¹ý°ú ¹è°æ ÀÌ·ÐÀ» ¼³¸íÇÑ´Ù.</p>
  </summary>


<section id="implementation"><title>±¸Çö</title>

<related>
<modulelist>
<module>mod_so</module>
</modulelist>
<directivelist>
<directive module="mod_so">LoadModule</directive>
</directivelist>
</related>

    <p>¾ÆÆÄÄ¡ ÇÙ½É¿¡ Á¤ÀûÀ¸·Î ÄÄÆÄÀÏÇØ¾ßÇÒ
    <module>mod_so.c</module>¶ó´Â ¸ðµâÀº ¾ÆÆÄÄ¡ ¸ðµâÀ»
    ÀÐ¾îµéÀÌ±âÀ§ÇÑ DSO¸¦ Áö¿øÇÑ´Ù.
    ÀÌ ¸ðµâÀº <module>core</module>¸¦ Á¦¿ÜÇÏ°í DSO°¡
    µÉ ¼ö ¾ø´Â À¯ÀÏÇÑ ¸ðµâÀÌ´Ù. ½ÇÁ¦·Î ´Ù¸¥ ¸ðµç ¾ÆÆÄÄ¡ ¸ðµâÀº
    <a href="install.html">¼³Ä¡ ¹®¼­</a>¿¡¼­ ¼³¸íÇÑ
    <code>configure</code>ÀÇ <code>--enable-<em>module</em>=shared</code>
    ¿É¼ÇÀ» »ç¿ëÇÏ¿© DSO·Î ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. ¸ðµâÀ»
    <code>mod_foo.so</code>¿Í °°ÀÌ DSO·Î ÄÄÆÄÀÏÇÑÈÄ <code>httpd.conf</code>
    ÆÄÀÏ¿¡ <module>mod_so</module>ÀÇ
    <directive module="mod_so">LoadModule</directive> ¸í·É¾î¸¦
    »ç¿ëÇÏ¿© ¼­¹ö ½ÃÀÛ½Ã È¤Àº Àç½ÃÀÛ½Ã ±× ¸ðµâÀ» ÀÐ¾îµéÀÏ ¼ö
    ÀÖ´Ù.</p>

    <p>¾ÆÆÄÄ¡ ¸ðµâ(Æ¯È÷ Á¦»ïÀÚ°¡ ¸¸µç ¸ðµâ)·Î »ç¿ëÇÒ DSO ÆÄÀÏÀ» ½±°Ô
    ¸¸µé±âÀ§ÇØ <a href="programs/apxs.html">apxs</a> (<em>APache
    eXtenSion</em>)¶ó´Â »õ·Î¿î Áö¿ø ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥Àº
    ¾ÆÆÄÄ¡ ¼Ò½º Æ®¸® <em>¹Û¿¡¼­</em> DSO·Î »ç¿ëÇÒ ¸ðµâÀ»
    ÄÄÆÄÀÏÇÒ¶§ »ç¿ëÇÑ´Ù. °³³äÀº ½±´Ù. ¾ÆÆÄÄ¡¸¦ ¼³Ä¡ÇÒ¶§
    <code>configure</code>¿Í <code>make install</code>ÀÌ
    ¾ÆÆÄÄ¡ C Çì´õÆÄÀÏÀ» ¼³Ä¡ÇÏ°í, DSO ÆÄÀÏÀ» ÄÄÆÄÀÏÇÏ±âÀ§ÇÑ
    ÇÃ·¡Æû Æ¯À¯ÀÇ ÄÄÆÄÀÏ·¯ ¿É¼Ç°ú ¸µÄ¿ ¿É¼ÇÀ» <code>apxs</code>
    ÇÁ·Î±×·¥¿¡ ±â·ÏÇÑ´Ù. ±×·¡¼­ <code>apxs</code>¸¦ »ç¿ëÇÏ´Â »ç¿ëÀÚ´Â
    ¾ÆÆÄÄ¡ ¹èÆ÷º» ¼Ò½º Æ®¸®¾øÀÌ, ¶Ç DSO Áö¿øÀ» À§ÇÑ ÇÃ·¡Æû Æ¯À¯ÀÇ
    ÄÄÆÄÀÏ·¯ ¿É¼Ç¿Í ¸µÄ¿ ¿É¼Ç¿¡ ½Å°æÀ» ¾²Áö¾Ê°í ÀÚ½ÅÀÇ ¾ÆÆÄÄ¡
    ¸ðµâ ¼Ò½º¸¦ ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù.</p>
</section>

<section id="usage"><title>»ç¿ë¹ý ¿ä¾à</title>

    <p>Apache 2.0ÀÇ DSO ±â´É¿¡ ´ëÇÑ Âª°í °£·«ÇÑ ¿ä¾àÀÌ´Ù:</p>

    <ol>
      <li>
        <em>¹èÆ÷º»¿¡ ÀÖ´Â</em> ¾ÆÆÄÄ¡ ¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â
        °æ¿ì. ¿¹¸¦ µé¾î <code>mod_foo.c</code>¸¦ DSO
        <code>mod_foo.so</code>·Î:

<example>
$ ./configure --prefix=/path/to/install --enable-foo=shared<br />
$ make install
</example>
      </li>

      <li>
        <em>Á¦»ïÀÚ°¡ ¸¸µç</em> ¾ÆÆÄÄ¡ ¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â
        °æ¿ì. ¿¹¸¦ µé¾î <code>mod_foo.c</code>¸¦ DSO
        <code>mod_foo.so</code>·Î:

<example>
$ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared<br />
$ make install
</example>
      </li>

      <li>
        °øÀ¯ ¸ðµâÀ» <em>³ªÁß¿¡ »ç¿ëÇÏ±âÀ§ÇØ</em> ¾ÆÆÄÄ¡¸¦ ±¸¼ºÇÏ´Â
        °æ¿ì:

<example>
$ ./configure --enable-so<br />
$ make install
</example>
      </li>

      <li>
        <em>Á¦»ïÀÚ°¡ ¸¸µç</em> ¾ÆÆÄÄ¡ ¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â
        °æ¿ì. <a href="programs/apxs.html">apxs</a>¸¦ »ç¿ëÇÏ¿©
        ¾ÆÆÄÄ¡ ¼Ò½º Æ®¸® <em>¹Û¿¡¼­</em> <code>mod_foo.c</code>¸¦
        DSO <code>mod_foo.so</code>·Î:

<example>
$ cd /path/to/3rdparty<br />
$ apxs -c mod_foo.c<br />
$ apxs -i -a -n foo mod_foo.la
</example>
      </li>
    </ol>

    <p>¸ðµç °æ¿ì ÀÏ´Ü °øÀ¯ ¸ðµâÀÌ ÄÄÆÄÀÏµÇ¸é, <code>httpd.conf</code>¿¡
    <directive module="mod_so">LoadModule</directive> Áö½Ã¾î¸¦
    »ç¿ëÇÏ¿© ¾ÆÆÄÄ¡°¡ ±× ¸ðµâÀ» ÀÐ¾îµéÀÌ°Ô ¸¸µç´Ù.</p>
</section>

<section id="background"><title>¹è°æÁö½Ä</title>

    <p>Çö´ëÀûÀÎ À¯´Ð½º·ù¿¡´Â <em>µ¿Àû°øÀ¯°´Ã¼</em> (DSO)ÀÇ
    µ¿Àû ¸µÅ·/·Îµù(dynamic linking/loading)ÀÌ¶ó°í ÇÏ¿©, Æ¯º°ÇÑ
    Çü½ÄÀÇ ½ÇÇàÄÚµå Á¶°¢À» ¸¸µé¾î ½ÇÇàÁßÀÎ ½ÇÇàÇÁ·Î±×·¥ÀÇ
    ÁÖ¼Ò°ø°£¿¡ ÀÐ¾îµéÀÌ´Â ¸ÚÁø ±â´ÉÀÌ ÀÖ´Ù.</p>

    <p>º¸Åë µÎ°¡Áö ¹æ¹ýÀ¸·Î ÀÐ¾îµéÀÏ ¼ö ÀÖ´Ù. ÇÏ³ª´Â ½ÇÇàÇÁ·Î±×·¥ÀÌ
    ½ÃÀÛÇÒ¶§ <code>ld.so</code>¶ó´Â ½Ã½ºÅÛ ÇÁ·Î±×·¥ÀÌ ÀÚµ¿À¸·Î
    ÀÐ¾îµéÀÌ´Â °æ¿ì°í, ´Ù¸¥ ÇÏ³ª´Â ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥ÀÌ
    <code>dlopen()/dlsym()</code> ½Ã½ºÅÛÈ£Ãâ·Î À¯´Ð½º ·Î´õ(loader)ÀÇ
    ½Ã½ºÅÛ ÀÎÅÍÆäÀÌ½ºÀ» »ç¿ëÇÏ¿© Á÷Á¢ ÀÐ¾îµéÀÌ´Â °æ¿ì´Ù.</p>

    <p>Ã¹¹øÂ° °æ¿ì DSO¸¦ º¸Åë <em>°øÀ¯¶óÀÌºê·¯¸®(shared libraries)</em>
    È¤Àº <em>DSO ¶óÀÌºê·¯¸®</em>¶ó°í ºÎ¸£¸ç, ÆÄÀÏÀº
    <code>libfoo.so</code>³ª <code>libfoo.so.1.2</code> °°Àº
    ÀÌ¸§À» °¡Áø´Ù. ÀÌµéÀº ½Ã½ºÅÛ µð·ºÅä¸®(º¸Åë <code>/usr/lib</code>)¿¡
    ÀÖ°í, ÄÄÆÄÀÏ½Ã ¸µÄ¿ ¸í·É¾î¿¡ <code>-lfoo</code>¸¦ ÁÖ¾î
    ½ÇÇàÆÄÀÏ°ú ¿¬°áÇÑ´Ù. ÀÌ·¸°Ô Á÷Á¢ ½áÁØ ¶óÀÌºê·¯¸®´Â ½ÇÇàÆÄÀÏ¿¡
    ÂüÁ¶µÇ¿©¼­, ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ¶§ ¸µÄ¿ ¿É¼Ç <code>-R</code>·Î
    Á÷Á¢ ÁöÁ¤ÇÑ °æ·Î, È¯°æº¯¼ö <code>LD_LIBRARY_PATH</code>·Î
    ÁöÁ¤ÇÑ °æ·Î È¤Àº <code>/usr/lib</code>¿¡¼­ À¯´Ð½º ·Î´õ°¡
    <code>libfoo.so</code>¸¦ Ã£À» ¼ö ÀÖ´Ù. ±×·¯¸é ½ÇÇàÇÁ·Î±×·¥ÀÇ
    (¾ÆÁ÷ ¸øÃ£Àº(unresolved)) ½Éº¼(symbol)À» DSO¿¡¼­ Ã£°ÔµÈ´Ù.</p>

    <p>DSO´Â º¸Åë ½ÇÇàÇÁ·Î±×·¥ÀÇ ½Éº¼À» Ã£Áö¾Ê±â ¶§¹®¿¡ (DSO°¡
    Àç»ç¿ë°¡´ÉÇÑ ÀÏ¹ÝÀûÀÎ ÄÚµå ¶óÀÌºê·¯¸®ÀÌ¹Ç·Î) Ã£±â´Â ¿©±â¼­
    ³¡³­´Ù. À¯´Ð½º ·Î´õ°¡ ½Éº¼ Ã£±â¸¦ ¿ÏÀüÈ÷ ´ã´çÇÏ¹Ç·Î ½ÇÇàÇÁ·Î±×·¥ÀÌ
    Á÷Á¢ DSO¿¡¼­ ½Éº¼À» Ã£À» ÇÊ¿ä°¡ ¾ø´Ù. (»ç½Ç <code>ld.so</code>¸¦
    ºÎ¸£´Â ÄÚµå´Â Á¤ÀûÀÌ ¾Æ´Ñ ¸ðµç ½ÇÇàÇÁ·Î±×·¥¿¡ ¸µÅ©µÇ´Â ½ÇÇà½Ã
    ½ÃÀÛÄÚµåÀÇ ÀÏºÎ´Ù.) °øÅëµÈ ¶óÀÌºê·¯¸® ÄÚµå¸¦ µ¿ÀûÀ¸·Î ÀÐ¾îµéÀÌ´Â
    ÀåÁ¡Àº ¸íÈ®ÇÏ´Ù. ¶óÀÌºê·¯¸® ÄÚµå°¡ ¸ðµç ÇÁ·Î±×·¥¿¡ Áßº¹ÇØ¼­
    ÀúÀåµÇ´Â ´ë½Å <code>libc.so</code>¿Í °°Àº ½Ã½ºÅÛ ¶óÀÌºê·¯¸®¿¡
    ÇÑ¹ø¸¸ ÀúÀåµÇ±â ¶§¹®¿¡ µð½ºÅ© °ø°£ÀÌ Àý¾àµÈ´Ù.</p>

    <p>µÎ¹øÂ° °æ¿ì DSO¸¦ º¸Åë <em>°øÀ¯°´Ã¼(shared objects)</em>
    È¤Àº <em>DSO ÆÄÀÏ</em>ÀÌ¶ó°í ºÎ¸£°í, (±ÔÄ¢»ó ÀÌ¸§Àº
    <code>foo.so</code>ÀÌÁö¸¸) ÆÄÀÏÀÇ È®ÀåÀÚ´Â ÀÚÀ¯·Ó´Ù. ÀÌ
    ÆÄÀÏµéÀº º¸Åë ÇÁ·Î±×·¥ ÀÚÃ¼ µð·ºÅä¸®¿¡ À§Ä¡ÇÏ°í ½ÇÇàÇÁ·Î±×·¥¿¡
    ÀÚµ¿À¸·Î ¿¬°áµÇÁö ¾Ê´Â´Ù. ´ë½Å ½ÇÇàÇÁ·Î±×·¥Àº ½ÇÇà½Ã
    <code>dlopen()</code>À» »ç¿ëÇÏ¿© DSO¸¦ ÁÖ¼Ò°ø°£¿¡
    Á÷Á¢ ÀÐ¾îµé¿©¾ß ÇÑ´Ù. ÀÌ¶§ ½ÇÇàÇÁ·Î±×·¥Àº DSO¿¡¼­ ½Éº¼À»
    Ã£Áö ¾Ê´Â´Ù. ´ë½Å ¾Õ¿¡¼­ º» À¯´Ð½º ·Î´õ´Â ÀÚµ¿À¸·Î ½ÇÇàÆÄÀÏ°ú
    ½ÇÇàÆÄÀÏÀÌ ÀÌ¹Ì ÀÐ¾îµéÀÎ DSO ¶óÀÌºê·¯¸®(Æ¯È÷ Ç×»ó Á¸ÀçÇÏ´Â
    <code>libc.so</code>ÀÇ ¸ðµç ½Éº¼)¿¡¼­ DSOÀÇ (¾ÆÁ÷ ¸øÃ£Àº)
    ½Éº¼À» Ã£´Â´Ù. ±×·¡¼­ DSO´Â ¸¶Ä¡ Ã³À½ºÎÅÍ ½ÇÇàÇÁ·Î±×·¥¿¡
    Á¤ÀûÀ¸·Î ¸µÅ©µÈ°Í°ú °°ÀÌ ½ÇÇàÆÄÀÏÀÇ ½Éº¼À» ¾Ë°ÔµÈ´Ù.</p>

    <p>DSOÀÇ API¸¦ ÀÌ¿ëÇÏ±âÀ§ÇØ¼­ ¸¶Áö¸·À¸·Î ½ÇÇàÇÁ·Î±×·¥Àº
    <code>dlsym()</code>À¸·Î DSO¿¡¼­ Æ¯Á¤ ½Éº¼À» Ã£¾Æ¼­, ¾ÕÀ¸·Î
    »ç¿ëÇÏ±âÀ§ÇØ µð½ºÆÐÄ¡(dispatch) Ç¥ <em>µî</em>¿¡ ÀúÀåÇÑ´Ù.
    ´Ù¸¥ ¸»·Î ½ÇÇàÇÁ·Î±×·¥Àº »ç¿ëÇÒ ¸ðµç ½Çº¼À» Á÷Á¢ Ã£¾Æ¾ßÇÑ´Ù.
    ÀÌ·± ±¸Á¶ÀÇ ÀåÁ¡Àº ÇÁ·Î±×·¥ÀÇ ÀÏºÎ¸¦ ÇÁ·Î±×·¥ÀÌ
    ÇÊ¿äÇÒ¶§±îÁö ÀÐ¾îµéÀÌÁö ¾Ê¾Æµµ (±×·¡¼­ ¸Þ¸ð¸®¸¦ ³¶ºñÇÏÁö
    ¾Ê°Ô) µÈ´Ù´Â Á¡ÀÌ´Ù. ±âº» ÇÁ·Î±×·¥ÀÇ ±â´ÉÀ» È®ÀåÇÏ±âÀ§ÇØ
    ÇÊ¿äÇÑ °æ¿ì ÀÌ ºÎºÐÀ» µ¿ÀûÀ¸·Î ÀÐ¾îµéÀÏ ¼ö ÀÖ´Ù.</p>

    <p>ÀÌ·± DSO ±¸Á¶°¡ ÀÚ¿¬½º·´°Ô º¸ÀÌÁö¸¸, ÃÖ¼ÒÇÑ ¾î·Á¿î Á¡ÀÌ
    ÇÑ°¡ÁöÀÖ´Ù. ÇÁ·Î±×·¥À» È®ÀåÇÏ±âÀ§ÇØ DSO¸¦ »ç¿ëÇÒ¶§ DSO°¡
    ½ÇÇàÇÁ·Î±×·¥ÀÇ ½Éº¼À» Ã£´Â ÀÏÀÌ´Ù. ¿Ö? DSO°¡ ½ÇÇàÇÁ·Î±×·¥ÀÇ
    ½Éº¼À» "¿ªÀ¸·Î Ã£´Â °Í"Àº (¶óÀÌºê·¯¸®´Â ÀÚ½ÅÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥¿¡
    ´ëÇØ ¸ð¸¥´Ù´Â) ¶óÀÌºê·¯¸® ¼³°è¿¡ ¹ÝÇÏ¸ç, ¸ðµç ÇÃ·¡Æû¿¡¼­
    Áö¿øµÇÁö¾Ê°í Ç¥ÁØÈ­µÇÁöµµ ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ½ÇÁ¦·Î ½ÇÇàÆÄÀÏÀÇ
    Àü¿ª½Éº¼(global symbol)Àº º¸Åë ÀÍ½ºÆ÷Æ®(export)µÇÁö ¾Ê±â¶§¹®¿¡
    DSO°¡ »ç¿ëÇÒ ¼ö ¾ø´Ù. DSO¸¦ »ç¿ëÇÏ¿© ½ÇÇàÁß ÇÁ·Î±×·¥À» È®ÀåÇÏ·Á¸é
    ¸µÄ¿¿¡°Ô ¸ðµç Àü¿ª½Éº¼À» ÀÍ½ºÆ÷Æ®ÇÏµµ·Ï °­Á¦ÇÏ´Â °ÍÀÌ ÁÖµÈ
    ÇØ°áÃ¥ÀÌ´Ù.</p>

    <p>°øÀ¯¶óÀÌºê·¯¸®´Â DSO ¹æ½ÄÀÇ ¼³°è¿øÄ¢´ë·Î ÀüÇüÀûÀÌ±â¶§¹®¿¡
    ¿î¿µÃ¼Á¦°¡ Á¦°øÇÏ´Â °ÅÀÇ ¸ðµç Á¾·ùÀÇ ¶óÀÌºê·¯¸®°¡ »ç¿ëÇÑ´Ù.
    ¹Ý´ë·Î ¸¹Àº ÇÁ·Î±×·¥Àº ÇÁ·Î±×·¥À» È®ÀåÇÏ±âÀ§ÇØ °øÀ¯°´Ã¼¸¦
    »ç¿ëÇÏÁö ¾Ê´Â´Ù.</p>

    <p>1998³â ½ÇÇàÁß ½ÇÁ¦·Î ±â´ÉÀ» È®ÀåÇÏ±âÀ§ÇØ DSO ±¸Á¶¸¦ »ç¿ëÇÑ
    ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°Áö´Â (XS ±¸Á¶¿Í DynaLoader ¸ðµâÀ» »ç¿ëÇÑ)
    Perl 5, Netscape Server <em>µî</em>À¸·Î µå¹°¾ú´Ù. ¾ÆÆÄÄ¡´Â
    ÀÌ¹Ì ±â´ÉÀ» È®ÀåÇÏ±âÀ§ÇØ ¸ðµâ °³³äÀ» »ç¿ëÇß°í ¿ÜºÎ ¸ðµâÀ»
    ¾ÆÆÄÄ¡ ÇÙ½É±â´É¿¡ ¿¬°áÇÏ±âÀ§ÇØ ³»ºÎÀûÀ¸·Î µð½ºÆÐÄ¡¸ñ·ÏÀ»
    ÀÌ¿ëÇÑ Á¢±Ù¹æ¹ýÀ» »ç¿ëÇß±â¶§¹®¿¡ 1.3 ¹öÀüºÎÅÍ ÀÌ ´ë¿­¿¡ ÇÕ·ùÇß´Ù.
    ±×·¡¼­ ¾ÆÆÄÄ¡´Â ½ÇÇàÁß ¸ðµâÀ» ÀÐ¾îµéÀÌ´Âµ¥ DSO¸¦ »ç¿ëÇÏµµ·Ï
    ¿î¸íÁö¿öÁ³´Ù.</p>
</section>

<section id="advantages"><title>Àå´ÜÁ¡</title>

    <p>¾Õ¿¡¼­ ¸»ÇÑ DSO¸¦ »ç¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ´Ù:</p>

    <ul>
      <li>½ÇÁ¦ ¼­¹ö ÇÁ·Î¼¼½º°¡ ÄÄÆÄÀÏ½Ã <code>configure</code>
      ¿É¼Ç´ë½Å <code>httpd.conf</code>ÀÇ <directive
      module="mod_so">LoadModule</directive>À» »ç¿ëÇÏ¿© ½ÇÇàÁß¿¡
      °áÇÕµÇ¹Ç·Î ¼­¹ö ÆÐÅ°Áö ½ÇÇàÀÌ ´õ À¯¿¬ÇÏ´Ù. ¿¹¸¦ µé¾î ÇÑ¹øÀÇ
      ¾ÆÆÄÄ¡ ¼³Ä¡¸¸À¸·Î ´Ù¸¥ ¼­¹ö(Ç¥ÁØ ¹öÀü°ú SSL ¹öÀü, ÃÖ¼ÒÈ­
      ¹öÀü°ú ±â´ÉÃß°¡ ¹öÀü [mod_perl, PHP3] <em>µî</em>)¸¦ ½ÇÇàÇÒ
      ¼ö ÀÖ´Ù.</li>

      <li>¼­¹ö´Â ¼³Ä¡ÈÄ¿¡µµ Á¦»ïÀÚ°¡ ¸¸µç ¸ðµâÀ» »ç¿ëÇÏ¿© ½±°Ô
      È®ÀåÇÒ ¼ö ÀÖ´Ù. ÃÖ¼ÒÇÑ ±â¾÷ÀÇ ÆÐÅ°Áö Á¦ÀÛÀÚ´Â ¾ÆÆÄÄ¡ ÇÙ½É
      ÆÐÅ°Áö¿Í º°µµ·Î PHP3, mod_perl, mod_fastcgi <em>µî</em>À»
      Ãß°¡ ÆÐÅ°Áö·Î ¸¸µé ¼ö ÀÖ¾î¼­ Å« ÀÌµæÀÌ´Ù.</li>

      <li>DSO¿Í <code>apxs</code>¸¦ °¡Áö°í ¾ÆÆÄÄ¡ ¼Ò½º Æ®¸® ¹Û¿¡¼­
      ÀÛ¾÷ÇÏ°í <code>apxs -i</code>¿Í <code>apachectl restart</code>
      ¸í·É¾î¸¸À¸·Î ÇöÀç °³¹ßÇÑ ¸ðµâÀÇ »õ ¹öÀüÀ» ½ÇÇàÁßÀÎ ¾ÆÆÄÄ¡
      ¼­¹ö¿¡ ¹Ý¿µÇÒ ¼ö ÀÖ¾î¼­ ´õ ½±°Ô ¾ÆÆÄÄ¡ ¸ðµâÀ» °³¹ßÇÒ ¼ö
      ÀÖ´Ù.</li>
    </ul>

    <p>DSO´Â ´ÙÀ½°ú °°Àº ´ÜÁ¡ÀÌ ÀÖ´Ù:</p>

    <ul>
      <li>ÇÁ·Î±×·¥ÀÇ ÁÖ¼Ò°ø°£¿¡ ÄÚµå¸¦ µ¿ÀûÀ¸·Î ÀÐ¾îµéÀÌ´Â ±â´ÉÀ»
      Áö¿øÇÏÁö¾Ê´Â ¿î¿µÃ¼Á¦°¡ ÀÖ±â ¶§¹®¿¡ ¸ðµç ÇÃ·¡Æû¿¡¼­ DSO¸¦
      »ç¿ëÇÒ ¼ö ¾ø´Ù.</li>

      <li>À¯´Ð½º ·Î´õ°¡ ½Éº¼À» Ã£¾Æ¾ßÇÏ±â ¶§¹®¿¡ ¼­¹ö ½ÃÀÛÀÌ
      ¾à 20% Á¤µµ ´Ê¾îÁø´Ù.</li>

      <li>¼­¹ö´Â À§Ä¡µ¶¸³ÄÚµå(position independent code, PIC)
      ¶§¹®¿¡ Àý´ëÁÖ¼ÒÁöÁ¤(absolute addressing)º¸´Ù ´À¸°
      »ó´ëÁÖ¼ÒÁöÁ¤(relative addressing)ÀÇ º¹ÀâÇÑ ¾î¼Àºí·¯ ±â¹ýÀÌ
      ÇÊ¿äÇÏ¹Ç·Î ¾î¶² ÇÃ·¡Æû¿¡¼­ ½ÇÇà½Ã ¾à 5% Á¤µµ ´Ê´Ù.</li>

      <li>DSO ¸ðµâÀ» ´Ù¸¥ DSO±â¹Ý ¶óÀÌºê·¯¸®(<code>ld -lfoo</code>)¿¡
      ¸µÅ©ÇÒ ¼ö ¾ø´Â ÇÃ·¡ÆûÀÌ ÀÖ±â¶§¹®¿¡ (¿¹¸¦ µé¾î ELF±â¹Ý
      ÇÃ·¡ÆûÀº Áö¿øÇÏÁö¸¸ a.out±â¹Ý ÇÃ·¡ÆûÀº º¸Åë ÀÌ ±â´ÉÀ»
      Áö¿øÇÏÁö ¾Ê´Â´Ù) ¸ðµç Á¾·ùÀÇ ¸ðµâ¿¡ DSO¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù.
      ´Ù¸¥ ¸»·Î DSO ÆÄÀÏ·Î ÄÄÆÄÀÏÇÏ´Â ¸ðµâÀº ¾ÆÆÄÄ¡ ÇÙ½É°ú ¾ÆÆÄÄ¡
      ÇÙ½ÉÀÌ »ç¿ëÇÏ´Â C ¶óÀÌºê·¯¸®(<code>libc</code>)¿Í ´Ù¸¥
      µ¿Àû/Á¤Àû ¶óÀÌºê·¯¸®, À§Ä¡µ¶¸³ÄÚµå¸¦ ´ã°í ÀÖ´Â Á¤Àû ¶óÀÌºê·¯¸®
      ¾ÆÄ«ÀÌºê(<code>libfoo.a</code>)ÀÇ ½Éº¼¸¸À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
      ´Ù¸¥ ÄÚµå¸¦ »ç¿ëÇÏ·Á¸é ¾ÆÆÄÄ¡ ÇÙ½ÉÀÌ ±×°ÍÀ» ÂüÁ¶ÇÏ´øÁö,
      <code>dlopen()</code>À¸·Î Á÷Á¢ ÄÚµå¸¦ ÀÐ¾îµé¿©¾ß ÇÑ´Ù.</li>
    </ul>

</section>

</manualpage>
