1장. ÆæƼ¾ö ÇÁ·Î¼¼¼­ÀÇ interrupt mechanism

차례
1.1. Interrupt Descriptor Table(IDT)
1.1.1. IDTR
1.1.2. Interrupt Descriptor Table Structure
1.2. Context Change and Stack Handling

ÀÎÅÚÀÇ ÇÁ·Î¼¼¼­(ƯÈ÷ ÆæƼ¾ö)´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» °¡·Îä±â(interrupt) À§ÇÑ mechanism À¸·Î µÎ°¡Áö¸¦ Á¦°øÇÑ´Ù. Çϳª´Â interrupt ¿¡ ÀÇÇÑ ¹æ¹ýÀ̸ç, ¶Ç Çϳª´Â exception(¿¹¿Ü »óȲ) ¿¡ ÀÇÇÑ ¹æ¹ýÀÌ´Ù.

interrupt ´Â ÀϹÝÀûÀ¸·Î I/O µð¹ÙÀ̽ºµé¿¡ ÀÇÇؼ­ Åä±ÛµÇ¾îÁö´Â ºñµ¿±â À̺¥Æ®¸¦ ÅëĪÇÏ´Â ¿ë¾îÀÌ´Ù. ÀÎÅÍ·´Æ®°¡ ÇÁ·Î¼¼¼­¿¡¼­ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» '°¡·Îä´Â' °æ¿ì´Â, µÎ°¡Áö°¡ ÀÖ´Ù. ÇÑ°¡Áö´Â ½ÇÁ¦ÀÇ Çϵå¿þ¾î·Î ºÎÅÍÀÇ ÀÎÅÍ·´Æ®·Î½á, ÀÌ °æ¿ì´Â ÇÁ·Î¼¼¼­ÀÇ INTR ÇÉÀ» ÅëÇؼ­ ½Ã±×³ÎÀÌ µé¾î¿À°Ô µÈ´Ù. ÀÌ ½Ã±×³ÎÀº ÀϹÝÀûÀ¸·Î ¿ÜºÎÀÇ I/O ÀåÄ¡µé·ÎºÎÅÍ ¿À´Â °ÍÀÌ´Ù. ³ª¸ÓÁö ÇÑ°¡ÁöÀÇ °æ¿ì´Â ÇÁ·Î±×·¡¸Ó°¡ ¹ß»ý½ÃŲ 'software' ÀÎÅÍ·´Æ®ÀÌ´Ù. ÀÌ °æ¿ì´Â ÇÁ·Î±×·¡¸Ó°¡ 'int' ¾î¼Àºí¸® ÀνºÆ®·°¼ÇÀ» ÀÌ¿ëÇؼ­ ¹ß»ý½ÃÅ°´Â °æ¿ì°¡ µÇ°Ú´Ù.

execption(¿¹¿Ü»óȲ) Àº °æ¿ì°¡ ¾à°£ ´Ù¸¥µ¥, ÀÌ °æ¿ì´Â ÇÁ·Î¼¼¼­°¡ ¹Ì¸® Á¤ÀǵǾî ÀÖ´Â Á¶°ÇÀ» °¨Áö(detection) ÇßÀ» °æ¿ìÀÌ´Ù. ¹Ì¸® Á¤ÀǵǾî ÀÖ´Â Á¶°ÇµéÀ̶ó°í Çϸé, À̸¦Å׸é, ÆäÀÌÁö ÆúÆ® [1] ¿¹¿Ü»óȲ(execption) À̳ª devide by 0 µî°ú °°Àº ¿¹¿Ü»óȲÀÌ ÀÖ´Ù. ¾î·µç, ÀÌ¿Í°°Àº ¹Ì¸® Á¤ÀǵǾî ÀÖ´Â ¿¹¿Ü»óȲµéÀÌ ¹ß»ýÇϸé, ÇÁ·Î¼¼¼­´Â ±×¿¡ ÇØ´çÇÏ´Â Á¤ÀÇµÈ Çڵ鷯¸¦ ½ÇÇà½ÃÅ°°í, EIP ·¹Áö½ºÅÍ¿¡ ÀÖ´Â ´ÙÀ½ ½ÇÇàÇÒ ÀνºÆ®·°¼ÇÀÇ ÁÖ¼Ò µîÀ» exception ÀÇ Á¾·ù¿¡ µû¶ó¼­ ÇÑ ÀνºÆ®·°¼Ç ¾ÕÀ¸·Î ¿Å°Ü¼­ ´Ù½Ã instruction fetch cycle À» ½ÃÀÛÇÑ´ÙµçÁö ȤÀº ±× ´ÙÀ½ ÀνºÆ®·°¼ÇÀ» fetch Çؼ­ ½ÇÇàÇÑ´ÙµçÁö ÇÏ´Â Á¶Ä¡¸¦ ÃëÇÏ°Ô µÈ´Ù.

주석

[1]

ÆäÀÌÁö ÆúÆ®ÀÇ °æ¿ì¿¡´Â ¿î¿µÃ¼Á¦¿¡¼­ ¸Å¿ì À¯¿ëÇÏ°Ô »ç¿ëÇÑ´Ù. ¸®´ª½ºÀÇ °æ¿ì¿¡´Â ÁÖ·Î ÆäÀÌ¡¿¡ ÀÇÁ¸ÇÏ´Â ¸Þ¸ð¸® °ü¸® ½Ã½ºÅÛÀ» »ç¿ëÇϴµ¥, ÀÌ °æ¿ì, »ç¿ëÀÚ ÇÁ·Î¼¼½º ȤÀº ÇÁ·Î¼¼¼­ »ó¿¡¼­ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÌ ÇöÀç '½Ç'¸Þ¸ð¸®¿¡ ¿Ã¶ó¿Í ÀÖÁö ¾ÊÀº, Áï, µð½ºÅ©¿¡ ½º¿Ò µÇ¾î ÀÖ´Â µî '½Ç' ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏÁö ¾Ê´Â ÁÖ¼Ò ¿µ¿ª¿¡ Á¢±ÙÇÏ·Á´Â ½Ãµµ¸¦ Çϸé, ÇÁ·Î¼¼¼­´Â ÆäÀÌÁö ÆúÆ® execption À» ¹ß»ý½ÃÅ°°Ô µÇ¸ç, ÀÌ·Î ÀÎÇØ ¸®´ª½ºÀÇ page fault exception handler °¡ ½ÇÇàµÇ¾î¼­ ¸Þ¸ð¸® ½º¿ÍÇÎÀÌ ÀϾ°Ô µÇ¸ç, µð½ºÅ© µîÀÇ ÀåÄ¡¿¡ swap out µÇ¾î ÀÖ´Â ¸Þ¸ð¸®ÀÇ data°¡ ½ÇÁ¦ÀÇ ¸Þ¸ð¸®·Î Àоîµé¿©Áö°Ô µÈ´Ù.