5.4. trap_init()

Æ®·¦Àº ÀÎÅÍ·´Æ®¿Í´Â ´Þ¸® Á¤ÇØÁø °÷À¸·Î ºÐ±âÇϵµ·Ï µÇ¾î ÀÖ°í ¹øÈ£·Î Á¤ÇØÁ® ÀÖ´Ù. ¾Æ·¡´Â i386¿¡¼­ Á¤ÇØÁ® ÀÖ´Â Æ®·¦ÀÇ ÀϺθ¦ ¿­°ÅÇÑ °ÍÀÌ´Ù.

trap_init()¿¡¼± ½Ã½ºÅÛ ÄÝÀ» À§ÇÑ ÃʱâÈ­µµ ½ÇÇàÇØ 0x80À» ½Ã½ºÅÛ ÄÝ¿¡ »ç¿ëÇϵµ·Ï ÇØ³õ´Â´Ù.

±×¸®°í CPU¸¦ ÃʱâÈ­ ÇÑ´Ù. CPU ÃʱâÈ­¿¡¼± ÆäÀÌÁö, gdt, ldt, idt, tss µîÀÌ ¼³Á¤µÇ°í À̸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â »óÅ·Π¸¸µé¾î º»°ÝÀûÀÎ Ä¿³Î ½ÇÇà¿¡ µé¾î°£´Ù. /var/log/dmesgÀÇ (6)¿¡ Ãâ·ÂµÈ ÇÑ ÁÙÀÌ CPUÀÇ ÃʱâÈ­¸¦ ÀǹÌÇÑ´Ù.

i386¿¡¼­ trapÀ» ÃʱâÈ­ÇÏ´Â ÇÔ¼öÀÎ _set_gate()´Â C.2.2Àý¸¦ ÂüÁ¶ Çϱ⠹ٶõ´Ù.

ARM ÇÁ·Î¼¼¼­ÀÇ trapÀº arch/arm/kernel/entry-armv.S³ª arch/arm/kernel/entry-armo.S¿¡ Á¤ÀǵǾî ÀÖ°í ³»¿ëÀº ´ÙÀ½°ú °°´Ù. ¾ÕÀÇ °ªÀº vectorÀÇ offsetÀ» ¸»ÇÑ´Ù.