· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/Kernel Analysis-HOWTO

You are not allowed to 'edit'


Kernel Analysis-HOWTO

Kernel Analysis-HOWTO

Roberto Arcomano

           
        

±è³²Çü

           
        

고친 과정
고침 0.72003-03-26


1. ¼­¹®


1.1. ¼­¹®

ÀÌ ¹®¼­¿¡¼­´Â ¸®´ª½º Ä¿³ÎÀ» ±¸¼ºÇÏ´Â °¢ ºÎºÐÀ» Á¤ÀÇÇÏ°í ±× ºÎºÐÀ» ¼öÇàÇÏ´Â ÁÖµÈ ÇÔ¼ö¿Í ÀÚ·á ±¸Á¶, ±×¸®°í À̵éÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö (how the "wheel spins") ¸¦ ¼³¸íÇÏ·Á°í ÇÑ´Ù. ÀÌ ¹®¼­ÀÇ ÃֽŠ¹öÀüÀº http://www.bertolinux.com ¿¡¼­ ã¾Æº¼ ¼ö ÀÖ´Ù. ÀÌ ¹®¼­¿¡ ´ëÇÑ °³¼±Á¡À̳ª Á¦¾È »çÇ×ÀÌ ÀÖ´Ù¸é ´ç½ÅÀÇ ¾ÆÀ̵ð¾î¸¦ ´ÙÀ½ÀÇ ¸ÞÀÏ ÁÖ¼Ò¸¦ ÅëÇØ º¸³»Áֱ⠹ٶõ´Ù: . ÀÌ ¹®¼­¿¡ »ç¿ëµÈ ÄÚµåµéÀº ÀÌ HOWTO ¹®¼­°¡ ¾²¿©Áö°í ÀÖ´Â ½ÃÁ¡¿¡¼­ ÃֽŠ¾ÈÁ¤ ¹öÀüÀÎ ¸®´ª½º Ä¿³Î ¹öÀü 2.4.x ¸¦ ÂüÁ¶ÇÏ¿´´Ù.


1.2. ÀúÀÛ±Ç Á¤º¸

Copyright (C) 2000,2001,2002 Roberto Arcomano. Copyright (C) 2003 ±è³²Çü (Çѱ¹¾îÆÇ). º» ¹®¼­´Â ¿©·¯ºÐÀÌ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î Àç´Ü(Free Software Foundation)¿¡¼­ ¹ßÇàÇÑ GNU ¶óÀ̺귯¸® ÀÏ¹Ý °ø°³ »ç¿ë±Ç(GNU Library General Public License)ÀÇ ±ÔÁ¤(Áï »ç¿ë±Ç 2ÆÇÀ̳ª ȤÀº ¿©·¯ºÐÀÇ ¼±Åÿ¡ µû¶ó ´õ ÀÌÈÄÀÇ »ç¿ë±Ç)À» ÁؼöÇÏ´Â ÇÑ ÀçÀ¯Æ÷Çϰųª ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ÀÚÀ¯ ¹®¼­ÀÌ´Ù. º» ¹®¼­´Â ÀÌ°ÍÀÌ À¯¿ëÇÏ°Ô »ç¿ëµÇ±â¸¦ ¹Ù¶ó´Â ¸¶À½À¸·Î ¹èÆ÷ÇÏ´Â °ÍÀÌÁö¸¸, ±×¿¡ ´ëÇÑ ¾î¶°ÇÑ º¸Áõµµ ÇÏÁö ¾Ê´Â´Ù: »ó¾÷ÀûÀÎ ¿ëµµ³ª ƯÁ¤ÇÑ ¸ñÀû¿¡ ¸Â°Ô »ç¿ë ÇßÀ»¶§ Àǹ«ÀûÀ¸·Î µû¶ó ºÙ´Â º¸Áõµµ ¾ø´Ù. ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº GNU ¶óÀ̺귯¸® ÀÏ¹Ý ´ëÁß »ç¿ë±Ç (GPL) ¿¡ ´ëÇØ º¸±â ¹Ù¶õ´Ù. GNU GPL ÀÇ º¹»çº»Àº ¿©±â ¿¡¼­ ¾òÀ» ¼ö ÀÖ´Ù.


1.3. ¹ø¿ª¿¡ °üÇÏ¿©

´ç½ÅÀÌ ÀÌ ¹®¼­¸¦ ¹ø¿ªÇÏ´Â °ÍÀº ÀÚÀ¯ÀÌ´Ù. ÇÏÁö¸¸ ±×Àü¿¡ ´ÙÀ½°ú °°Àº »çÇ×µéÀ» Âü°íÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù:

  1. ´ç½ÅÀÌ ¹ø¿ªÇؼ­ ¿Ã¸®°íÀÚ ÇÏ´Â LDP ¿¡ ÀÌ¹Ì ÀÌ ¹®¼­ÀÇ ¹ø¿ªº»ÀÌ ÀÖ´ÂÁö üũÇÑ´Ù.

  2. ÀýÀ» À¯ÁöÇÑ´Ù. (, , , À» Æ÷ÇÔ)

참고: TXT ÆÄÀÏÀ̳ª HTML ÆÄÀÏÀ» Á÷Á¢ ¹ø¿ªÇؼ­´Â ¾ÈµÇ°í LYX ÆÄÀÏÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ±×·¡¾ß¸¸ À̸¦ ÀÌ¿ëÇØ ´Ù¸¥ ÆÄÀÏ Çü½Ä (TXT, HTML, RIFF µî) À¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. "LyX" ÇÁ·Î±×·¥À» »ç¿ëÇϱâ À§Çؼ­ http://www.lyx.org ¿¡¼­ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.

¹ø¿ªÀ» À§Çؼ­ ³ª¿¡°Ô Áú¹®À» ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ±×Àú ´ç½ÅÀÇ ¹ø¿ª¹°¿¡ °üÇØ (´ç½ÅÀÌ ¿øÇÑ´Ù¸é) ³»°¡ ¾Ë ¼ö ÀÖ°Ô¸¸ ÇØÁÖ¸é µÈ´Ù.

´ç½ÅÀÇ ¹ø¿ª¿¡ °¨»çÇÑ´Ù!


1.4. °¨»çÀÇ ±Û

ÀÌ ¹®¼­¸¦ »¡¸® ¿Ã·ÁÁÖ°í ¹ßÇ¥ÇØ ÁØ The Linux Documentation Project ¿¡ °¨»çÇÑ´Ù.

Klaas de Waal ÀÇ Á¦¾È¿¡ °¨»çÇÑ´Ù.


2. »ç¿ëµÈ ¹®¹ý


2.1. ÇÔ¼öÀÇ ¹®¹ý

ÇÔ¼ö¿¡ ´ëÇؼ­ ¼³¸íÇÒ ¶§´Â ´ÙÀ½°ú °°Àº ÇüÅ·Πǥ±âÇÑ´Ù:

	   "ÇÔ¼ö À̸§ [ ÆÄÀÏ À§Ä¡ . È®ÀåÀÚ ]"
	  

¿¹¸¦ µé¾î:

예 1.

"schedule [ kernel/sched.c ]"

¶ó´Â Ç¥ÇöÀÌ ÀÖÀ» ¶§ ÀÌ°ÍÀº ¿ì¸®°¡ Áö±Ý

예 2.

"schedule"

À̶ó´Â ÇÔ¼ö¿¡ °üÇؼ­ ¼³¸íÇÏ°í ÀÖÀ½À» ³ªÅ¸³»¸ç, ÀÌ ÇÔ¼ö´Â

예 3.

[ kernel/sched.c ]

¶ó´Â ÆÄÀÏ¿¡¼­ ã¾Æº¼ ¼ö ÀÖÀ½À» ¶æÇÑ´Ù.

참고: ¿©±â¼­´Â ½ÃÀÛ µð·ºÅ丮°¡ /usr/src/linux ¶ó°í °¡Á¤ÇÏ°í ÀÖ´Â °ÍÀÌ´Ù.


2.2. µé¿©¾²±â

¼Ò½º ÄÚµå ¾È¿¡¼­ÀÇ µé¿©¾²±â¿¡´Â 3°³ÀÇ °ø¹é¹®ÀÚ°¡ »ç¿ëµÇ¾ú´Ù.


2.3. ÇÔ¼ö°£ È£Ã⠺м® (InterCalling Analysis)


2.3.1. °³¿ä

ÀÌ ¹®¼­¿¡¼­´Â Ä¿³Î ÇÔ¼öµéÀÇ È£Ãâ °ü°è¸¦ Ç¥ÇöÇϱâ À§ÇØ (µé¿©¾²±âÀÇ ¹æ½ÄÀ¸·Î) "ÇÔ¼ö°£ È£Ã⠺м® (InterCalling Analysis : ICA)" À» »ç¿ëÇÑ´Ù.

¿¹¸¦ µé¾î sleep_on À̶ó´Â ÇÔ¼ö¸¦ ÇÔ¼ö°£ È£Ã⠺м®À» ÅëÇØ Ç¥ÇöÇÏ¸é ¾Æ·¡¿Í °°´Ù:

		  
|sleep_on
|init_waitqueue_entry      --
|__add_wait_queue            |   enqueuing request  
   |list_add                 |
      |__list_add          -- 
   |schedule              ---     waiting for request to be executed
      |__remove_wait_queue --   
      |list_del              |   dequeuing request
         |__list_del       -- 
 
                          sleep_on ICA
        

µé¿©¾²±â·Î Ç¥ÇöµÈ ÇÔ¼ö°£ È£Ã⠺м® µÚ¿¡´Â ÇÔ¼öÀÇ À§Ä¡°¡ ³ª¿Â´Ù:

  • sleep_on [kernel/sched.c]

  • init_waitqueue_entry [include/linux/wait.h]

  • __add_wait_queue

  • list_add [include/linux/list.h]

  • __list_add

  • schedule [kernel/sched.c]

  • __remove_wait_queue [include/linux/wait.h]

  • list_del [include/linux/list.h]

  • __list_del

참고: ÇÔ¼öÀÇ À§Ä¡°¡ ¹Ù·Î ¾Õ¿¡ Ç¥½ÃÇÑ ÇÔ¼öÀÇ À§Ä¡¿Í °°Àº °æ¿ì¿¡´Â ¸í½ÃÇÏÁö ¾Ê¾Ò´Ù.


2.3.2. ¼¼ºÎ»çÇ×

ÇÔ¼ö°£ È£Ã⠺м®¿¡¼­ ´ÙÀ½°ú °°Àº ÇüÅ°¡ ÀÖÀ» °ÍÀÌ´Ù:

function1 -> function2
		

ÀÌ°ÍÀº function1 Àº ´Ù¸¥ ÇÔ¼ö¸¦ °¡¸®Å°´Â ÀϹÝÀûÀÎ Æ÷ÀÎÅͶó´Â °ÍÀ» ¶æÇÑ´Ù. À§ÀÇ °æ¿ì¿¡¼­ function1 Àº function2 ¸¦ °¡¸®Å²´Ù.

¶Ç ´ÙÀ½°ú °°Àº ÇüÅ¿¡¼­´Â:

function:
		

function Àº ÇÔ¼ö°¡ ¾Æ´ÔÀ» ¶æÇÑ´Ù. ÀÌ°ÍÀº ·¹À̺íÀÌ´Ù (ÀϹÝÀûÀ¸·Î ¾î¼Àºí·¯ ·¹À̺íÀÏ °ÍÀÌ´Ù).

ÀÌ ¹®¼­¿¡¼­´Â ¸¹Àº Àý¿¡¼­ C ÄÚµåÀÇ Çüųª ½´µµ-ÄÚµå ÀÇ ÇüÅ·ΠǥÇöÇÏ¿´´Ù. ½ÇÁ¦ÀÇ ¼Ò½º ÆÄÀÏ¿¡´Â À̰͵éÀÌ ¾î¼Àºí·¯ Äڵ峪 ±¸Á¶È­ µÇÁö ¾ÊÀº ÄÚµåÀÇ ÇüÅ·Πµé¾îÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ Â÷ÀÌÁ¡Àº ÇнÀÀ» À§ÇÑ °ÍÀÌ´Ù.


2.3.3. ÇÔ¼ö°£ È£Ã⠺м®ÀÇ ÀåÁ¡

ÇÔ¼ö°£ È£Ã⠺м® (ICA) ¸¦ »ç¿ëÇϴµ¥ À־ ´ÙÀ½°ú °°Àº ¸¹Àº ÀåÁ¡µéÀÌ ÀÖ´Ù:

  • Ä¿³Î ÇÔ¼ö¸¦ È£ÃâÇÏ¿´À» ¶§ ¾î¶² ÀÏÀÌ ÀϾ´Â °¡¸¦ ÀüüÀûÀ¸·Î ¾Ë ¼ö ÀÖ´Ù.

  • ÇÔ¼öÀÇ µÚ¿¡ ÇÔ¼öÀÇ À§Ä¡°¡ ³ª¿À¹Ç·Î, ÇÔ¼ö°£ È£Ã⠺м®À» ÇϳªÀÇ ÇÔ¼öÀÇ ·¹ÆÛ·±½º ·Îµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

  • ÇÔ¼ö°£ È£Ã⠺м®Àº sleep/awake ¸ÞÄ«´ÏÁò¿¡¼­ À¯¿ëÇÏ´Ù. À̸¦ ÀÌ¿ëÇØ ÇÁ·Î¼¼½º°¡ sleep µÇ±â Àü¿¡ ¾î¶² ÀÏÀ» ÇÏ´ÂÁö¿Í (½ºÄÉÁÙ ÀÌÈÄ¿¡) wake up ÀÌÈÄ¿¡ ¹«½¼ ÀÏÀ» ÇÒ °ÍÀÎÁö¸¦ º¼ ¼ö ÀÖ´Ù.


2.3.4. ÇÔ¼ö°£ È£Ã⠺м®ÀÇ ´ÜÁ¡

ÇÔ¼ö°£ È£Ã⠺м® (ICA) ¸¦ »ç¿ëÇϴµ¥ À־ ´ÙÀ½°ú °°Àº ´ÜÁ¡µéÀÌ ÀÖ´Ù:

  • ¸ðµç ÀÌ·ÐÀûÀÎ ¸ðµ¨¿¡ À־, ½ÇÁ¦ ¼Ò½ºÄÚµå¿Í ƯÁ¤ÇÑ Á¶°Çµé°ú °°Àº ÀÚ¼¼ÇÑ »çÇ×µéÀ» Á¦¿ÜÇÏ°í ´Ü¼øÈ­ ½ÃÄ×´Ù.

  • ½ºÅÃÀÇ »óÅÂ, µ¥ÀÌŸÀÇ °ª µîÀ» Ç¥ÇöÇϱâ À§Çؼ­´Â Ãß°¡ÀûÀΠǥÇöÀÌ Ãß°¡µÇ¾î¾ß ÇÑ´Ù.


3. ±âÃÊÀûÀÎ ³»¿ë


3.1. Ä¿³ÎÀ̶õ ¹«¾ùÀΰ¡?

Ä¿³ÎÀ̶õ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÇ ÇÙ½É(core) ºÎºÐÀ» ¸»ÇÑ´Ù. Áï, ÄÄÇ»ÅÍÀÇ ÀÚ¿øµéÀ» »ç¿ëÀÚ°¡ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¼ÒÇÁÆ®¿þ¾î ÀÌ´Ù.

Ä¿³ÎÀº (±×·¡ÇÈÀ» ÀÌ¿ëÇÑ °ü¸® ÇÁ·Î±×·¥µµ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â) ¿î¿µÃ¼Á¦ÀÇ ÁÖ¿ä ¼ÒÇÁÆ®¿þ¾î¶ó°í »ý°¢ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

¿¹¸¦ µé¾î, (´Ù¸¥ Unix ±â¹ÝÀÇ ¿î¿µÃ¼Á¦¿Í °°ÀÌ) ¸®´ª½º¿¡¼­´Â X À©µµ¿ì ȯ°æÀº Ä¿³Î¿¡ ¼ÓÇØÀÖÁö ¾Ê´Ù. ¿Ö³ÄÇϸé X À©µµ¿ì ȯ°æÀº ¿ÀÁ÷ ±×·¡ÇÈ ¿¬»ê ¸¸À» °ü¸®Çϱ⠶§¹®ÀÌ´Ù. (ºñµð¿À Ä«µå ÀåÄ¡¿¡ Á¢±ÙÇϱâ À§Çؼ­ »ç¿ëÀÚ ¸ðµåÀÇ I/O ¸¦ »ç¿ëÇÑ´Ù.)

´ëÁ¶ÀûÀ¸·Î À©µµ¿ìÁî ȯ°æ (Win9x, WinME, WinNT, Win2K, WinXP µî) ¿¡¼­´Â Ä¿³Î°ú ±×·¡ÇÈ È¯°æÀÌ È¥ÇյǾî ÀÖ´Ù.


3.2. »ç¿ëÀÚ ¸ðµå¿Í Ä¿³Î ¸ðµå


3.2.1. °³¿ä

(ÄÄÇ»ÅÍ°¡ ¹æ ÇÑ°³¸¦ Â÷ÁöÇÒ ¸¸Å­ÀÇ Å©±â¿´´ø) ¿¹Àü¿¡´Â »ç¿ëÀÚµéÀÌ ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°´Â °Íµµ ¹«Ã´ Èûµç ÀÏÀ̾ú°í, ¶§¶§·Î ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÄÄÇ»Å͸¦ ¸Á°¡¶ß¸®±âµµ ÇÏ¿´´Ù.


3.2.2. µ¿ÀÛ ¸ðµå

À§¿Í °°ÀÌ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ½Ã½ºÅÛÀ» ¸Á°¡¶ß¸®´Â °ÍÀ» ¹æÁöÇϱâ À§ÇØ, ÀÌÈÄÀÇ ¿î¿µÃ¼Á¦µéÀº 2 °¡ÁöÀÇ ´Ù¸¥ µ¿ÀÛ ¸ðµå¸¦ °®µµ·Ï µðÀÚÀεǾú´Ù.

  1. Ä¿³Î ¸ðµå: Áß¿äÇÑ ÀڷᱸÁ¶³ª Á÷Á¢ÀûÀÎ Çϵå¿þ¾î Á¢±Ù (I/O ȤÀº memory mapped), Á÷Á¢ÀûÀÎ ¸Þ¸ð¸® Á¢±Ù, IRQ, DMA µîÀÇ Ã³¸®

  2. »ç¿ëÀÚ ¸ðµå: »ç¿ëÀÚ°¡ ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖÀ½


ID
Password
Join
Courage is your greatest present need.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2012-12-30 05:26:46
Processing time 0.0019 sec