1993.1.3 SUBJECT: UNIXÀÇ Kernel DESCRIPTION: 0. KernelÀ̶õ ? * UNIX ½Ã½ºÅÛ Áß Ç×»ó ÁÖ±â¾ï ÀåÄ¡(Main Memory)¿¡ »óÁÖÇÏ´Â UNIXÀÇ ÇÙ½ÉÀÌ´Ù. * KernelÀº ÄÄÇ»ÅÍ ÀÛµ¿¿¡ °üÇÑÇÑ ¸ðµç °ÍÀ» °ü¸®Çϴ Ưº°ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. KernelÀº ½ÇÇàµÇ´Â ¸ðµç utility¸¦ Á¶È½ÃÄÑ ¼·Î¸¦ ¹æÇØÇÏÁö ¸øÇϵµ·Ï Çϸç, ½Ã½ºÅÛÀÇ ¸ðµç resource(process, file, I/O device ....)¸¦ °ü¸®ÇÑ´Ù. * UNIXÀÇ KernelÀº ´Ù¸¥ ¿î¿µÃ¼Á¦¿¡ ºñÇؼ ºñ±³Àû ÀûÀº ¼ºñ½º¸¦ Á¦°øÇÑ´Ù. * Kernel ÀÚü´Â Á÷Á¢ »ç¿ëÀÚ¿Í Á¢ÇÏ´Â ÀÏÀÌ ¾ø°í ¸ðµç ÀÏÀº Kernel°ú »ç¿ëÀÚ »çÀÌ¿¡ Á¸ÀçÇÏ´Â utility program(ÁÖ·Î shell)µéÀ» ÅëÇؼ ÀÌ·ç¾î Áø´Ù. * Ãʱâ UNIX KernelÀº ¾à 10,000ÁÙÀÇ C¾ð¾î¿Í 1,000ÁÙÀÇ ¾î¼Àºí¸®¾î·Î µÇ¾î ÀÖ´Ù. 1. Kernel¿¡ ÀÇÇØ Á¦°øµÇ´Â ¼ºñ½º 1) ProcessÀÇ ½ÇÇà¿¡ ´ëÇÑ Á¦¾î: ProcessÀÇ »ý¼º/Á¾·á/ÁßÁö/Åë½Å µî, ProcessÀÇ ½ÇÇà¿¡ ´ëÇÑ °ü¸® 2) CPU¿¡ ÀÇÇÑ ½ÇÇàÀ» À§ÇØ ProcessµéÀ» °øÆòÇÏ°Ô scheduleÇÏ´Â ±â´É: ProcessµéÀº ½ÃºÐÇÒ ±â¹ý¿¡ ÀÇÇØ CPU¸¦ °øÀ¯ÇÏ°Ô µÈ´Ù. Áï CPU°¡ ÇÑ Process¸¦ ½ÇÇàÇÒ ¶§ KernelÀº ÁÖ¾îÁø ½Ã°£ ÇÒ´ç·®ÀÌ Áö³ª¸é ±× Process¸¦ ÁߴܽÃÅ°°í ´Ù¸¥ Process¸¦ scheduleÇÏ¿© ½ÇÇàÇÑ´Ù. KernelÀº ÈÄ¿¡ Áß´ÜµÈ Process¸¦ ´Ù½Ã scheduleÇÑ´Ù. 3) ½ÇÇà Process·ê À§ÇÑ ÁÖ±â¾ï ÀåÄ¡ÀÇ ÇÒ´ç: KernelÀº ProcessµéÀÌ ±×µéÀÇ ÁÖ¼Ò °ø°£ ÀϺθ¦ ÁÖ¾îÁø Á¶°ÇÇÏ¿¡ ¼·Î °øÀ¯ÇÒ ¼ö ÀÖ°Ô ÇÏÁö¸¸, °¢ ProcessÀÇ »çÀ¯ ÁÖ¼Ò °ø°£À» ¿ÜºÎ °£¼·À¸·ÎºÎÅÍ º¸È£ÇØ ÁØ´Ù. ¸¸¾à ½Ã½ºÅÛÀÌ ÀÚÀ¯ ¸Þ¸ð¸® ¿µ¿ªÀÌ ¸ðÀÚ¶ó¸é, KernelÀº Process¸¦ Àӽ÷ΠswapÀåÄ¡¶ó ºÒ¸®´Â º¸Á¶ ±â¾ï ÀåÄ¡¿¡ ±â·ÏÇÔÀ¸·Î½á ¸Þ¸ð¸®¸¦ ¿©À¯ÀÖ°Ô ¸¸µç´Ù. ¸¸¾à KernelÀÌ 'ÇÑ Process Àüü'¸¦ swap ÀåÄ¡¿¡ ±â·ÏÇÑ´Ù¸é ±× UNIX ½Ã½ºÅÛÀÇ ±¸ÇöÀº "swapping sytem"ÀÌ µÇ´Â °ÍÀÌ°í, ¸¸ÀÏ '¸Þ¸ð¸®ÀÇ page'¸¦ swap ÀåÄ¡¿¡ ±â·ÏÇÑ´Ù¸é "paging system"À̶ó ºÒ¸®´Â °ÍÀÌ´Ù. 4) ÈÀÏ ½Ã½ºÅÛ °ü¸®: »ç¿ëÀÚ µ¥ÀÌŸÀÇ È¿°úÀûÀÎ ÀúÀå°ú °Ë»öÀ» À§ÇÑ º¸Á¶±â¾ï ÀåÄ¡ÀÇ ÇÒ´çÀ» °ü¸®ÇÑ´Ù. KernelÀº º¸Á¶±â¾ï ÀåÄ¡¸¦ »ç¿ëÀÚ ÈÀÏ¿¡ ÇÒ´çÇÏ°í, »ç¿ëµÇÁö ¾Ê´Â °ø°£À» ¹Ý³³¹Þ°í ÈÀÏ ½Ã½ºÅÛÀ» Àß ÀÌÇØµÉ ¼ö ÀÖµµ·Ï ±¸¼ºÇÏ¿© »ç¿ëÀÚ ÈÀÏÀ» ºÒ¹ýÀûÀÎ Á¢±ÙÀ¸·ÎºÎÅÍ º¸È£ÇÑ´Ù. 5) ÁÖº¯ ÀåÄ¡¿¡ ´ëÇÑ ProcessÀÇ Á¢±ÙÀ» °ü¸®: Å͹̳Î, Å×ÀÌÇÁ µå¶óÀ̺ê, µð½ºÅ© µå¶óÀ̺ê, ³×Æ®¿÷ µð¹ÙÀ̽º µîÀÇ ÁÖº¯ÀåÄ¡¸¦ À§ÇÑ device driver¶ó´Â moduleÀ» °¡Áö°í ÀÖ¾î À̵é device¸¦ »ç¿ëÇÏ·Á´Â ProcessÀÇ ¿ä±¸¸¦ °ü¸®ÇÑ´Ù. 6) »ç¿ëÀÚ Â÷¿øÀÇ ProcessµéÀÌ ¹Ýµå½Ã Á¦°øÇØ¾ß ÇÏ´Â ¼ºñ½º¸¦ ÇÒ ¼ö ÀÖµµ·Ï Áö¿ø: ¿¹¸¦ µé¾î, KernelÀº shellÀÌ command interpreterÀÇ ¿ªÇÒÀ» ¼öÇàÇÒ ¶§ ÇÊ¿ä·ÎÇÏ´Â ¼ºñ½º¸¦ Á¦°øÇÑ´Ù. keybord ÀÔ·ÂÀ» Àд ±â´É, ProcessÀÇ µ¿Àû »ý¼º, Process½ÇÇàÀÇ µ¿±âÈ, ÆÄÀÌÇÁÀÇ »ý¼º, ÀÔÃâ·Â ÀçÁöÁ¤ µîÀÇ ±â´ÉÀ» ÀǹÌÇÑ´Ù. 7) System CallÀÇ Á¦°ø: »ç¿ëÀÚ ÇÁ·Î±×·¥À̳ª ¶óÀ̺귯¸®¿¡ ÀÇÇØ building-blockÀ¸·Î »ç¿ëµÇ´Â system callÀ» Á¦°øÇÑ´Ù. 8) InterrutÀÇ Ã³¸® Revision History Created on Jan. 3 ,1993