µð¹ö±ëÀ» ÅëÇØ ¹è¿ì´Â ¸®´ª½º Ä¿³ÎÀÇ ±¸Á¶¿Í ¿ø¸®. 1
À§Å°ºÏ½º | 2020-05-12
eBook
2021-06-07
´ëÃ⿹Á¤ÀÏ2025-05-23 º¸À¯ 1 ´ëÃâ 1 ¿¹¾à 0
ezPDF | ±³º¸ÀüÀÚÃ¥
Ã¥ Á¤º¸
½ÅÀÔ ¸®´ª½º ½Ã½ºÅÛ °³¹ßÀÚºÎÅÍ 5³âÂ÷ °³¹ßÀÚ°¡ ½Ç¹«¸¦ Çϱâ À§ÇØ ¾Ë¾Æ¾ß ÇÒ
¸®´ª½º Ä¿³ÎÀÇ ÁÖ¿ä ¼ºê½Ã½ºÅÛÀ» ´Ù·ì´Ï´Ù!
½ÇÀü °³¹ß¿¡¼ ½ÅÀÔ »ç¿ø ¿·¿¡ Ä£ÀýÇÑ ¼±¹è °³¹ßÀÚ°¡ ¾É¾Æ¼ ¸®´ª½º Ä¿³Î¿¡ ´ëÇØ ²Ä²ÄÇÏ°Ô ¾Ë·ÁÁÖµí, ¸®´ª½º Ä¿³ÎÀ» ½±°í Ä£ÀýÇÏ°Ô ¼³¸íÇϴ åÀÔ´Ï´Ù. ÀÌ Ã¥Àº ÃֽйöÀü(LTS: 4.19)ÀÇ ¸®´ª½º Ä¿³Î ¼Ò½º¸¦ ÇÔ¼ö È帧À» µû¶ó°¡¸ç ÀÚ¼¼È÷ ºÐ¼®Çϰí ftrace¿Í TRACE32 °°Àº µð¹ö±ë ÅøÀ» Ȱ¿ëÇØ Ä¿³ÎÀÇ µ¿ÀÛ ¿ø¸®¸¦ ¼³¸íÇÕ´Ï´Ù. ¶ÇÇÑ ¶óÁ¸® ÆÄÀÌ¿¡¼ ¸®´ª½º Ä¿³ÎÀÇ ¼Ò½ºÄڵ带 Á÷Á¢ ¼öÁ¤ÇØ ¼³Ä¡ÇÑ ´ÙÀ½ Ä¿³ÎÀ» µð¹ö±ëÇÏ´Â ¹æ¹ýÀ» ´Ù·ì´Ï´Ù. °¢ Àå¿¡¼ ¼Ò°³ÇÏ´Â Ä¿³Î µð¹ö±ë ¹æ¹ýÀº ½Ç¹« °³¹ß¿¡ ±×´ë·Î Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¢Ã [1ºÎ] Ä¿³Î µð¹ö±ë(ftrace), ÇÁ·Î¼¼½º, ÀÎÅÍ·´Æ®, ÀÎÅÍ·´Æ® ÈĹݺÎ, ¿öũť Æí
¸ÕÀú Ä¿³ÎÀ» µð¹ö±ëÇÏ´Â ¹æ¹ý°ú ÇÔ²² ftrace »ç¿ë¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù. Ä¿³ÎÀ» ½ÇÇàÇÏ´Â ÁÖÀΰøÀÎ ÇÁ·Î¼¼½º¿Í ÀÎÅÍ·´Æ®¸¦ Ä¿³ÎÀÌ Ã³¸®ÇÏ´Â ¼¼ºÎ µ¿ÀÛ ¿ø¸®¸¦ ´Ù·ì´Ï´Ù. ÀÎÅÍ·´Æ® ÈĹݺθ¦ ó¸®ÇÏ´Â IRQ ½º·¹µå(threaded IRQ)¿Í Soft IRQ ±â¹ý°ú Ä¿³Î¿¡¼ ÈĹݺθ¦ ó¸®ÇÏ´Â ¿öũť¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
¢Ã [2ºÎ] ŸÀ̸Ó, µ¿±âÈ, ½ºÄÉÁÙ¸µ, ½Ã½ºÅÛ ÄÝ, ½Ã±×³Î, °¡»ó ÆÄÀÏ ½Ã½ºÅÛ, ¸Þ¸ð¸® °ü¸® Æí
Ä¿³ÎÀÌ ½Ã°£ÀÇ È帧À» °ü¸®ÇÏ´Â µ¿ÀÛ ¿ø¸®¿Í µ¿±âÈ ±â¹ý(½ºÇɶô, ¹ÂÅØ½º)À» ´Ù·ì´Ï´Ù. ¿©·¯ ÇÁ·Î¼¼½ºÀÇ ½ÇÇà È帧À» °ü¸®ÇÏ´Â ½ºÄÉÁÙ¸µÀÇ ¼¼ºÎ ±¸Çö ¹æ½Ä°ú ½Ã½ºÅÛ Äݰú ½Ã±×³ÎÀ» Ä¿³Î¿¡¼ ¾î¶² ¹æ½ÄÀ¸·Î ó¸®ÇÏ´ÂÁö ¼³¸íÇÕ´Ï´Ù. ´Ù¾çÇÑ ÆÄÀÏ ½Ã½ºÅÛÀ» °øÁ¸ÇØ ½ÇÇà½Ãų ¼ö ÀÖ´Â °¡»ó ÆÄÀÏ ½Ã½ºÅÛ°ú Ä¿³ÎÀÇ ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ¹æ½Ä¿¡ ´ëÇØ ´Ù·ì´Ï´Ù.
ºÎ·ÏÀ¸·Î ¸®´ª½º Ä¿³ÎÀÇ ¸ÞÀϸµ ¸®½ºÆ®¸¦ Ȱ¿ëÇÏ´Â ¹æ¹ý°ú ¸®´ª½º Ä¿³Î¿¡ ±â¿©ÇÏ´Â ¹æ¹ýÀ» ÀÚ¼¼È÷ ¼Ò°³ÇÕ´Ï´Ù.
ÀúÀÚ Á¤º¸
±èµ¿Çö( ÀúÀÚ)
ÀúÀÚ : ±èµ¿Çö
ÀúÀÚ : ±èµ¿Çö
µå¶óÀ̹ö¸¦ ¾ÈÁ¤È(Kernel Stability Troubleshooting)Çϰųª º¸µå¸¦ ºê¸µ¾÷ÇÏ´Â °úÁ¦¿¡ Âü¿©Çß´Ù. ·Î¿ì ·¹ÀÌ¾î ¼ÒÇÁÆ®¿þ¾î(ºÎÆ®·Î´õ, ¸®´ª½º Ä¿³Î µå¶óÀ̹ö)ÀÇ ´Ù¾çÇÑ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â µð¹ö±ë ¹æ¹ý¿¡ °ü½ÉÀÌ ¸¹À¸¸ç ½Ç¹« Áö½ÄÀ» ºí·Î±×¸¦ ÅëÇØ ´Ù¸¥ °³¹ßÀÚ¿Í °øÀ¯ÇÏ´Â °ÍÀ» Áñ±ä´Ù.
ºí·Î±×: http://rousalome.egloos.com/
¸ñÂ÷
¢Ã 01Àå: ¸®´ª½º ¼Ò°³¿Í Àü¸Á
1.1 ¸®´ª½º¿Í ¸®´ª½º Ä¿³ÎÀº ¿Ö ¹è¿ö¾ß ÇÒ±î?
__1.1.1 ¸®´ª½º´Â ¿Ö ¹è¿ö¾ß ÇÒ±î?
__1.1.2 ¸®´ª½º Ä¿³ÎÀº ¿Ö ¹è¿ö¾ß ÇÒ±î?
1.2 ¸®´ª½ºÀÇ Àü¸Á
__1.2.1 ¿î¿µÃ¼Á¦¶õ ¹«¾ùÀΰ¡?
__1.2.2 ¿ì¸®´Â ¾î¶² ¿î¿µÃ¼Á¦¸¦ ¾²°í ÀÖ³ª?
1.3 ¸®´ª½ºÀÇ ¿ª»ç
__1.3.1 À¯´Ð½ºÀÇ Åº»ý
__1.3.2 1991³â: ¸®´©½º Åä¹ßÁîÀÇ µîÀå
__1.3.3 ¸®´ª½º°¡ Àαâ ÀÖ´Â ÀÌÀ¯´Â ¹«¾ùÀϱî?
1.4 ¸®´ª½º´Â ¾îµð¿¡ ¾²Àϱî?
__1.4.1 ¾Èµå·ÎÀ̵å
__1.4.2 ÀÚµ¿Â÷(AutoMotive)
__1.4.3 »ç¹°ÀÎÅͳÝ(IoT: Internet of Things) µð¹ÙÀ̽º
1.5 ÀÓº£µðµå ¸®´ª½º °³¹ß ´Üü
__1.5.1 ¸®´ª½º Ä¿³Î Ä¿¹Â´ÏƼ
__1.5.2 CPU º¥´õ
__1.5.3 SoC º¥´õ
__1.5.4 º¸µå º¥´õ ¹× OEM
1.6 ÀÓº£µðµå ¸®´ª½º °³¹ßÀ» Àß ÇÏ·Á¸é ¹«¾ùÀ» ¾Ë¾Æ¾ß ÇÒ±î?
__1.6.1 µð¹ÙÀ̽º µå¶óÀ̹ö
__1.6.2 ¸®´ª½º Ä¿³Î
__1.6.3 CPU ¾ÆÅ°ÅØÃ³
__1.6.4 ºôµå ½ºÅ©¸³Æ®¿Í Git
1.7 ¶óÁ¸® ÆÄÀÌ¿Í ¸®´ª½º Ä¿³Î
__1.7.1 ¶óÁ¸® ÆÄÀÌ ½Ç½À º¸µå
__1.7.2 ¸®´ª½º Ä¿³Î ¹öÀü
__1.7.3 ¶óÁîºñ¾È ¹öÀü
__1.7.4 ARM ¾ÆÅ°ÅØÃ³
1.8 Á¤¸®
¢Ã 02Àå: ¶óÁ¸® ÆÄÀÌ ¼³Á¤
2.1 ¶óÁ¸® ÆÄÀ̶õ?
2.2 ¶óÁ¸® ÆÄÀÌ ¼³Á¤
__2.2.1 ¶óÁ¸® ÆÄÀÌ ½Ç½ÀÀ» À§ÇÑ Áغñ¹°
__2.2.2 ¶óÁ¸® ÆÄÀÌ ¼³Ä¡
__2.2.3 ¶óÁ¸® ÆÄÀÌ ±âº» ¼³Á¤
2.3 ¶óÁ¸® ÆÄÀÌ Ä¿³Î ºôµå
__2.3.1 ¶óÁîºñ¾È ¹öÀü°ú Ä¿³Î ¼Ò½º ¹öÀü
__2.3.2 ¶óÁîºñ¾È Ä¿³Î ¼Ò½ºÄÚµå ³»·Á¹Þ±â
__2.3.3 ¶óÁîºñ¾È ¸®´ª½º Ä¿³Î ºôµå
__2.3.4 ¶óÁîºñ¾È ¸®´ª½º Ä¿³Î ¼³Ä¡
__2.3.5 Àüó¸® ÄÚµå »ý¼º
__2.3.6 ¸®´ª½º Ä¿³Î ¼Ò½ºÀÇ ±¸Á¶
2.4 objdump ¹ÙÀ̳ʸ® À¯Æ¿¸®Æ¼
2.5 ¶óÁ¸® ÆÄÀÌ »ç¿ë ½Ã ÁÖÀÇ»çÇ×
2.6 Á¤¸®
¢Ã 03Àå: Ä¿³Î µð¹ö±ë°ú ÄÚµå ÇнÀ
3.1 µð¹ö±ëÀ̶õ?
__3.1.1 µð¹ö±ëÀº ¹®Á¦ ÇØ°á ´É·ÂÀÇ Áö¸§±æ
__3.1.2 µð¹ö±ë°ú ÄÚµå ÇнÀ ´É·Â
3.2 printk
3.3 dump_stack() ÇÔ¼ö
3.4 ftrace
__3.4.1 ftrace¶õ?
__3.4.2 ftrace´Â ¾î¶»°Ô ¼³Á¤ÇÒ±î?
__3.4.3 ftrace ¸Þ½ÃÁö´Â ¾î¶»°Ô ºÐ¼®ÇÒ±î?
__3.4.4 ftrace ·Î±×´Â ¾î¶»°Ô ÃßÃâÇÒ±î?
__3.4.5 ftrace´Â Ä¿³Î ÄÚµå ºÐ¼®ÀÇ ¾È³»ÀÚ
3.5 ÀÓº£µðµå µð¹ö°ÅÀÇ Àü¼³ TRACE32
3.6 Ä¿³Î µð¹ö±ë¿ë Debugfs µå¶óÀ̹ö ÄÚµå
3.7 Á¤¸®
¢Ã 04Àå: ÇÁ·Î¼¼½º
4.1 ÇÁ·Î¼¼½º ¼Ò°³
__4.1.1 ÇÁ·Î¼¼½º¶õ?
__4.1.2 ŽºÅ©¶õ?
__4.1.3 ½º·¹µå¶õ?
4.2 ÇÁ·Î¼¼½º È®ÀÎÇϱâ
__4.2.1 ps ¸í·É¾î·Î ÇÁ·Î¼¼½º ¸ñ·Ï È®ÀÎ
__4.2.2 ftrace¿¡¼ ÇÁ·Î¼¼½º È®ÀÎÇϱâ
4.3 ÇÁ·Î¼¼½º´Â ¾î¶»°Ô »ý¼ºÇÒ±î?
__4.3.1 _do_fork() ÇÔ¼ö ¼Ò°³
__4.3.2 À¯Àú ·¹º§ ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÒ ¶§ _do_fork() ÇÔ¼öÀÇ Ã³¸® È帧
__4.3.3 Ä¿³Î ÇÁ·Î¼¼½º »ý¼º ½Ã _do_fork() ÇÔ¼öÀÇ È帧
4.4 À¯Àú ·¹º§ ÇÁ·Î¼¼½º ½ÇÇà ½Ç½À
__4.4.1 ±âº» À¯Àú ·¹º§ ÇÁ·Î¼¼½º ½ÇÇà ½Ç½À ¹× ftrace ·Î±× ºÐ¼®
__4.4.2 exit() ÇÔ¼ö·Î ÇÁ·Î¼¼½º°¡ Á¾·áµÇ´Â °úÁ¤ ¹× ftrace ·Î±× ºÐ¼®
4.5 Ä¿³Î ½º·¹µå
__4.5.1 Ä¿³Î ½º·¹µå¶õ?
__4.5.2 Ä¿³Î ½º·¹µåÀÇ Á¾·ù
__4.5.3 Ä¿³Î ½º·¹µå´Â ¾î¶»°Ô »ý¼ºÇÒ±î?
4.6 Ä¿³Î ³»ºÎ ÇÁ·Î¼¼½ºÀÇ »ý¼º °úÁ¤
__4.6.1 _do_fork() ÇÔ¼ö
__4.6.2 copy_process() ÇÔ¼ö ºÐ¼®
__4.6.3 wake_up_new_task() ÇÔ¼ö ºÐ¼®
4.7 ÇÁ·Î¼¼½ºÀÇ Á¾·á °úÁ¤ ºÐ¼®
__4.7.1 ÇÁ·Î¼¼½º Á¾·á È帧 ÆÄ¾Ç
__4.7.2 do_exit() ÇÔ¼ö ºÐ¼®
__4.7.3 do_task_dead() ÇÔ¼ö ºÐ¼®
__4.7.4 do_task_dead() ÇÔ¼ö¸¦ È£ÃâÇÏ°í ³ ÈÄÀÇ µ¿ÀÛ
4.8 ŽºÅ© µð½ºÅ©¸³ÅÍ(task_struct ±¸Á¶Ã¼)
__4.8.1 ÇÁ·Î¼¼½º¸¦ ½Äº°ÇÏ´Â Çʵå
__4.8.2 ÇÁ·Î¼¼½º »óÅ ÀúÀå
__4.8.3 ÇÁ·Î¼¼½º °£ÀÇ °ü°è
__4.8.4 ÇÁ·Î¼¼½º ¿¬°á ¸®½ºÆ®
__4.8.5 ÇÁ·Î¼¼½º ½ÇÇà ½Ã°¢ Á¤º¸
4.9 ½º·¹µå Á¤º¸: thread_info ±¸Á¶Ã¼
__4.9.1 thread_info ±¸Á¶Ã¼¶õ?
__4.9.2 thread_info ±¸Á¶Ã¼ ºÐ¼®
__4.9.3 thread_info ±¸Á¶Ã¼ÀÇ ÁÖ¼Ò À§Ä¡´Â ¾îµðÀϱî?
__4.9.4 ÄÁÅØ½ºÆ® Á¤º¸ »ó¼¼ ºÐ¼®
__4.9.5 cpu Çʵ忡 ´ëÇÑ »ó¼¼ ºÐ¼®
__4.9.6 thread_info ±¸Á¶Ã¼ ÃʱâÈ ÄÚµå ºÐ¼®
4.10 ÇÁ·Î¼¼½ºÀÇ Å½ºÅ© µð½ºÅ©¸³ÅÍ¿¡ Á¢±ÙÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö
__4.10.1 current ¸ÅÅ©·Î¶õ?
__4.10.2 current_thread_info() ¸ÅÅ©·Î ÇÔ¼ö ºÐ¼®
4.11 ÇÁ·Î¼¼½º µð¹ö±ë
__4.11.1 glibcÀÇ fork() ÇÔ¼ö¸¦ gdb·Î µð¹ö±ëÇϱâ
__4.11.2 ¸®´ª½º À¯Æ¿¸®Æ¼ ÇÁ·Î±×·¥À» ÀÌ¿ëÇÑ ½ÇÇà ÃßÀû
4.12 Á¤¸®
¢Ã 05Àå: ÀÎÅÍ·´Æ®
5.1 ÀÎÅÍ·´Æ® ¼Ò°³
__5.1.1 ÀÎÅÍ·´Æ®¶õ?
__5.1.2 ¸®´ª½º Ä¿³Î ÀÎÅÍ·´Æ®ÀÇ ÁÖ¿ä °³³ä
__5.1.3 ÀÎÅÍ·´Æ®¸¦ Àß ¾Ë¾Æ¾ß ÇÏ´Â ÀÌÀ¯
__5.1.4 ¸®´ª½º Ä¿³Î¿¡¼ÀÇ ÀÎÅÍ·´Æ®
ÃßÃµÇØ¿ä
- µî·ÏµÈ Ãßõ±ÛÀÌ ¾ø½À´Ï´Ù.
±èµ¿ÇöÀÇ ´Ù¸¥ Ã¥