Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ Ä¿ÇÇÇâÀÌ ³ª´Â *NIX
Ä¿ÇǴнº
½Ã½ºÅÛ/³×Æ®¿÷/º¸¾ÈÀ» ´Ù·ç´Â °÷
* HanIRCÀÇ #coffeenix ¹æ
[ Àåºñ ¹× ȸ¼± ÈÄ¿ø ]
HOME > ÇÁ·Î±×·¡¹Ö / °³¹ß > ÀÓº£µðµå(embedded) µµ¿ò¸»
°Ë»ö : »çÀÌÆ® WHOIS À¥¼­¹ö Á¾·ù


  embedded system faq (±Û ohhara) ÀÛ¼ºÀÏ : 2003/10/07 01:58
 
  • ±Û¾´ÀÌ : ÁÁÀºÁøÈ£ ( http://coffeenix.net/ )
  • Á¶È¸¼ö : 6094
          [ ÀÌÀüÈ­¸é / ¼öÁ¤ ]   ºñ¹Ð¹øÈ£ :     Àμâ¿ë È­¸é
      Ãâó : KLDP BBS, http://bbs.kldp.org/viewtopic.php?t=24986

    -----------------------------------------------------------------------
    ¿Ã·ÁÁü: 2003³â9¿ù23ÀÏ 17:16    ÁÖÁ¦: embedded system faq  ¡¡¡¡¡¡
    ÀÌ FAQ´Â ÄÄÇ»ÅÍ ÇÁ·Î±×·¥À» °³¹ßÇØ º» °æÇèÀÌ ÀÖ´Â »ç¶÷À» ´ë»óÀ¸·Î ÀÓº£µðµå
    ȯ°æ¿¡ ´ëÇØ °¡Áö°Ô µÇ´Â ±Ã±ÝÁõÀ» Ç®¾îÁÖ±â À§ÇØ ÀÛ¼ºµÇ¾ú½À´Ï´Ù. ¾î¶² ƯÁ¤
    ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÌÁö ¾Ê°í ÀϹÝÀûÀÎ ÀÓº£µðµå ȯ°æÀ» ´ë»óÀ¸·Î Çß½À´Ï´Ù.

    ÇÊÀÚ´Â ¾ËƼij½ºÆ®(Alticast)¿¡ ÀçÁ÷ÇßÀ» ´ç½Ã Sun Personal Java, Sun CVM°ú °°Àº
    ÀÚ¹Ù°¡»ó¸Ó½Å(Java Virtual Machine)À» ¿©·¯ Settop Box¿¡ À̽Ä(Porting)ÇÏ´Â ÀÛ¾÷À»
    ÇÑ °æÇèÀÌ ÀÖÀ¸¸ç (Skylife Settop Box ÇöÀç žÀçµÇ¾î ÆǸÅÁß) ÇöÀç´Â
    Æ÷Ç×°ø°ú´ëÇб³ ÄÄÇ»ÅÍ°øÇаú 4Çг⿡ ÀçÇÐÁßÀÔ´Ï´Ù.

    ------------------------------------------------------------------------------
    Taeho Oh ( ohhara@postech.edu, ohhara@plus.or.kr ) http://ohhara.sarang.net
    Postech ( Pohang University of Science and Technology ) http://www.postech.edu
    PLUS ( Postech Laboratory for Unix Security ) http://www.plus.or.kr
    ------------------------------------------------------------------------------

    Q. ÀÓº£µðµå ȯ°æÀ» Áö±Ý±îÁö Á¢Çغ» ÀûÀÌ ¾ø¾î¼­ ¾î¶² ȯ°æÀÎÁöµµ ÀüÇô °¨ÀÌ ÀâÈ÷Áö
    ¾Ê½À´Ï´Ù. ¾î¶² °ÍÀ̶ó°í »ý°¢ÇÏ¸é µÇ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
    A. ÀÓº£µðµå ȯ°æÀº ¾ÆÁÖ °£´ÜÇÏ°Ô ¼³¸íÇÏÀÚ¸é ¾ÆÁÖ ¿­¾ÇÇÑ È¯°æÀ» °¡Áø PC¶ó°í
    »ó»óÀ» ÇÏ½Ã¸é µË´Ï´Ù. Å°º¸µå, ¸¶¿ì½º, ¸ð´ÏÅÍ, Çϵåµð½ºÅ©, ½Ãµð·Òµå¶óÀ̺갡
    ¾ø°í ¸Å¿ì ÀûÀº ¾çÀÇ ·¥(RAM)ÀÌ ÀåÂøµÇ¾î ÀÖ´Â PC¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¿äÁòÀº
    ÀÓº£µðµå ȯ°æÀÌ °í±ÞÈ­°¡ µÇ¸é¼­ ÀÌ·± °æ°èµµ ¸ðÈ£ÇØÁö°í ÀÖ´Â Ãß¼¼ÀÔ´Ï´Ù.
    ÀÓº£µðµå ȯ°æ¿¡ Çϵåµð½ºÅ©°¡ ÀåÂøµÇ´Â °æ¿ìµµ »ý°Ü³ª°í ÀÖÀ¸¸ç Å°º¸µåµµ ÀåÂøµÇ´Â
    °æ¿ì°¡ ÀÖ½À´Ï´Ù.

    Q. ÀÓº£µðµå ¿î¿µÃ¼Á¦´Â ¾î¶² Ư¼ºÀ» °¡Áö°í PC¿ë ¿î¿µÃ¼Á¦¿Í ¾î¶² Á¡¿¡¼­ Â÷ÀÌ°¡
    ÀÖ½À´Ï±î?
    A. ÀÓº£µðµå ¿î¿µÃ¼Á¦´Â ¿ì¸®°¡ PC¿¡¼­ »ç¿ëÇÏ´Â ¿î¿µÃ¼Á¦¿¡¼­ ²À ÇÊ¿äÇÑ ±â´É¸¸
    Áö¿øÀ» Çϸç ANSI C LibraryÀÇ ÀϺεµ ÀÓº£µðµå ¿î¿µÃ¼Á¦ÀÇ ÀϺηΠÆ÷ÇÔ½ÃÅ°±âµµ
    ÇÕ´Ï´Ù. ±×¸®°í ÀüÅëÀûÀ¸·Î ÀÓº£µðµå ¿î¿µÃ¼Á¦´Â ½Ç½Ã°£¼ºÀ» »ó´çÈ÷ Áß¿ä½ÃÇÕ´Ï´Ù.
    ¾î¶² ½ÅÈ£¸¦ ±â´Ù¸®´Ù°¡ ¸îÃÊ°£ ½ÅÈ£°¡ ¿ÀÁö ¾ÊÀ¸¸é ´Ù¸¥ ÇൿÀ» Çϵµ·Ï ¸¸µé°í
    ½ÍÀ» ¶§ PC¿ë ¿î¿µÃ¼Á¦¿¡¼­´Â ½±Áö ¾ÊÀº °æ¿ì°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù. PC¿¡¼­´Â ¸îÃÊ°£
    ½ÅÈ£¸¦ ±â´Ù¸®´Ù°¡ ½ÅÈ£°¡ ¿ÀÁö ¾ÊÀ» ¶§ ´Ù¸¥ ÇൿÀ» ÇÏ·Á°í Çϸé schedulerÀÇ
    »óȲ¿¡ µû¶ó ¾à°£ÀÇ Áö¿¬ÀÌ ¹ß»ýÇÏ´Â °æÇâÀÌ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÓº£µðµå ȯ°æ¿¡¼­´Â
    ÀÌ·± »óȲÀ» ÀϹÝÀûÀ¸·Î ¾ö°ÝÇÏ°Ô Ã³¸®ÇÕ´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§´Â ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇմϱî?
    A. ÀϹÝÀûÀ¸·Î´Â C¾ð¾î¸¦ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ¿äÁòÀº ȯ°æÀÌ °í±ÞÈ­°¡ µÇ¸é¼­ C++À̳ª
    ÀÚ¹Ù(Java)¸¦ »ç¿ëÇÏ´Â °æ¿ìµµ ÀÖÁö¸¸ C¸¦ °¡Àå ¸¹ÀÌ »ç¿ëÇÑ´Ù°í »ý°¢ÇÏ¸é µË´Ï´Ù.
    ÀÓº£µðµå ȯ°æÀº Ư¼º»ó ÀÏ¹Ý PC¿¡ ºñÇØ CPU°¡ ´À¸®°í ·¥ÀÌ ÀûÀº °æÇâÀÌ ÀÖ½À´Ï´Ù.
    ÀÌ·± ȯ°æ¿¡¼­´Â ÇÁ·Î±×·¥ÀÇ ¼Óµµ¿Í Å©±â¸é¿¡¼­ À¯¸®ÇÑ C¾ð¾î°¡ °¡Àå ¸¹ÀÌ
    »ç¿ëµË´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­´Â ¾î¶² ¿î¿µÃ¼Á¦(OS)¸¦ »ç¿ëÇմϱî?
    A. ¾ÆÁÖ ¿©·¯°¡ÁöÀÇ ¿î¿µÃ¼Á¦¸¦ »ç¿ëÇÕ´Ï´Ù. ¾÷°è¿¡ µû¶ó ÁÖ·Î ¸¹ÀÌ »ç¿ëµÇ´Â
    ¿î¿µÃ¼Á¦°¡ ÀÖÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÇÊÀÚ°¡ »ç¿ëÇØ º» ¿î¿µÃ¼Á¦´Â pSOS, VxWorks,
    Windows CE, Linux, NucleusµîÀÌ ÀÖÀ¸¸ç ½ÇÁ¦ ã¾Æº¸¸é ÈξÀ ¸¹Àº ÀÓº£µðµå¿ë
    ¿î¿µÃ¼Á¦¸¦ Á¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­´Â ¾î¶² CPU¸¦ »ç¿ëÇմϱî?
    A. PC¿¡¼­´Â intel°è¿­ CPU¸¦ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀº ¿¡³ÊÁö ¼Ò¸ð¸¦
    ÃÖ¼ÒÈ­ÇØ¾ß µÇ´Â ÀÓº£µðµå ȯ°æ¿¡¼­´Â »ç¿ëÀÌ °ÅÀÇ ºÒ°¡´ÉÇÕ´Ï´Ù. ÇÊÀÚ°¡ Á¢Çغ»
    ÀÓº£µðµå ȯ°æ¿¡¼­ »ç¿ëµÇ´Â CPU´Â ARM, MIPS, PPC, MINI-SPARCµîÀÌ ÀÖÀ¸¸ç ½ÇÁ¦
    ã¾Æº¸¸é ÈξÀ ¸¹Àº ÀÓº£µðµå¿ë CPU¸¦ Á¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­´Â ¾î¶² ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇմϱî?
    A. Windows CE¸¦ »ç¿ëÇÒ ¶§´Â Visual C++¸¦ »ç¿ëÇÒ ¼ö ÀÖ°í Linux¸¦ »ç¿ëÇÒ ¶§´Â
    gcc¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í gcc´Â ÇöÁ¸ÇÏ´Â À̽ļº(portable)ÀÌ °¡Àå ÁÁÀº
    ÄÄÆÄÀÏ·¯À̱⠶§¹®¿¡ Linux¸¦ »ç¿ëÇÏÁö ¾Ê´Â ȯ°æ¿¡¼­µµ »ç¿ëÀÌ °¡´ÉÇϵµ·Ï À̽ÄÀÌ
    µÇ¾î ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ½ÇÁ¦ ¿©·¯ ÀÓº£µðµå ȯ°æ¿¡¼­ ÀÛ¾÷À» ÇØ º¸¸é
    gcc°¡ »ç¿ëÀÌ °¡´ÉÇÑ °æ¿ìº¸´Ù °¡´ÉÇÏÁö ¾Ê°í ƯÁ¤ ȸ»ç¿¡¼­ ³ª¿Â ƯÁ¤ ¹öÀüÀÇ
    ÄÄÆÄÀÏ·¯¸¦ ½á¾ß µÇ´Â °æ¿ì¸¦ Á¾Á¾ ¸¸³ª°Ô µË´Ï´Ù. ÇÊÀÚ°¡ »ç¿ëÇØ º» ÀÓº£µðµå
    ȯ°æ¿¡¼­ »ç¿ëµÇ´Â ÄÄÆÄÀÏ·¯´Â visual c++, gcc, armcc, dcc, st20ccµîÀÌ ÀÖÀ¸¸ç
    ½ÇÁ¦ ã¾Æº¸¸é ÈξÀ ¸¹Àº ÀÓº£µðµå¿ë ÄÄÆÄÀÏ·¯¸¦ Á¢ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­µµ ¾î¼Àºí¸®¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï±î?
    A. »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î PC¿¡¼­¸¸ °³¹ßÇغ» °³¹ßÀÚµéÀº CPU´Â intel
    CPU¸¸ÀÌ Á¸ÀçÇÏ°í ´Ù¸¥ CPU´Â °í·ÁÇÏÁöµµ ¾Ê´Â °æ¿ì°¡ °£È¤ ÀÖ½À´Ï´Ù. ¾î¼Àºí¸®¾î´Â
    CPU¿¡ µû¶ó ´Ù¸£¸ç ÀÓº£µðµå ȯ°æ¿¡¼­´Â ȯ°æ¿¡ µû¶ó ´Ù¸¥ CPU¸¦ »ç¿ëÇϱ⠶§¹®¿¡
    ¾î¼Àºí¸®¾î¸¦ ÀÓº£µðµå ȯ°æ¿¡¼­ »ç¿ëÇϱâ À§Çؼ­´Â ÀÓº£µðµå ȯ°æ¿¡ µû¶ó ´Ù¸¥
    ¾î¼Àºí¸®¾î¸¦ »ç¿ëÇØ¾ß µË´Ï´Ù. ¶ÇÇÑ »óȲ¿¡ µû¶ó¼­´Â °°Àº CPU¶óµµ ¾î¼Àºí·¯°¡
    ´Ù¸£¸é ´Ù¸¥ ¹®¹ýÀ» »ç¿ëÇؼ­ ¾î¼Àºí¸®¾î¸¦ ±â¼úÇØ Áà¾ß µÇ´Â °æ¿ìµµ ¹ß»ýÇÕ´Ï´Ù.
    ÀÌ·± ÀÌÀ¯·Î ¾î¼Àºí¸®¾î´Â ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é ÀÓº£µðµå ȯ°æ¿¡¼­´Â »ç¿ëÇÏÁö
    ¾Ê´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ C¾ð¾î Ã¥¿¡ ³ª¿À´Â "Hello World"¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À»
    ÀÛ¼ºÇؼ­ µ¹·Áº¸°í ½Í½À´Ï´Ù. ¾î¶»°Ô ÇØ¾ß Çմϱî?
    A. ÀϹÝÀûÀÎ C¾ð¾î Ã¥À» º¸¸é ´ÙÀ½°ú °°Àº "Hello World"¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ
    ³ª¿Í ÀÖ½À´Ï´Ù.

    helloworld.c
    ----------------------------------------
    #include <stdio.h>
    int main()
    {
    printf("Hello World\n");
    return 0;
    }
    ----------------------------------------

    PCÀÇ ÀϹÝÀûÀÎ °³¹ßȯ°æ¿¡¼­´Â À§¿Í °°ÀÌ ÀÛ¼ºÇؼ­ gcc³ª visual c++°°Àº ÄÄÆÄÀÏ·¯¸¦
    »ç¿ëÇØ ÄÄÆÄÀÏÀ» ÇÑ ÈÄ¿¡ ½ÇÇàÀ» ½ÃÅ°¸é ¾Æ¹«·± ¹«¸®¾øÀÌ ½ÇÇàÀÌ µË´Ï´Ù. ÇÏÁö¸¸
    ÀÓº£µðµå ȯ°æ¿¡¼­´Â À§¿Í°°ÀÌ ´Ü¼øÇÑ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇؼ­ ½ÇÇàÇÏ´Â °Íµµ ¸¹Àº
    ¾î·Á¿òÀÌ µû¸¨´Ï´Ù. ÀÏ´Ü stdio.h°¡ ¿¥º£µðµå ȯ°æ¿¡¼­ Á¸ÀçÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ
    ÀÖ½À´Ï´Ù. ±×¸®°í ¿©±â¼­´Â ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÀÌ main ÇÔ¼ö¿¡¼­ ½ÃÀÛÇÑ´Ù°í
    °¡Á¤ÇÏ¿´Áö¸¸ ÀÓº£µðµå ȯ°æ¿¡ µû¶ó¼­ main ÇÔ¼ö°¡ ½ÃÀÛÁöÁ¡ÀÌ ¾Æ´Ò ¼öµµ ÀÖ½À´Ï´Ù.
    ÀÌ·± ÀÌÀ¯·Î ÀÓº£µðµå ȯ°æ¿¡¼­ ÀÛ¾÷Çϱâ À§Çؼ­´Â ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ °ÍÀº
    ¸ðµÎ ºÐ¸®¸¦ ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ±×³É ÀÛ¾÷ÇÏ°íÀÚ ÇÏ´Â ÀÓº£µðµå ȯ°æ¿¡
    ÀÇÁ¸µÇµµ·Ï ÀÛ¼ºÇÏ¸é µÇÁö ¾Ê´À³Ä°í »ý°¢ÇÒ ¼öµµ Àִµ¥ ±×·¸°Ô ÇÏ°Ô µÇ¸é
    °³¹ß°úÁ¤¿¡¼­ ¸¹Àº ¾î·Á¿ò¿¡ ºÎµúÈ÷°Ô µË´Ï´Ù. ¾Æ·¡¿Í °°ÀÌ ÇÁ·Î±×·¥À» ¼öÁ¤ÇÕ´Ï´Ù.

    helloworld.c
    ----------------------------------------
    extern int em_printf();
    int em_init()
    {
    return em_printf("Hello World\n");
    }
    ----------------------------------------

    embedded.c
    ----------------------------------------
    extern int Print(char *str);
    extern int em_printf();
    extern int em_init();
    int root()
    {
    return em_init();
    }
    int em_printf(char *str)
    {
    return Print(str);
    }
    ----------------------------------------

    ÇÁ·Î±×·¥À» »ìÆ캸¸é helloworld.c´Â ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸µÇÁö ¾Êµµ·Ï ÀÛ¼ºÀÌ
    µÇ¾ú°í embedded.c´Â ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸µÇµµ·Ï ÀÛ¼ºÀÌ µÇ¾ú½À´Ï´Ù. embedded.c´Â
    °¢ ÀÓº£µðµå ȯ°æ¿¡ ¸Âµµ·Ï À̽Ä(porting)µÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹Á¦¿¡¼­´Â ½ÃÀÛ ÇÔ¼ö°¡
    rootÀÌ°í print¸¦ À§Çؼ­ Print¶ó´Â functionÀ» ½á¾ß µÇ´Â ȯ°æ¿¡¼­ ½ÇÇà½ÃŲ´Ù´Â
    °¡Á¤À» ÇÏ¿´½À´Ï´Ù. Áö¸é°ü°è»ó headerÆÄÀÏÀº »ç¿ëÇÏÁö ¾Ê¾Ò½À´Ï´Ù.

    Q. ÀÛ¼ºµÈ ÇÁ·Î±×·¥Àº ÀϹÝÀûÀ¸·Î ¾î¶² °úÁ¤À» ÅëÇØ ÀÓº£µðµå ȯ°æ¿¡¼­ ÄÄÆÄÀϵǰí
    ½ÇÇàµÇ°Ô µË´Ï±î?
    A.
    1) PC¿¡¼­ Å©·Î½ºÄÄÆÄÀÏÀ̶ó´Â °úÁ¤À» ÅëÇØ ÇØ´ç ÀÓº£µðµå ȯ°æ¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖ´Â
    ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù. ÄÄÆÄÀÏÀ» ÇÏ°Ô µÇ¸é ÄÄÆÄÀÏÀ» ÇÑ È¯°æ¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖ´Â
    ÆÄÀÏÀÌ »ý¼ºµÇÁö¸¸ Å©·Î½ºÄÄÆÄÀÏÀ» ÇÏ°Ô µÇ¸é ÄÄÆÄÀÏÀ» ÇÑ È¯°æ°ú ´Ù¸¥ ȯ°æ¿¡¼­
    ½ÇÇàµÉ ¼ö ÀÖ´Â ÆÄÀÏÀ» »ý¼º½Ãų ¼ö ÀÖ½À´Ï´Ù.
    2) ÀÌ ÆÄÀÏÀ» ÀÓº£µðµå ȯ°æÀ¸·Î Àü¼ÛÇÕ´Ï´Ù. Àü¼ÛÇÏ´Â ¹æ¹ýÀº ¾ÆÁÖ ¿©·¯°¡Áö°¡
    ÀÖ½À´Ï´Ù. serial cableÀ» »ç¿ëÇؼ­ Àü¼ÛÇÒ ¼öµµ ÀÖÀ¸¸ç parallel cableÀ» »ç¿ëÇؼ­
    Àü¼ÛÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ethernet cableÀ̳ª usb cableÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
    ÀÌ°ÍÀº ÀÓº£µðµå ȯ°æ¿¡ µû¶ó °áÁ¤µÇ°Ô µË´Ï´Ù. ÀϹÝÀûÀ¸·Î serial cableÀ̳ª
    parallel cableÀ» ÀÌ¿ëÇÑ Àü¼ÛÀº ethernet cableÀ̳ª usb cableÀ» ÀÌ¿ëÇÑ Àü¼Ûº¸´Ù
    ¸Å¿ì ´À¸³´Ï´Ù. »óȲ¿¡ µû¶ó¼­´Â Çѹø Àü¼ÛÀ» Çϱâ À§ÇØ 1½Ã°£ ÀÌ»ó ±â´Ù·Á¾ß
    µË´Ï´Ù.
    3) Àü¼ÛµÈ ÆÄÀÏÀ» ÀÓº£µðµå ȯ°æ¿¡ ÀúÀåÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î Flash Memory¿¡ ÀúÀåÀ»
    ÇÏÁö¸¸ °í±Þ ȯ°æ¿¡¼­´Â Çϵåµð½ºÅ©¿¡ ÀúÀåÀ» Çϱ⵵ ÇÕ´Ï´Ù.
    4) ÀúÀåµÈ ÆÄÀÏÀ» ½ÇÇàÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÓº£µðµå ÀåÄ¡¸¦ reset(reboot)À» Çؼ­
    ½ÇÇàÀ» ÇÕ´Ï´Ù.
    5) ½ÇÇà°á°ú¸¦ È®ÀÎÇÕ´Ï´Ù. ½ÇÇà°á°ú´Â ÆÄÀÏÀ» Àü¼ÛÇÒ ¶§¿Í ¸¶Âù°¡Áö·Î serial,
    parallel, ethernet, usb cableµîÀ» »ç¿ëÇؼ­ °á°ú¸¦ È®ÀÎÇÕ´Ï´Ù. °æ¿ì¿¡ µû¶ó¼­´Â
    ÀÓº£µðµå ȯ°æ¿¡ ºÎÂøµÈ LCDÈ­¸éÀ» »ç¿ëÇϱ⵵ ÇÕ´Ï´Ù.

    Q. XYZ¶ó´Â ÀÓº£µðµå ȯ°æÀ» °¡Áö°í ÀÖÁö¸¸ °³¹ßÀ» À§ÇÑ °ü·Ã Á¤º¸°¡ ÀüÇô ¾ø½À´Ï´Ù.
    ¾î¶»°Ô °³¹ßÀ» ½ÃÀÛÇØ¾ß µË´Ï±î?
    A. ÀÏ´Ü ÀÓº£µðµå ȯ°æÀ»(!) °³¹ßÇÏ´Â °³¹ßÀÚ°¡ ¾Æ´Ï°í ÀÓº£µðµå ȯ°æ¿¡¼­(!)
    °³¹ßÇÏ´Â °³¹ßÀÚ¶ó¸é °ü·Ã Á¤º¸¸¦ °ü·Ã ¾÷ü¿¡ ¹®ÀǸ¦ ÇÏ´Â°Ô °¡Àå ÁÁ½À´Ï´Ù.
    ÀÓº£µðµå ȯ°æÀº »óȲ¿¡ µû¶ó ¸Å¿ì ´Ù¸£±â ¶§¹®¿¡ °ü·Ã ¾÷üÀÇ ÇùÁ¶°¡ ¾øÀÌ´Â °³¹ßÀÌ
    ½±Áö ¾Ê½À´Ï´Ù. ÀÏ´Ü °¡Àå ±âº»ÀûÀ¸·Î "Hello World"¸¦ Ãâ·ÂÇÏ´Â C ¼Ò½ºÆÄÀÏÀÌ ÀÖÀ»
    ¶§ ÀÌ°ÍÀ» ¾î¶»°Ô ÇØ¾ß ÄÄÆÄÀÏÀ» ÇÒ ¼ö°¡ ÀÖ°í ¾î¶»°Ô ÇØ¾ß Àü¼ÛÇÒ ¼ö ÀÖÀ¸¸ç ¾î¶»°Ô
    ÇØ¾ß ½ÇÇàÀ» ÇÒ ¼ö°¡ ÀÖ°í ¾î¶»°Ô ÇØ¾ß ½ÇÇà°á°ú¸¦ º¼ ¼ö ÀÖ´ÂÁö ±¸Ã¼ÀûÀÎ ¹æ¹ýÀ»
    ¾Ë·Á´Þ¶ó°í ¾÷ü¿¡ ¿äûÇÕ´Ï´Ù. Å×½ºÆ®¸¦ ÅëÇØ °ü·Ã Á¤º¸¸¦ È®ÀÎÇÑ ÈÄ¿¡´Â OS, CPU,
    Compiler, Deviceµî¿¡ ´ëÇÑ ¹®¼­¸¦ ¿äûÇÏ°í °ü·Ã ³»¿ëÀ» »ìÆ캻 ÈÄ¿¡ °³¹ßÀ»
    ½ÃÀÛÇÕ´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ °³¹ßÀ» ÇÏ°í Àִµ¥ Äڵ带 Çѹø °íÄ¡°í ÄÄÆÄÀÏÀ» ´Ù½Ã ÇÏ°í
    Àü¼ÛÇÏ´Â °úÁ¤ÀÇ ½Ã°£ÀÌ ³Ê¹« ±æ¾î¼­ °³¹ßÀÌ ¸Å¿ì Èûµì´Ï´Ù. ¾î¶»°Ô ÁÁÀº ¹æ¹ýÀÌ
    ¾ø½À´Ï±î?
    A. ÀÓº£µðµå ȯ°æ¿¡ ÇÁ·Î±×·¥À» Àü¼ÛÇÏ´Â ½Ã°£ÀÌ ÀϹÝÀûÀ¸·Î ¸Å¿ì ±é´Ï´Ù. ÀÌ·Î ÀÎÇØ
    °³¹ß ÀÏÁ¤¿¡ ÁöÀåÀ» ¹Þ´Â °æ¿ì°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ´ÜÃàÇϱâ À§Çؼ­ ÇØ´ç
    ÀÓº£µðµå ȯ°æ°ú °ÅÀÇ µ¿ÀÏÇÑ ¿¡¹Ä·¹ÀÌÅÍ(Emulator)¸¦ °¡Áö°í °³¹ßÀ» ÇÏ°í
    ¿¡¹Ä·¹ÀÌÅÍ¿¡¼­ ¾Æ¹«·± ¹®Á¦°¡ ¾øÀÌ ÀÛµ¿ÇÑ´Ù´Â È®½ÅÀÌ µé ¶§ ½ÇÁ¦ ÀÓº£µðµå
    ȯ°æ¿¡¼­ ÃÖÁ¾ Å×½ºÆ®¸¦ ÇÕ´Ï´Ù. ¿¡¹Ä·¹ÀÌÅ͸¦ °³¹ßÇϴµ¥µµ ½Ã°£ÀÌ ¸¸¸¸Ä¡ ¾Ê°Ô
    ¼Ò¸ðµÇ±âµµ ÇÏÁö¸¸ ¿¡¹Ä·¹ÀÌÅ͸¦ Á÷Á¢ °³¹ß¿¡ »ç¿ëÇÏ°Ô µÇ¸é À̶§ ¼Ò¸ðµÈ ½Ã°£Àº
    ÀüÇô ¾Æ±õ°Ô ´À²¸ÁöÁö ¾Ê½À´Ï´Ù. ÀÓº£µðµå ȯ°æÀÇ ¿¡¹Ä·¹ÀÌÅÍ´Â °æ¿ì¿¡ µû¶ó¼­´Â
    Á÷Á¢ ¸¸µé ÇÊ¿ä°¡ ¾øÀÌ ´Ù¸¥ °÷¿¡¼­ ¸¸µç °ÍÀ» ±¸ÇÒ ¼ö ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ¿¹¸¦
    µé¾î Sony Playstation¿ë °ÔÀÓÀ» °³¹ßÇÑ´Ù°í Çϸé ÀÏ´Ü Sony Playstation¿ë
    ¿¡¹Ä·¹ÀÌÅ͸¦ °¡Áö°í °³¹ßÀ» ÇÏ°í ÃÖÁ¾ Å×½ºÆ®´Ü°è¿¡¼­ ½ÇÁ¦ Sony Playstation¿¡¼­
    Å×½ºÆ®¸¦ ÇÏ¸é °³¹ß½Ã°£À» ´ÜÃà½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿¡¹Ä·¹ÀÌÅÍ´Â ½ÇÁ¦ ÀÓº£µðµå
    ȯ°æ°ú ºñ½ÁÇϱâ´Â ÇÏÁö¸¸ 100%µ¿ÀÏÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ ¿¡¹Ä·¹ÀÌÅÍ¿¡¼­ ¹ß»ýÇÏÁö
    ¾Ê´ø ¹®Á¦°¡ ½ÇÁ¦ ÀÓº£µðµå ȯ°æ¿¡¼­ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù. °³¹ßÀ» È¿À²ÀûÀ¸·Î Çϱâ
    À§ÇØ ¿¡¹Ä·¹ÀÌÅÍ¿Í ÀÓº£µðµå ȯ°æÀ» ÃÖ´ëÇÑ ºñ½ÁÇÏ°Ô ¸¸µé¾î ÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

    Q. Flash Memory´Â ÀÏ¹Ý DRAM°ú ºñ±³ÇØ ºÃÀ» ¶§ ¾î¶² Â÷ÀÌ°¡ ÀÖ½À´Ï±î?
    A. ÀÓº£µðµå ȯ°æ¿¡¼­ ÀÛ¾÷À» ÇØ º¸¸é Flash Memory¸¦ ÀÚÁÖ Á¢ÇÏ°Ô µË´Ï´Ù. ¹°·Ð
    Memory´Â Flash Memory¿Í DRAM¸¸ ÀÖ´Â °ÍÀº ¾Æ´ÏÁö¸¸ ÀÌ µÎ°¡Áö¸¦ °¡Àå ÀÚÁÖ Á¢ÇÏ°Ô
    µË´Ï´Ù. Flash Memory´Â DRAMº¸´Ù °¡°ÝÀÌ ºñ½Î°í Àб⠼ӵµ´Â DRAM¿¡ ºñÇØ ¾à°£
    ´À¸®°í ¾²±â ¼Óµµ´Â DRAM¿¡ ºñÇØ ¸Å¿ì ´À¸®¸ç Àü¿øÀÌ ²¨Á®µµ MemoryÀÇ ³»¿ëÀÌ
    Áö¿öÁöÁö ¾Ê½À´Ï´Ù. ±×¸®°í ¾²±â¸¦ ÇÒ ¶§´Â DRAMó·³ byte´ÜÀ§·Î´Â ºÒ°¡´ÉÇÏ°í
    sector´ÜÀ§·Î ¸¸ °¡´ÉÇÕ´Ï´Ù. ÇÑ sectorÀÇ Å©±â´Â Flash Memory¿¡ µû¶ó ´Ù¸£¸ç º¸Åë
    64¿¡¼­ 512byteÁ¤µµ µË´Ï´Ù. Flash Memory´Â ÇÑÂÊ ¿µ¿ªÀ» °è¼Ó ¹Ýº¹ÀûÀ¸·Î ¾²±â¸¦
    ¹Ýº¹ÇÏ±â µÇ¸é ¼ö¸íÀ» ´ÜÃà½Ãų ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­ ¾²±â¸¦ ÇÒ ¶§´Â ¿©·¯ ¿µ¿ªÀ»
    ¹ø°¥¾Æ°¡¸é¼­ ¾²±â¸¦ ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿äÁò ÆǸŵǴ PC¿ë Çϵå¿þ¾îµéÀ̳ª MP3
    Player¸¦ »ìÆ캸¸é Æß¿þ¾î ¾÷±×·¹À̵å±â´ÉÀ» Áö¿øÇÕ´Ï´Ù. Æß¿þ¾î´Â Flash Memory¿¡
    ÀúÀåÀÌ µÇ¸ç Æß¿þ¾î ¾÷±×·¹À̵å´Â ÀÌ Flash Memory¿¡ ÀúÀåµÇ¾î ÀÖ´Â ÇÁ·Î±×·¥À»
    ¾÷±×·¹À̵åÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹Àü¿¡ ROMÀ¸·Î µÇ¾î À־ ĨÀ» ¹Ù²ÙÁö ¾Ê´Â À̻󿡴Â
    º¯°æÀÌ ºÒ°¡´ÉÇß´ø ºÎºÐÀ» ¿äÁòÀº Flash Memory·Î ´ëüÇؼ­ ³ªÁß¿¡ °£´ÜÈ÷
    ¾÷±×·¹À̵尡 °¡´ÉÇϵµ·Ï ÇÏ´Â °æÇâÀÌ ÀÖ½À´Ï´Ù.

    Q. ÇÁ·Î±×·¥ ÄÚµå´Â Flash Memory¿¡ ÀÖ´Â »óÅ¿¡¼­ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â°Ô ÁÁ½À´Ï±î?
    ¾Æ´Ï¸é DRAM¿¡ ÀÖ´Â »óÅ¿¡¼­ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â°Ô ÁÁ½À´Ï±î?
    A. µÑ ´Ù Àå´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. ÇØ´ç ÀÓº£µðµå ȯ°æ¿¡ ÀûÇÕÇÑ °áÁ¤À» ÇÏ´Â °ÍÀÌ
    ÁÁ½À´Ï´Ù. DRAMÀÌ ºÎÁ·ÇÏ°í ¼º´ÉÀÌ ¸Å¿ì ºü¸£Áö ¾Ê¾Æµµ µÇ°í óÀ½¿¡ ½ÃÀÛÀ» »¡¸®
    ÇØ¾ß µÇ´Â °æ¿ì¶ó¸é Flash Memory¿¡ ÇÁ·Î±×·¥ Äڵ带 µÎ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. DRAM¿¡
    ÇÁ·Î±×·¥ Äڵ带 µÎ´Â °æ¿ì¶ó¸é ÇÁ·Î±×·¥À» óÀ½ ½ÃÀÛÇÒ ¶§ Flash Memory¿¡¼­
    DRAMÀ¸·Î ÇÁ·Î±×·¥ Äڵ带 º¹»çÇÏ°Ô µÇ´Âµ¥ À̶§ ½Ã°£ÀÌ ´Ù¼Ò °É¸± ¼ö°¡ ÀÖ½À´Ï´Ù.
    ÇÏÁö¸¸ Flash Memory¿¡ ÇÁ·Î±×·¥À» ÀúÀåÇØ µÑ ¶§ ¾ÐÃàÇؼ­ ÀúÀåÀ» ÇÒ ¼ö°¡ ÀÖ±â
    ¶§¹®¿¡ Flash Memory¸¦ ¾Æ³¥ ¼ö°¡ ÀÖ½À´Ï´Ù. ±×¸®°í DRAMÀÌ Flash Memoryº¸´Ù
    Àбâ¼Óµµ°¡ ¾à°£ ºü¸£±â ¶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ ÀüüÀûÀÎ ½ÇÇà¼Óµµ Çâ»ó¿¡µµ µµ¿òÀ»
    ÁÝ´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ µð¹ö±ë(debugging)À» ¾î¶»°Ô Çմϱî?
    A. ÀÓº£µðµå ȯ°æ¿¡ µû¶ó Â÷ÀÌ°¡ ÀÖÁö¸¸ ÀÏ´Ü ÀÓº£µðµå ȯ°æ¿¡¼­ µð¹ö±ëÀº °ÅÀÇ
    ºÒ°¡´ÉÇÏ´Ù°í »ý°¢ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. gdb¿Í °°Àº µð¹ö°Å¸¦ JTAGÀ» ÀÌ¿ëÇؼ­ ºÙ¿©¼­
    »ç¿ëÇÒ ¼ö Àִ ȯ°æÀ» Á¢ÇÏ°Ô µÇ´Â °æ¿ìµµ Àִµ¥ ÀÌ°ÍÀº °ÅÀÇ ÃÖ»óÀÇ µð¹ö±ë
    ȯ°æÀÔ´Ï´Ù. ½ÇÁ¦·Î´Â µð¹ö°Å¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÏ°í console io¸¸ °¡´ÉÇÑ
    »óÅÂÀÎ °æ¿ì°¡ ´ëºÎºÐÀÌ¸ç ´õ ¿­¾ÇÇÑ °æ¿ì¿¡´Â console ioµµ ºÒ°¡´ÉÇÕ´Ï´Ù. console
    io°¡ °¡´ÉÇÑ È¯°æ¿¡¼­ µð¹ö±ëÀ» ÇÒ ¶§´Â ÇÁ·Î±×·¥ Áß°£Áß°£¿¡ Áß¿äÇÑ ÁöÁ¡¿¡
    console·Î print¸¦ ÇØ Á༭ ÇöÀç »óȲÀ» È¿°úÀûÀ¸·Î °³¹ßÀÚ¿¡°Ô ¾Ë·ÁÁÖ´Â °ÍÀÌ
    Áß¿äÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÓº£µðµå ȯ°æ¿¡¼­ Áö¿øÇÏ´Â console io´Â ¼Óµµ°¡ ´À¸®±â
    ¶§¹®¿¡ °úµµÇÏ°Ô print¸¦ ÇÏ°Ô µÇ¸é Áß°£¿¡ ³»¿ëÀÌ »ç¶óÁö°Å³ª ¸®ºÎÆÃÀÌ µÇ±âµµ
    ÇÕ´Ï´Ù. °³¹ßÇÏ´Â ÇÁ·Î±×·¥ ³»¿¡¼­ µð¹ö±ëÀ» ÇÏ°íÀÚ ÇÏ´Â ºÎºÐ°ú °ü·ÃµÇ´Â °Í¸¸
    print¸¦ ÇÒ ¼ö ÀÖµµ·Ï print¸¦ Àß Á¤¸®ÇØ ³õ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. °æ¿ì¿¡ µû¶ó¼­´Â
    print°¡ Áß°£¿¡ bufferingÀ» ÇÏ´Â °æ¿ìµµ Àִµ¥ ÀÌ·± °æ¿ì¿¡´Â crash°¡ ¹ß»ýÇßÀ»
    ¶§ buffer¸¦ flushÇÏÁö ¾Ê°í crash°¡ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù. ÀÌ·± °æ¿ì¿¡´Â crashÁ÷ÀüÀÇ
    print³»¿ëÀ» º¼ ¼ö°¡ ¾ø±â ¶§¹®¿¡ µð¹ö±ë¿¡ ¸Å¿ì ¾î·Á¿òÀ» °Þ°Ô µË´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ °³¹ßÇÑ ÇÁ·Î±×·¥ÀÌ ÀÛµ¿µµÁß¿¡ crash°¡ ¹ß»ýÇß½À´Ï´Ù. crash°¡
    ¹ß»ýÇÑ ÁöÁ¡À» print¸¦ ÅëÇØ Ã£±â°¡ ¸Å¿ì Èûµì´Ï´Ù. ÁÁÀº ¹æ¹ýÀÌ ¾ø½À´Ï±î?
    A. ¸¸¾à¿¡ ÀÓº£µðµå ȯ°æ¿¡¼­ µð¹ö°Å°¡ »ç¿ëÀÌ °¡´ÉÇÏ´Ù¸é µð¹ö°Å¸¦ »ç¿ëÇÏ¸é ¸Å¿ì
    ½±°Ô crash°¡ ¹ß»ýÇÑ ÁöÁ¡À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ°ÍÀÌ ºÒ°¡´ÉÇÑ °æ¿ì°¡
    ´ëºÎºÐÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÓº£µðµå ȯ°æÀº crash°¡ ¹ß»ýÇßÀ» ¶§ CPU¾È¿¡ ÀÖ´Â ¸ðµç
    registerÀÇ °ªÀ» printÇÕ´Ï´Ù. ¿©±â¼­ Program Counter(Instruction Pointer¶ó°íµµ
    ºÒ¸²)ÀÇ ³»¿ëÀ» º¸°í ÇØ´ç ÁÖ¼Ò°¡ ÇÁ·Î±×·¥ ÄÚµåÀÇ ¾î´À function¿¡ ¼ÓÇÑ °ÍÀÎÁö
    »ìÆ캸¸é crash°¡ ¹ß»ýÇÑ °÷ÀÇ À§Ä¡¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. °æ¿ì¿¡ µû¶ó¼­´Â call
    stackÀ» ¾òÁö ¸øÇϸé crash°¡ ¹ß»ýÇÑ °÷ÀÇ À§Ä¡¸¦ ¾Ë¾Æµµ º°·Î µµ¿òÀÌ µÇÁö ¾Ê´Â
    °æ¿ìµµ ¹ß»ýÇϴµ¥ À̶§´Â crash°¡ ¹ß»ýÇßÀ» ¶§ ½ÇÇàµÇ´Â exception handler¸¦
    ã¾Æ¼­ exceptionÀÌ ¹ß»ýÇÏ´Â ¼ø°£¿¡ stack¿µ¿ªÀ» Åë°·Î dump¸¦ Çϵµ·Ï ÇÑ ´ÙÀ½¿¡
    dumpµÈ ³»¿ë¿¡¼­ return addressµéÀÌ °¢°¢ ÇÁ·Î±×·¥ÀÇ ¾î´À function¿¡ ¼ÓÇÑ °ÍÀÎÁö
    »ìÆì º¸¸é call stackµµ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

    Q. ÀüÇô ´Ù¸¥ ¿©·¯ ÀÓº£µðµå ȯ°æ¿¡ ÇÁ·Î±×·¥ Çϳª¸¦ À̽ĽÃÄѼ­ ¸ðµÎ µ¿ÀÏÇÏ°Ô
    ÀÛµ¿Çϵµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. ¾î¶»°Ô ÀÛ¾÷ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï±î?
    A. ÀÓº£µðµå ȯ°æ¿¡¼­ ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ(dependent)
    ºÎºÐ°ú ºñÀÇÁ¸ÀûÀÎ(independent) ºÎºÐÀ¸·Î ³ª´²¼­ °³¹ßÇÏ°í ´Ù¸¥ °÷¿¡ À̽ÄÀ» ½Ãų
    ¶§ ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ ºÎºÐ¸¸ À̽ÄÀ» ½ÃÄÑÁÝ´Ï´Ù. »óȲ¿¡ µû¶ó¼­´Â ÀÓº£µðµå
    ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ ºÎºÐÀ» ¾ÆÁÖ ÀÚ¼¼ÇÏ°Ô ¹®¼­È­¸¦ Çؼ­ ´Ù¸¥ ¾÷ü¿¡ ¿ÜÁÖ¸¦ ÁÖ°í
    ÀÚ½ÅÀº ÀÓº£µðµå ȯ°æ¿¡ ºñÀÇÁ¸ÀûÀÎ ºÎºÐ¸¸ °³¹ßÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. À̶§ÀÇ
    ÀåÁ¡Àº ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ ºÎºÐ¸¸ µû·Î ÁßÁ¡ÀûÀ¸·Î Å×½ºÆ®¸¦ ÇÏ´Â °ÍÀÌ
    ¼Õ½±°Ô °¡´ÉÇϱ⠶§¹®¿¡ À̽ÄÀÌ Á¦´ë·Î µÇ¾ú´ÂÁö Å×½ºÆ®¸¦ Çϱâ À§Çؼ­ Àüü
    ÇÁ·Î±×·¥ÀÌ ¹Ýµå½Ã ÇÊ¿äÇÏÁö´Â ¾Ê´Ù´Â Á¡ÀÔ´Ï´Ù. ¶ÇÇÑ ÀÓº£µðµå ȯ°æ¿¡ ÀÇÁ¸ÀûÀÎ
    ºÎºÐÀ» PC¿¡ À̽ĽÃÄÑ ÁÖ¸é PC¿¡¼­ ÀÓº£µðµå ȯ°æ¿¡ ºñÀÇÁ¸ÀûÀÎ ºÎºÐÀ» ¸Å¿ì
    ¿øÈ°ÇÏ°Ô °³¹ßÇÏ°í Å×½ºÆ®¸¦ ÇÒ ¼ö ÀÖÀ¸¸ç ¿©·¯°¡Áö ÀáÀçÀûÀÎ ¹ö±×µéÀ» °¢Á¾ »ó¿ë
    µð¹ö°Å¸¦ »ç¿ëÇؼ­ °íÄ¥ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº À§¿¡¼­ ¾ð±ÞµÈ ¿¡¹Ä·¹ÀÌÅͺ¸´Ù´Â ¾à°£
    ¸øÇÏÁö¸¸ °³¹ß½Ã¿¡ »ó´çÈ÷ ¿¡¹Ä·¹ÀÌÅÍ¿¡ °¡±î¿î È¿°ú¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. À̶§´Â OS¿Í
    CPU´Â ¿¡¹Ä·¹ÀÌÆ®(emulate)µÇÁö ¾Ê±â ¶§¹®¿¡ OS¿Í CPU¿¡ ÀÇÁ¸ÀûÀ¸·Î ÀÛ¼ºµÈ ºÎºÐÀÌ
    ÇÁ·Î±×·¥ÀÇ ºñÀÇÁ¸ÀûÀÎ ºÎºÐ¿¡ Æ÷ÇÔ¿¡ µÇ¾î ÀÖ´Ù¸é PC¿¡¼­´Â Àß ÀÛµ¿Çϴµ¥ ½ÇÁ¦
    ÀÓº£µðµå ȯ°æ¿¡¼­´Â Àß ÀÛµ¿ÇÏÁö ¾Ê´Â ÀÏÀÌ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦·Î ÀÌ Á¤µµ
    ¼öÁØÀÇ °Íµµ ¿¡¹Ä·¹ÀÌÅͶó°í ºÎ¸¨´Ï´Ù.

    Q. C·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ CPUÀÇÁ¸ÀûÀÎ °ÍÀº ¾î¶² °ÍÀÌ ÀÖ½À´Ï±î?
    A. PC¿¡¼­ intel°è¿­ CPU¸¸ »ç¿ëÇÏ´Ù°¡ ´Ù¸¥ CPU¸¦ »ç¿ëÇÏ°Ô µÉ ¶§ ÈçÈ÷ °Þ´Â ¹®Á¦´Â
    endian¹®Á¦¿Í align¹®Á¦ÀÔ´Ï´Ù.

    endian.c
    ----------------------------------------
    void endian_test(void)
    {
    int a = 0x01020304;
    char *ch = (char *)&a;
    int i;
    for (i = 0; i < 4; i++)
    {
    printf("%02x ", ch[i]);
    }
    }
    ----------------------------------------

    ÀÌ¿Í °°ÀÌ ÇÁ·Î±×·¥À» ÀÛ¼ºÇؼ­ ½ÇÇàÇØ º¸¸é big endian cpuÀÇ °æ¿ì¿¡´Â 01 02 03 04
    °¡ Ãâ·ÂµÇ°í little endian cpuÀÇ °æ¿ì¿¡´Â 04 03 02 01ÀÌ Ãâ·ÂµË´Ï´Ù. ±×·±µ¥
    ÀÌ°ÍÀº ÀÌ·¸°Ô 2°¡Áö °æ¿ì¸¸ »ý°¢ÇÏ¸é µÉ Á¤µµ·Î ´Ü¼øÇÑ ¹®Á¦°¡ ¾Æ´Õ´Ï´Ù. ÇÊÀÚ°¡
    Á¢ÇÑ ÀÓº£µðµå ȯ°æ Áß¿¡¼­´Â 0x0102030405060708À» ÀúÀåÇßÀ» ¶§ 04 03 02 01 08 07
    06 05¿Í °°ÀÌ ´Ù¼Ò Ȳ´çÇÏ°Ô ÀúÀåµÇ´Â °æ¿ìµµ ÀÖ¾ú½À´Ï´Ù. ±×¸®°í int¿Í floatÀÇ
    endianÀÌ µ¿ÀÏÇÏÁö ¾ÊÀº °æ¿ìµµ º» ÀûÀÌ ÀÖ½À´Ï´Ù.

    align.c
    ----------------------------------------
    void align_test(void)
    {
    char *a = { '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', \x07', '\x08' };
    int *i = (int *)(a + 1);
    printf("%08x\n", *i);
    printf("%08x\n", *i);
    }
    ----------------------------------------

    ÀÌ¿Í °°ÀÌ ÇÁ·Î±×·¥À» ÀÛ¼ºÇؼ­ ½ÇÇàÇØ º¸¸é cpu°¡ big endianÀ̶ó°í °¡Á¤ÇßÀ» ¶§
    02030405·Î Ãâ·ÂµÇ´Â °æ¿ìµµ ÀÖ°í 01020304·Î Ãâ·ÂµÇ´Â °æ¿ìµµ ÀÖÀ¸¸ç °æ¿ì¿¡
    µû¶ó¼­´Â ±×³É crash°¡ ¹ß»ýÇÕ´Ï´Ù. ƯÀÌÇÏ°Ô Ã³À½ print¿¡¼­´Â Ãâ·ÂÀÌ µÇ°í ±× ´ÙÀ½
    print¸¦ ÇÒ ¶§ crash°¡ ¹ß»ýÇϱ⵵ ÇÕ´Ï´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¥À» align¿¡ ÀÇÁ¸ÀûÀ¸·Î
    ÀÛ¼ºÇؼ­ ¹ß»ýÇÑ ¹®Á¦ÀÔ´Ï´Ù. ±×·¡¼­ ¸Þ¸ð¸®¿¡ ÀÖ´Â °ªÀ» Àаųª ¾µ ¶§´Â align¿¡
    ¸ÂÃç¼­ ÇØ ÁÖ´Â °ÍÀÌ Áß¿äÇѵ¥ ±âº»ÀûÀ¸·Î alignÀ» ¸ÂÃá´Ù´Â °ÍÀº ¼±¾ðÇÑ º¯¼öÀÇ
    Å©±âÀÇ ¹è¼ö¸¦ ÁÖ¼Ò·Î »ç¿ëÇؼ­ ¸Þ¸ð¸®¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. À§ÀÇ °æ¿ì¿¡¼­
    ÇѹøÀº Àß Ãâ·ÂÀÌ µÇ°í ±× ´ÙÀ½¿¡ crash°¡ ¹ß»ýÇÏ´Â °æ¿ì´Â ¸Þ¸ð¸®¿¡¼­´Â alignÀ»
    ¸ÂÃßÁö ¾Ê¾Æµµ ±¦ÂúÁö¸¸ ij½¬(cache)¿¡¼­´Â alignÀ» ¸ÂÃßÁö ¾ÊÀ¸¸é crash°¡ ¹ß»ýÇÏ´Â
    °æ¿ìÀÔ´Ï´Ù. »óȲ¿¡ µû¶ó¼­´Â int¿Í float°¡ Çϳª´Â alignÀ» ¸ÂÃßÁö ¾Ê¾Æµµ ±¦Âú°í
    ³ª¸ÓÁö Çϳª´Â alignÀ» ¸ÂÃç¾ß µÇ´Â °æ¿ìµµ ¹ß»ýÇϸç 64bit µ¥ÀÌÅÍÇüÀÇ °æ¿ì¿¡ 32bit
    alignÀ» Çصµ ±¦ÂúÀº °æ¿ìµµ Á¸ÀçÇÕ´Ï´Ù.

    À§¿Í °°Àº °æ¿ì¸¦ °í·ÁÇؼ­ endian°ú align¿¡ ÀÇÁ¸ÀûÀÎ ÇÁ·Î±×·¥Àº ÀÛ¼ºÇÏÁö ¾Ê´Â°Ô
    ÁÁ½À´Ï´Ù.

    Q. C·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ ÄÄÆÄÀÏ·¯ ÀÇÁ¸ÀûÀÎ °ÍÀº ¾î¶² °ÍÀÌ ÀÖ½À´Ï±î?
    A. ¿©·¯ ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇØ º¸¸é ÄÄÆÄÀÏ·¯¸¶´Ù ANSI C Ç¥ÁØÀÌ ¾Æ´Ñ Ư¼öÇÑ È®ÀåÀ»
    Áö¿øÇÏ´Â °æ¿ì°¡ Á¾Á¾ ÀÖ½À´Ï´Ù. ±×·¡¼­ ANSI C Ç¥ÁØÀÌ ¾Æ´Ñ °ÍÀ» ANSI C Ç¥ÁØÀÎ
    °ÍÀ¸·Î Âø°¢ÇÏ°í ¾²´Ù°¡ ³ªÁß¿¡ »ó´çÈ÷ ¾ö°ÝÇÑ ÄÄÆÄÀÏ·¯¿¡¼­ ÀÛ¾÷À» ÇÏ°Ô µÇ¸é
    ´çȲÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. °æ¿ì¿¡ µû¶ó¼­´Â ´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡¼­´Â °æ°í¸¸
    Ãâ·ÂÇÏ°í ³Ñ¾î°¡´Â »ç¼ÒÇÑ ¹®Á¦¸¦ ¿¡·¯·Î ó¸®ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ·± ¹®Á¦¸¦
    ¹Ì¿¬¿¡ ¹æÁöÇϱâ À§Çؼ­´Â ÄÄÆÄÀÏ·¯ optionÀ» ¾ö°ÝÇÏ°Ô Á༭ ´Ù¸¥ ÄÄÆÄÀÏ·¯¿¡¼­
    ÀÛ¾÷À» ÇÒ ¶§ ¹®Á¦°¡ °ÅÀÇ ¹ß»ýÇÏÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÇÊÀÚ¿Í °°Àº
    °æ¿ì¿¡´Â gcc¸¦ »ç¿ëÇÒ ¶§ ¾Æ·¡¿Í °°Àº optionÀ» Ãß°¡ÇØ ÁÝ´Ï´Ù.

    ----------------------------------------
    -pedantic -W -Wall -Wshadow -Wpointer-arith -Wcast-align -Waggregate-return
    -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
    -Wnested-externs -Werror -Wno-unused
    ----------------------------------------

    À§¿Í °°Àº optionÀ» ÁÖ°í ÀÚ½ÅÀÌ Áö±Ý±îÁö °³¹ßÀ» ÇØ ¿Ô´ø C ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÀ»
    ½ÃµµÇØ º¸¸é ¸¹Àº ¹®Á¦°¡ ÀÖ´Ù´Â °ÍÀ» ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×¸®°í ÀÇ¿Ü·Î
    »ç¼ÒÇØ º¸ÀÌ´Â °ÍµéÀÌ ¹®Á¦¸¦ ÀÏÀ¸Å°±âµµ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î comment¸¦ C++ Çü½ÄÀÎ
    // ¸¦ »ç¿ëÇߴµ¥ ÀÌ°Ô ¾î¶² ÄÄÆÄÀÏ·¯¿¡¼­ ÀνÄÀÌ ¾ÈµÇ´Â °æ¿ìµµ ÀÖÀ» ¼ö ÀÖ°í C
    ¼Ò½º ÆÄÀÏÀÇ ³¡Àº ¹Ýµå½Ã °³Ç๮ÀÚ·Î ³¡³ª¾ß µÇ´Âµ¥ °³Ç๮ÀÚ·Î ³¡³ªÁö ¾Ê¾Æ¼­
    ÄÄÆÄÀÏ ¿¡·¯°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÆÄÀÏÀ» dosÇü½Ä txt·Î ÀúÀåÀ» Çؼ­ ÄÄÆÄÀÏ
    ¿¡·¯°¡ ¹ß»ýÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ¿Í°°Àº ¹®Á¦µéÀÌ ¸Å¿ì ¸¹ÀÌ Á¸ÀçÇϴµ¥
    ÀϹÝÀûÀ¸·Î °³¹ßÀÚµéÀº ±×°ÍÀÌ ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼öµµ ÀÖ´Ù´Â »ç½ÇÀ» ¸ð¸£°í Áö³ªÄ¡°Ô
    µÇ´Âµ¥ ÀÌ·± ¹®Á¦µéÀº ÄÄÆÄÀÏ·¯ optionÀ» Á¶Á¤Çؼ­ ŽÁö°¡ °¡´ÉÇϵµ·Ï ÇÏ´Â °ÍÀÌ
    ÁÁ½À´Ï´Ù.
    À§¿Í °°ÀÌ ÇßÀ½¿¡µµ ºÒ±¸ÇÏ°í ÄÄÆÄÀÏ·¯¿¡ ÀÇÁ¸ÀûÀÎ ÄÚµå ¶§¹®¿¡ ¾î·Á¿òÀ» °Þ´Â
    °æ¿ì°¡ Àִµ¥ ±×Áß¿¡ °¡Àå ¸¹ÀÌ °Þ´Â °æ¿ì°¡ C ±¸¹®ÀÇ evaluation ¼ø¼­¿¡ ÀÇÁ¸ÀûÀÎ
    Äڵ带 ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù.

    eval.c
    ----------------------------------------
    int a;

    int f(void)
    {
    return (a *= 2);
    }

    int g(void)
    {
    return (a += 2);
    }

    int h(void)
    {
    a = 5;
    a = f() + g();
    printf("%d\n", a);
    }
    ----------------------------------------

    ÀÌ Äڵ带 »ìÆ캸¸é a = f() + g(); ºÎºÐ¿¡¼­ f°¡ ¸ÕÀú callÀÌ µÇ°í g°¡ callÀÌ
    µÇ´ÂÁö g°¡ ¸ÕÀú callÀÌ µÇ°í f°¡ callÀÌ µÇ´ÂÁö´Â ÄÄÆÄÀÏ·¯¿¡ µû¶ó ´Ù¸¨´Ï´Ù.
    À§ÀÇ ¿¹Á¦ÀÇ °æ¿ì¿¡´Â f°¡ ¸ÕÀú callÀÌ µÇ¸é 22°¡ Ãâ·ÂµÇ°í g°¡ ¸ÕÀú callÀÌ µÇ¸é
    21ÀÌ Ãâ·ÂµË´Ï´Ù. ¿ÞÂʺÎÅÍ ¿À¸¥ÂÊÀ¸·Î evaluationÇÏ´Â ÄÄÆÄÀÏ·¯µµ ÀÖ°í ¿À¸¥ÂʺÎÅÍ
    ¿ÞÂÊÀ¸·Î evaluationÇÏ´Â ÄÄÆÄÀÏ·¯µµ ÀÖÀ» ¼ö ÀÖÁö¸¸ ANSI C »óÀ¸·Î´Â ¾î¶² ¼ø¼­¸¦
    µû¶óµµ »ó°üÀÌ ¾ø½À´Ï´Ù.

    ¶Ç Çϳª ÀÚÁÖ ¸¸³ª°Ô µÇ´Â ¹®Á¦´Â stdarg.h¿¡ ÀÖ´Â va_list, va_arg, va_start,
    va_end¹®Á¦ÀÔ´Ï´Ù. °¡Àå ÀÚÁÖ Á¢ÇÏ°Ô µÇ´Â ¹®Á¦´Â va_list°¡ ¾î¶² ÄÄÆÄÀÏ·¯¿¡¼­´Â
    array·Î ±¸ÇöµÇ¾î ÀÖ°í ¾î¶² ÄÄÆÄÀÏ·¯¿¡¼­´Â pointer·Î ±¸ÇöÀÌ µÇ¾î À־
    va_list a; va_list b; a = b; ¿Í °°ÀÌ Äڵ带 ÀÛ¼ºÇϸé array·Î ±¸ÇöµÇ¾î ÀÖÀ»
    °æ¿ì¿¡´Â ÄÄÆÄÀÏ ¿¡·¯°¡ ¹ß»ýÇÏ´Â °æ¿ìÀÔ´Ï´Ù. ÇÊÀÚÀÇ °æ¿ì¿¡´Â ¾Æ·¡¿Í °°ÀÌ Äڵ带
    ÀÛ¼ºÇßÀ» ¶§ a¿Í *ap°¡ ¾î¶² ÄÄÆÄÀÏ·¯¿¡¼­´Â °°Àº °ªÀ» Ãâ·ÂÇÏ°í ¾î¶²
    ÄÄÆÄÀÏ·¯¿¡¼­´Â ´Ù¸¥ °ªÀ» Ãâ·ÂÇؼ­ »ó´çÈ÷ ´çȲÇß´ø ±â¾ïÀÌ ÀÖ½À´Ï´Ù.

    va.c
    ----------------------------------------
    #include <stdarg.h>
    void f(void)
    {
    va_list a;
    va_list *ap = &a;

    printf("%p %p\n", a, *ap);
    }
    ----------------------------------------

    ±×¸®°í ANSI C Ç¥ÁØ¿¡´Â ±âº»ÀûÀÎ ÀÚ·áÇüÀÇ Å©±â¿¡ ´ëÇØ Á¤È®ÇÑ ¸í½Ã°¡ µÇ¾î ÀÖÁö
    ¾Ê½À´Ï´Ù. void * (pointer), char, short, int, long, float, doubleÀÌ °¢°¢ ¸î
    bit·Î ÀÌ·ç¾îÁ® ÀÖ´ÂÁö ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ ÇÁ·Î±×·¥ ÀÛ¼º ½Ã¿¡ Àú·± ÄÄÆÄÀÏ·¯¿¡¼­
    ±âº»ÀûÀ¸·Î Á¦°øÇÏ´Â °ÍÀ» ¾µ ¶§´Â Å©±â¿¡ ÀÇÁ¸ÀûÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇؼ­´Â
    ¾ÈµË´Ï´Ù. ¸¸¾à¿¡ Å©±â¿¡ ÀÇÁ¸ÀûÀ¸·Î ÀÛ¼ºÇÏ°íÀÚ ÇÑ´Ù¸é int16, int32ó·³ ÀÓº£µðµå
    ȯ°æ¿¡ ÀÇÁ¸ÀûÀÌÁö ¾ÊÀº ÀÚ·áÇüÀ» Çϳª ¸¸µé°í À̰͵鿡 ´ëÇÑ Á¤ÀǸ¦ ÀÓº£µðµå
    ȯ°æ¿¡ ÀÇÁ¸ÀûÀ¸·Î °¢°¢ ÇØÁÖ´Â ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÄÄÆÄÀÏ·¯¿¡
    Á¤ÀÇµÈ int ÀÚ·áÇüÀÌ °¡Àå ºü¸¥ ¼º´ÉÀ» º¸ÀåÇØ ÁÖ´Â °æÇâÀÌ Àֱ⠶§¹®¿¡ int16À̳ª
    int32ó·³ Å©±â¸¦ °íÁ¤½ÃÄѼ­ »ç¿ëÇÏ´Â °ÍÀº À̽ļºÀ» ³ô¿©ÁÙ ¼ö´Â ÀÖÁö¸¸
    ¼º´ÉÀúÇϸ¦ À¯¹ß½Ãų ¼öµµ Àֱ⠶§¹®¿¡ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù.
    À½¼öÀÇ int¸¦ ¿À¸¥ÂÊÀ¸·Î shift ( >> ) ÇÒ ¶§ ÄÄÆÄÀÏ·¯¿¡ µû¶ó »ê¼ú shift¸¦ ÇÏ´Â
    °æ¿ìµµ ÀÖ°í ³í¸® shift¸¦ ÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À½¼öÀÇ int¸¦ ¿À¸¥ÂÊÀ¸·Î
    shiftÇÏ´Â ÇൿÀº »ï°¡ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
    ¿­¾ÇÇÑ ÀÓº£µðµå ȯ°æ¿¡¼­´Â float³ª doubleÀ» ¾Æ¿¹ Áö¿øÇÏÁö ¾Ê´Â °æ¿ìµµ °¡²û
    ÀÖ½À´Ï´Ù. ±×·¸±â ¶§¹®¿¡ À̽ļºÀ» ³ôÀ̱â À§Çؼ­´Â ²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¸é
    float³ª doubleÀÇ »ç¿ëÀ» »ï°¡ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

    Q. ANSI C Ç¥ÁØ¿¡ Á¤ÀǵǾî ÀÖ´Â functionµéÀº ÀÓº£µðµå ȯ°æ¿¡¼­ ¾È½ÉÇÏ°í
    »ç¿ëÇصµ µË´Ï±î?
    A. ÀÏ´Ü ÀÓº£µðµå ȯ°æ¿¡¼­ Á¦°øÇÏ´Â ¸ðµç functionÀº ANSI C Ç¥ÁØ¿¡ Á¤ÀǵǾî
    ÀÖ´õ¶óµµ ÀÇÁ¸ÀûÀÎ ºÎºÐÀ¸·Î ºÐ·ùÇÕ´Ï´Ù. ½É°¢ÇÑ °æ¿ì¿¡´Â ANSI C Ç¥ÁØ¿¡ Á¤ÀǵǾî
    ÀÖ´Â functionÀÌ Çϳªµµ ¾ø´Â ȯ°æ¿¡¼­ ÀÛ¾÷ÇÏ°Ô µÇ´Â °æ¿ìµµ Àֱ⠶§¹®ÀÔ´Ï´Ù.
    ±×¸®°í ºñ·Ï ÀÚ½ÅÀÌ ¿øÇÏ´Â function°ú ¶È°°Àº ±â´ÉÀ» °¡Áö´Â functionÀ» ÇØ´ç
    ÀÓº£µðµå ȯ°æ¿¡¼­ Á¦°øÀ» ÇÏ´õ¶óµµ ±× functionÀ» 100%½Å·ÚÇؼ­´Â ¾ÈµË´Ï´Ù. ÇÊÀÚÀÇ
    °æ¿ì¿¡´Â ÀÓº£µðµå ȯ°æ¿¡¼­ Á¦°øÇÏ´Â malloc°ú free functionÀ» »ç¿ëÇß´Ù°¡
    mallocÀÌ ¹ö±×¸¦ °¡Áö°í À־ mallocÀ» Á÷Á¢ ±¸ÇöÇؼ­ »ç¿ëÇÑ ÀûÀÌ ÀÖ¾ú°í ANSI C
    Ç¥ÁØ¿¡ Á¤ÀǵǾî ÀÖ´Â isalnum functionÀ» »ç¿ëÇߴµ¥ ÀÌ°ÍÀÌ ¾î¶² ȯ°æ¿¡¼­´Â
    ºñ¾îÀÖ´Â functionÀ¸·Î ±¸ÇöµÇ¾î À־ °á±¹ Á÷Á¢ ±¸ÇöÀ» Çؼ­ ³ÖÀº °æÇèÀÌ
    ÀÖ½À´Ï´Ù. ³ªÁß¿¡ ³»¸° °á·ÐÀº ³»°¡ Á÷Á¢ ÀÛ¼ºÇÑ ºÎºÐÀ̳ª ¾Æ´Ï¸é ´Ù¸¥ °÷¿¡¼­
    ¼Ò½ºÄÚµå ÇüÅ·Π¹Þ¾Æ¿Í¼­ »ç¿ëÇÏ°í ÀÖ´Â ºÎºÐÀ» Á¦¿ÜÇÑ ¸ðµç ºÎºÐÀº ½Å·ÚÇؼ­´Â
    ¾ÈµÈ´Ù´Â °á·ÐÀ» ³»·È½À´Ï´Ù.

    Q. ÀÓº£µðµå ȯ°æ¿¡¼­ ÆÄÀÏÀº ¾î¶² ¹æ½ÄÀ¸·Î Á¢±ÙÇÏ´Â °ÍÀÌ ÁÁ½À´Ï±î?
    A. ÆÄÀÏ ÀúÀåÀº Àü¿øÀÌ ²¨Á®µµ ³»¿ëÀÌ »ì¾ÆÀÖ¾î¾ß µÇ±â ¶§¹®¿¡ Flash Memory¿¡ ÇÏ´Â
    °ÍÀÌ ÁÁ½À´Ï´Ù. ÇÏÁö¸¸ ÀÓº£µðµå ȯ°æ¿¡¼­´Â File SystemÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì°¡
    ´ëºÎºÐÀÔ´Ï´Ù. Flash Memory¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â File SystemÀ» ±¸Çؼ­ »ç¿ëÇÏ´ø°¡
    Flash Memory¿ë File SystemÀ» Á÷Á¢ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù.
    ¸¸¾à¿¡ ÀúÀåÇÒ ÇÊ¿ä´Â ¾ø°í Àб⸸ µÇµµ µÈ´Ù¸é ÆÄÀÏ ³»¿ëÀ» CÀÇ character array·Î
    ¸¸µé¾î¼­ ±× array¸¦ ÄÄÆÄÀÏÀ» ÅëÇؼ­ ÇÁ·Î±×·¥¿¡ »ðÀÔÇÏ´Â ¹æ¹ýÀÌ ÀÖÀ» ¼ö
    ÀÖ½À´Ï´Ù. ZIPÆÄÀÏ·Î ¸¸µé¾î¼­ CÀÇ character array·Î ¸¸µé¾î¼­ »ðÀÔÀ» ÇÑ´Ù¸é
    ÀÏÁ¾ÀÇ Àб⸸ µÇ´Â µð·ºÅ丮µµ Áö¿øÇÏ´Â File SystemÀ¸·Î »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
    ÀÌ°ÍÀº Visual C++ÀÇ resource¿Í ºñ½ÁÇÑ °³³äÀ¸·Î ÀÌÇØÇÏ¸é µË´Ï´Ù.

    Q. ÄÄÆÄÀÏÀ» ÇÒ ¶§ ÃÖÀûÈ­ optionÀ» ¸ðµÎ ²ô¸é Á¤»óÀûÀ¸·Î ÀÛµ¿Çϴµ¥ ÃÖÀûÈ­
    optionÀ» ÁÖ¸é Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ÄÄÆÄÀÏ·¯ ¹ö±×ÀԴϱî?
    A. ÀÌ°ÍÀº ÄÄÆÄÀÏ·¯ ¹ö±×ÀÏ ¼öµµ ÀÖÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì´Â ÇÁ·Î±×·¥À» À߸ø ÀÛ¼ºÇؼ­
    ÄÄÆÄÀÏ·¯°¡ ÃÖÀûÈ­¸¦ ÇÏÁö ¸»¾Æ¾ß µÇ´Â ºÎºÐÀ» ÃÖÀûÈ­¸¦ Çؼ­ ¹ß»ýÇÕ´Ï´Ù. °¡Àå ÈçÈ÷
    ¹ß»ýÇÏ´Â ¹®Á¦´Â ÄÄÆÄÀÏ·¯´Â Multi Thread³ª Signal(Exception) Handler¿Í °°Àº °Í¿¡
    ´ëÇÑ °³³äÀÌ ¾ø°í Æ÷ÀÎÅÍ(Pointer)°¡ °¡¸®Å°´Â °÷Àº Ç×»ó Memory¶ó°í »ý°¢ÇÏ´Â µ¥¼­
    ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.

    pt.c
    ----------------------------------------
    void f(void)
    {
    volatile int *led = (int *)0x00100000;
    *led = 1;
    *led = 0;
    *led = 1;
    }
    ----------------------------------------

    ¿¹¸¦ µé¾î ÀÓº£µðµå ȯ°æ¿¡¼­ ÁÖ¼Ò 0x00100000¿¡ 1À» ¾²¸é LED°¡ ÄÑÁö°í 0À» ¾²¸é
    LED°¡ ²¨Áø´Ù°í ÇÒ ¶§ À§¿Í °°Àº ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°¸é LED°¡ ÄÑÁ³´Ù°¡ ²¨Á³´Ù°¡
    ÄÑÁý´Ï´Ù. ÇÏÁö¸¸ ¸¸¾à¿¡ À§ÀÇ ÇÁ·Î±×·¥¿¡¼­ volatileÀ» »©°í ÃÖÀûÈ­ optionÀ» Á༭
    ÄÄÆÄÀÏÀ» ÇÏ°Ô µÇ¸é ÄÄÆÄÀÏ·¯´Â led°¡ °¡¸®Å°´Â °÷ÀÌ ´Ü¼øÇÑ ¸Þ¸ð¸®¶ó°í »ý°¢Çؼ­
    ¾ÕÀÇ *led = 1; *led = 0; ºÎºÐÀ» Á¦°ÅÇÕ´Ï´Ù. Áï LED´Â ²¨ÁöÁö ¾Ê°í °è¼Ó ÄÑÁö°Ô
    µË´Ï´Ù. ÀÌ·± ¹®Á¦·Î ÄÄÆÄÀÏ·¯°¡ ÃÖÀûÈ­¸¦ ÇÏÁö ¸»¾Æ¾ß µÉ ºÎºÐÀ» °³¹ßÀÚ°¡ Àß
    »ìÆìºÁ¼­ volatile keyword¸¦ ÀûÀýÇÏ°Ô Ãß°¡ÇØ Áà¾ß ÃÖÀûÈ­ optionÀ» Á൵
    Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

    Q. PCȯ°æ¿¡¼­ ¼ö¸¹Àº Å×½ºÆ®¿Í µð¹ö°Å¸¦ ÅëÇؼ­ ÀáÀçÀûÀÎ ¹ö±×µµ ¸ðµÎ °íÃÆ°í
    ÄÄÆÄÀÏ·¯ cpuÀÇÁ¸ÀûÀÎ ºÎºÐµµ ¸ðµÎ Á¦°ÅÇß½À´Ï´Ù. ±×·±µ¥ ½ÇÁ¦ ÀÓº£µðµå ȯ°æ¿¡¼­´Â
    Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ¿øÀÎÀÌ ¹«¾úÀԴϱî?
    A. ÀÌ·± °æ¿ì¸¦ ´çÇÏ°Ô µÇ¸é »ó´çÈ÷ ³­°¨ÇÕ´Ï´Ù. ÇÊÀÚÀÇ °æ¿ì¿¡´Â ÀÌ·± °æ¿ì¿¡´Â
    ¾Æ·¡¿Í °°Àº ¼ø¼­·Î Á¶»ç¸¦ ÇÕ´Ï´Ù.
    1) function¿¡ Å« local variable(ƯÈ÷ array)À» ¼±¾ðÇÑ ºÎºÐÀÌ ¾ø´ÂÁö Ȥ½Ã ±×·±
    ºÎºÐÀÌ ÀÖ´Ù¸é ±×°ÍÀÌ Àç±ÍÀûÀ¸·Î callµÇÁö´Â ¾Ê´ÂÁö »ìÆ캾´Ï´Ù. ÀÓº£µðµå ȯ°æÀº
    ½ºÅÃ(stack)ÀÌ PC¿¡¼­ ó·³ Å©Áö ¾Ê±â ¶§¹®¿¡ ´Ù¼Ò Å« local variableÀ» »ç¿ëÇÏ°Ô
    µÇ¸é memory overwrite°¡ ÀϾ¸é¼­ crash°¡ ¹ß»ýÇÕ´Ï´Ù.
    2) OS¿¡ ÀÇÁ¸ÀûÀ¸·Î ÀÛ¼ºµÈ ºÎºÐÀÌ ¾ø´ÂÁö »ìÆ캾´Ï´Ù. ƯÈ÷ Multi Threadȯ°æ¿¡¼­
    ÀÛ¾÷À» ÇÏ°Ô µÇ¸é OS¸¶´Ù scheduleÀ» ´Ù¸£°Ô Çؼ­ ¾î´À OS¿¡¼­´Â ƯÁ¤ Thread°¡
    ¿¹»óº¸´Ù ºü¸£°Ô ½ÇÇàµÇ´Â °æ¿ì°¡ Á¾Á¾ ÀÖ½À´Ï´Ù. ÀÓº£µðµå ¿î¿µÃ¼Á¦¿¡¼­´Â Thread
    Priority°¡ PC¿ë ¿î¿µÃ¼Á¦º¸´Ù »ó´çÈ÷ ¾ö°ÝÇÏ°Ô Àû¿ëµÇ±â ¶§¹®¿¡ ÀÌ·Î ÀÎÇØ PC¿¡¼­´Â
    deadlockÀÌ ÀϾÁö ¾Ê´Â »óȲÀε¥ ÀÓº£µðµå ȯ°æ¿¡¼­´Â deadlockÀÌ ÀϾ±âµµ
    ÇÕ´Ï´Ù.
    3) ÄÄÆÄÀÏ·¯ÀÇ ¹ö±×¸¦ ÀǽÉÇØ º¾´Ï´Ù. ÀÏ´Ü ÇÁ·Î±×·¥À» ÃÖÀûÈ­ optionÀ» ¸ðµÎ ²ô°í
    ÄÄÆÄÀÏÀ» Çؼ­ ½ÇÇàÇØ º¾´Ï´Ù. ÀϹÝÀûÀ¸·Î ÄÄÆÄÀÏ·¯ ¹ö±×´Â ÃÖÀûÈ­ optionÀ» Ä×À» ¶§
    ÁÖ·Î ¸¹ÀÌ ¹ß»ýÇÕ´Ï´Ù. ¹°·Ð °æ¿ì¿¡ µû¶ó¼­´Â ÃÖÀûÈ­ optionÀ» ¸ðµÎ ²¨µµ ÄÄÆÄÀÏ·¯
    ¹ö±×°¡ ³ªÅ¸³³´Ï´Ù.
    4) ¿î¿µÃ¼Á¦ÀÇ ¹ö±×¸¦ ÀǽÉÇØ º¾´Ï´Ù. ÇÊÀÚÀÇ °æ¿ì¿¡´Â OS¿¡¼­ ¿©·¯ task°¡ µ¿½Ã¿¡
    exitµÉ ¶§ OS°¡ crash°¡ ¹ß»ýÇÏ´Â ¹ö±×¸¦ °¡Áö°í ÀÖ´Â OS¸¦ º» °æ¿ì°¡ ÀÖ½À´Ï´Ù.
    5) Çϵå¿þ¾î¸¦ ÀǽÉÇØ º¾´Ï´Ù. ÇÊÀÚÀÇ °æ¿ì¿¡´Â DRAMÀÇ Refresh Rate°¡ À߸ø
    ¼³Á¤µÇ¾î À־ DRAM¿¡ 1·Î ¼³Á¤µÇ¾î ÀÖ´ø ºÎºÐÀÌ °¡²û 0À¸·Î º¯ÇÏ´Â Çϵå¿þ¾î¸¦
    º» °æ¿ì°¡ ÀÖ½À´Ï´Ù. °¡²ûÀº ¹ö±×°¡ ÀÖ´Â CPU¸¦ °¡Áö°í ÀÛ¾÷ÇØ¾ß µÇ´Â °æ¿ìµµ
    ÀÖ½À´Ï´Ù.
    _________________
    --
    Taeho Oh ( ohhara@postech.edu, ohhara@plus.or.kr ) http://ohhara.sarang.net
    Postech ( Pohang University of Science and Technology ) http://www.postech.edu
    PLUS ( Postech Laboratory for Unix Security ) http://www.plus.or.kr
      Ä¿ÇǴнº Ä«Æä ÃÖ±Ù ±Û
    [04/25] ±¹°¡&#5
    [04/24] º¸Çè&#5
    [04/22] Re: OpenSSL Ãë¾àÁ¡ Á¤¸®, Logjam(·Î±×Àë)¿¡¼­ Heartbleed±îÁö
    [04/21] LET¡¯S START WITH ON
    [04/21] º¸Çè&#5
    [04/20] Á¦ÁÖ&#5
    [04/20] ±¹³»&#5
    [04/19] Á¦ÁÖ&#5
    [04/18] ??? ?????
    [04/17] ???? onion ?????? -
    [04/11] ±¹°¡&#5
    [04/10] Stride Into Dream:
    [03/20] Re: ¿Â¶óÀΰÔÀÓÀÇ Á¾ÁÖ±¹ ´ëÇѹα¹
    [10/20] Cross Compiler ±ò
    [07/14] SSL ¬¡¬°
      New!   ÃÖ±Ù¿¡ µî·ÏÇÑ ÆäÀÌÁö
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      ¿ÀÇÂij½ºÄÉÀ̵å ijµå (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI¸¦ È°¿ëÇÑ ¸®´ª½º ¼­¹ö°ü¸®
      DNS ¼³Á¤ °Ë»ç
      nagiosgraph ¼³Ä¡ ¹æ¹ý
      Slony-I ¼³Ä¡ ¹æ¹ý (postgresql replication tool)
      Qmail±â¹ÝÀÇ Anti spam ½Ã½ºÅÛ ±¸ÃàÇϱâ
      clusterssh

    [ ÇÔ²²ÇÏ´Â »çÀÌÆ® ]




    ¿î¿µÁø : ÁÁÀºÁøÈ£(truefeel), ¾ß¼ö(yasu), ¹ü³ÃÀÌ, sCag
    2003³â 8¿ù 4ÀÏ~