· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
sched-design.txt

¿ªÀÚ : ¼ÛÇüÁÖ(hyungjoo.song@gmail.com)

»õ·Î¿î °­·ÂÇÑ ¼º´ÉÀÇ 0(1) ½ºÄÉÁì·¯ÀÇ ¸ñÇ¥µé, ¼³°è ±×¸®°í ±¸Çö

ÀÌ ¹®¼­´Â 2002³â 1¿ù 4ÀÏ¿¡ Ingo molnarÀÌ LKML¿¡ º¸³½ À̸ÞÀÏÀ» ÆíÁýÇÑ °ÍÀÌ´Ù. º» ¹®¼­´Â Ingo°¡ »õ·Ó°Ô Á¦¾ÈÇÑ °­·ÂÇÑ ¼º´ÉÀÇ O(1) ½ºÄÉÁì·¯ÀÇ ¸ñÇ¥, ¼³°è, ±×¸®°í ±¸Çö¿¡ ´ëÇؼ­ ¼³¸íÇÑ´Ù.

¸ñÇ¥


»õ·Î¿î ½ºÄÉÁì·¯ÀÇ ÁÖ¿ä ¸ñÇ¥´Â ±âÁ¸ÀÇ ¸®´ª½º ½ºÄÉÁì·¯ÀÇ ÀåÁ¡À» ±×´ë·Î À¯ÁöÇÏ´Â °ÍÀÌ´Ù.

  • °úµµÇÑ ½Ã½ºÅÛ ºÎÇÏ¿¡µµ ºÒ±¸ÇÑ ¶Ù¾î³­ ÀÀ´ä ¼º´É : ¸¸¾à »ç¿ëÀÚ°¡ Å°º¸µå³ª ¸¶¿ì½º¸¦ Ŭ¸¯Çß´Ù¸é, ½Ã½ºÅÛÀº »ó´çÇÑ ¾çÀÇ background ÀÛ¾÷À» ó¸®ÇÏ°í ÀÖ´õ¶óµµ, Áï½Ã ¹ÝÀÀÇÏ°í, »ç¿ëÀÚÀÇ ÀÛ¾÷À» ºÎµå·´°Ô ó¸®ÇØ¾ß ÇÑ´Ù.

  • 1-2°³ÀÇ ½ÇÇà °¡´ÉÇÑ ÇÁ·Î¼¼½º·ÎµéÀ» ÅëÇÑ ¶Ù¾î³­ ½ºÄÉÁ층/wakeup ¼º´É

  • °øÆò¼º : ¾î¶² ÇÁ·Î¼¼½ºµµ ºÎ´çÇÑ ½Ã°£ µ¿¾È ŸÀÓ ½½¶óÀ̽º ¾øÀÌ °è¼Ó ½ÇÇàµÉ ¼ö ¾ø´Ù. ¾î´À ÇÁ·Î¼¼½ºµµ ºÎ´çÇÏ°Ô cpu ½Ã°£À» Ãß°¡·Î »ç¿ëÇÒ ¼ö ¾ø´Ù.

  • ¿ì¼±¼øÀ§ : ´õ Áß¿äÇÑ Å½ºÅ©µéÀº ³·Àº ¿ì¼± ¼øÀ§¸¦ ½ÇÇàµÇ¸ç, ´õ Áß¿äÇÑ Å½ºÅ©µéÀº ´õ ³ôÀº ¿ì¼±¼øÀ§¸¦°¡Áö°í ½ÇÇàµÉ ¼ö ÀÖ´Ù.

  • SMP È¿À²¼º : ¼öÇàÇÒ ÀÛ¾÷ÀÌ ÀÖ´Ù¸é, ¾î´À CPUµµ idle »óÅ¿¡ ´ë±âÇÏÁö ¾Ê´Â´Ù.

  • SMP Ä£¹Ð¼º : ƯÁ¤ CPU¿¡¼­ µ¿ÀÛÁßÀÎ ÇÁ·Î¼¼½ºµéÀº ÇØ´ç CPU¿¡ ´õ Ä£¹Ð¼ºÀ» °®´Â´Ù. ÇÁ·Î¼¼½ºµéÀº CPU »çÀ̸¦ ÀÚÁÖ ¿Å°Ü´Ù´ÏÁö ¾Ê¾Æ¾ß ÇÑ´Ù.

  • Ãß°¡ÀûÀΠƯ¡ : RT ½ºÄÉÁ층, CPU ¹ÙÀεù

¸ñÇ¥¿¡ ´ÙÀ½°ú °°Àº »õ·Î¿î Ư¡ÀÌ Ãß°¡µÆ´Ù.

  • ¿ÏÀüÇÑ O(1) ½ºÄÉÁ층. ¸Å¹ø L1 ij½ÃÀÇ ³»¿ëÀ» ³¯·Á¹ö¸®´Â Àç°è»ê ·çÇÁ¿¡ ÁöÄ¡Áö ¾Ê¾Ò´Â°¡? ½ÇÇà °¡´ÉÇÑ ÇÁ·Î¼¼½º°¡ ¸¹´Ù¸é, goodness ·çÇÁÀÇ ¼öÇà ½Ã°£ÀÌ ²Ï ±æ¾îÁø´Ù°í »ý°¢Çϴ°¡? ÀÌ »õ·Î¿î ½º°ÔÁì·¯´Â wakeup(), schedule(), ŸÀÌ¸Ó ÀÎÅÍ·´Æ® ¸ðµÎ°¡ O(1) ¾Ë°í¸®ÁòÀ¸·Î µ¿ÀÛÇÑ´Ù. Àç°è»ê ·çÇÁ ¹× goodness ·çÇÁ ¿ª½Ã ¼öÇàÇÏÁö ¾Ê´Â´Ù.

  • ¿ÏÀüÇÑ' SMP È®À强.''' »õ ½ºÄÉÁì·¯´Â 'ºÎÇÏ°¡ Å«' runqueue_lock'¸¦ »ç¿ëÇÏÁö ¾Ê°í, ¸ðµç cpuº°·Î ÀÚü ½ÇÇàÅ¥¿Í lockÀ» »ç¿ëÇÑ´Ù. ¶§¹®¿¡ µÎ °³ÀÇ ¼­·Î ´Ù¸¥ cpu¿¡¼­ µ¿ÀÛÇÏ´Â °¢°¢ÀÇ Å½ºÅ©µéÀ» º´·ÄÀûÀ¸·Î »óÈ£°£¿¡ ¾î¶² locking ¾øÀ̵µ ±ú¿ì°Å³ª, ½ºÄÉÁ층 ¶Ç´Â ÄÁÅؽºÆ® ½ºÀ§Äª ÇÒ ¼ö ÀÖ´Ù.

  • ´õ ¶Ù¾î³­ SMP Ä£¹Ð¼º. ¿¹Àü ½ºÄÉÁì·¯´Â ¿ì¼±¼øÀ§°¡ ³ô°Å³ª »óÈ£ÀÛ¿ë ŽºÅ©°¡ ¾î¶² CPU¿¡ ÇÒ´çµÉÁö¸¦ ¸ð¸£´Â ¾àÁ¡ÀÌ ÀÖ¾ú´Ù. ÀÌ°ÍÀº ¸¹Àº »ç¶÷µé¿¡°Ô ¹ß°ßµÆ°í, º¸°í µÆ´Ù.(¿ªÀÚÁÖ, º¸Åë ƯÁ¤ CPU¿¡¼­ ÇÑ ¹ø ½ÇÇàµÈ ÇÁ·Î¼¼½º´Â ´ÙÀ½¿¡µµ °°Àº CPU¿¡¼­ ½ÇÇàµÇ´Â °ÍÀÌ Ä³½Ã µîÀÇ È°¿ë¿¡¼­µµ ÁÁÀº ¼º´ÉÀ» °¡Á®¿Â´Ù. ¹°·Ð ºÎÇÏ°¡ Å« ÇÁ·Î¼¼½º°¡ ƯÁ¤ CPU¿¡¼­¸¸ µ¿ÀÛÇѴٰųª ·Îµå ¹ë·±½Ì Â÷¿ø¿¡¼­ ´Ù¸¥ CPU·Î ÇØ´ç ŽºÅ©¸¦ À̵¿ÇÒ ¼öµµ ÀÖ´Ù.) ÀÌ°ÍÀÇ ¿øÀÎÀº ¿ì¼± ŸÀÓ½½¶óÀ̽º¸¦ Àç°è»êÇÏ´Â ·çÇÁ°¡ ÇöÀç ¸ðµç CPU¿¡¼­ ½ÇÇàÁßÀΠŸÀÓ ½½¶óÀ̽º¸¦ ¼ÒÁø½ÃÄÑ¾ß Çϱ⠶§¹®ÀÌ´Ù. °¡·É 8 way ½Ã½ºÅÛ¿¡¼­ ÀÌ·¯ÇÑ Æ¯¼ºÀº Ãß°¡ CPUµéÀÌ ÇÁ·Î¼¼½º¸¦ ½ÇÇà½ÃÅ°´Âµ¥ ÀÖ¾î ±â¾Æ Çö»óÀ» ÀÏÀ¸Å²´Ù. ÀÏ´Ü Å¸ÀÓ ½½¶óÀ̽º°¡ ³²¾Æ ÀÖ´Â ¸¶Áö¸· ŽºÅ©°¡ ŸÀÓ ½½¶óÀ̽º¸¦ ´Ù ¼ÒÁøÇϸé, Àç°è»ê ·çÇÁ°¡ µ¿ÀÛÇÏ°í CPUµéÀº ¾î´À Á¤µµÀÇ Å¸ÀÌ¸Ó Æ½ µ¿¾È ´ë±âÇÑ ÈÄ¿¡¾ß ´Ù½Ã ŽºÅ©¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù. CPU°¡ ¸¹¾ÆÁú ¼ö·Ï, ÀÌ°ÍÀº ´õ ¾ÈÁÁÀº È¿°ú¸¦ ÃÊ·¡ÇÑ´Ù.

    °Ô´Ù°¡ ÀÌ·¯ÇÑ Çö»óÀº ¹Ù¿î½Ì È¿°ú¸¦ ÀÏÀ¸Å²´Ù. Àü¿ª ½ÇÇàÅ¥¿¡¼­ ŸÀ̽½¶óÀ̽ºÀÇ ¼ÒÁøÀÌ ÀÖÀ» ¶§ ¸¶´Ù, ´ë±âÁßÀÎ ÇÁ·Î¼¼¼­µéÀº Àڽſ¡°Ô Ä£¹ÐÇÏÁö ¾ÊÀº ŽºÅ©¸¦ ½ÃÀÛÇÑ´Ù. (¿Ö³ÄÇϸé Ä£¹ÐÇÑ Å½ºÅ©µéÀº ÀÌ¹Ì Å¸ÀÓ ½½¶óÀ̽º°¡ ³¡³µ±â ¶§¹®ÀÌ´Ù.)

    »õ·Î¿î ½ºÄÉÁì·¯´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ¾î¶² Àü¿ªÀûÀÎ µ¿±âÈ­³ª À÷°è»ê ¾øÀÌ CPUº°·Î ŸÀÓ ½½¶óÀ̽º °ü¸®¸¦ ºÐ¹èÇÔÀ¸·Î½á ÇØ°áÇß´Ù.

  • ¹èÄ¡ ½ºÄÉÁ층. ÄÄÇ»Æà Áß½ÉÀÇ ÀÛ¾÷ÀÌ ÁÖµÈ Å×½ºÅ©µéÀº ŸÀÓ ½½¶óÀ̽º°¡ ±æ°í, °è¼Ó ¼øȯµÇ¸ç ½ºÄÉÁ층 ÇÏ´Â ¹èÄ¡ ½ºÄÉÁ층 ¹æ½Ä¿¡¼­ À̵æÀ» ¾ò´Â´Ù. »õ·Î¿î ½ºÄÉÁì·¯´Â ÀÌ·¯ÇÑ ÇÁ·Î¼¼¼­ Áß½ÉÀÇ Å½ºÅ©¿¡°Ô °¡Àå ³·Àº ¿ì¼±¼øÀ§·Î ¹èÄ¡ ½ºÄÉÁ층À» ÇÑ´Ù. ±×·¡¼­ nice °ªÀÌ 19ÀÎ ÀÛ¾÷µéÀº ÀÚµ¿ÀûÀ¸·Î ¹èÄ¡ ½ºÄÉÁ층µÈ´Ù. »õ·Î¿î ½ºÄÉÁì·¯¿¡¼­ nice°ªÀÌ 19ÀÌ ÀÛ¾÷µéÀº »óÈ£ ¹ÝÀÀ¼º Ãø¸é¿¡¼­´Â º¼¶§, SCHED_IDLE ½ºÄÉÁ층 Á¤Ã¥À¸·Î µ¿ÀÛÇÑ´Ù°í º¸¸éµÈ´Ù.

  • ½É°¢ÇÑ °úºÎÇÏ »óÅ¿¡¼­ ÀÛ¾÷ÀÌ ²÷±â°Å³ª °úµµÇÑ ½ºÄÉÁ층 ¿À¹öÇìµå ¾øÀÌ, Á»´õ À¯¿¬ÇÏ°Ô Ã³¸®ÇÑ´Ù.

  • O(nr_running) ¼º´ÉÀÇ goodness loop¿Í recalculation loop¿¡ ¹Î°¨ÇÑ RT ŽºÅ©µé¿¡ ´ëÇÑ O(1) RT ½ºÄÉÁ층.

  • ºÎ¸ðº¸´Ù fork()·Î »ý¼ºµÈ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ¸ÕÀú ¼öÇà. Andrea°¡ ¸î ´ÞÀü¿¡ ÀÌ°Í¿¡ ´ëÇÑ ÀåÁ¡À» ÁöÀûÇØÁáÁö¸¸, ÀÌ°ÍÀ» Àû¿ëÇÑ ÆÐÄ¡´Â ±âÁ¸ ½ºÄÉÁì·¯ ¹× »õ ½ºÄÉÁì·¯¿¡¼­ ¼öÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù. ¿Ö³ÄÇϸé, idle ÇÁ·Î¼¼½ºµéÀº º¸Åë foking ÇÏ´Â CPU°¡ »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇϱâ Àü¿¡, »õ·Î¿î ÇÁ·Î¼¼½º¸¦ °¡·Îä±â ¶§¹®ÀÌ´Ù.

¼³°è

»õ·Î¿î ½ºÄÉÁì·¯´Â ´ÙÀ½°ú °°Àº ÇÙ½É ¸ÞÄ¿´ÏÁòÀ» Æ÷ÇÔÇÑ´Ù.

  • CPU¸¶´Ù ¿ì¼± ¼øÀ§ ¹è¿­ 2°³ »ç¿ë : 'active' ¹è¿­°ú 'expired' ¹è¿­. 'active' ¹è¿­Àº ŸÀÓ ½½¶óÀ̽º°¡ ³²Àº CPU¿¡¼­ 󸮰¡´ÉÇÑ ¸ðµç ŽºÅ©¸¦ Æ÷ÇÔÇÑ´Ù. 'expired' ¹è¿­Àº ŸÀÓ ½½¶óÀ̽º¸¦ ¸ðµÎ ¼ÒÁøÇÑ Å½ºÅ©µéÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ µÎ ¹è¿­Àº ¸ðµÎ ¿ì¼±¼øÀ§¸¦ ±âÁØÀ¸·Î Á¤·ÄµÈ´Ù. 'active' ¹è¿­°ú 'expired' ¹è¿­À» Á÷Á¢ Á¢±ÙÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, °¢ CPUÀÇ ½ÇÇàÅ¥¿¡ Æ÷ÇÔµÈ µÎ Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇؼ­ Á¢±ÙÇÑ´Ù. active ¹è¿­¿¡ Æ÷ÇÔµÈ active taskµéÀÌ ¸ðµÎ ¼ÒÁøµÇ¸é, ¿ì¸®´Â 'active' ¹è¿­°ú 'expired' ¹è¿­ÀÇ µÎ Æ÷ÀÎÅ͸¦ ½ºÀ§ÄªÇؼ­, ÀÌÁ¦ºÎÅÍ ±âÁ¸ÀÇ 'expired' ¹è¿­À» 'active' ¹è¿­·Î µ¿ÀÛµÇ°Ô ÇÑ´Ù. ±×¸®°í ±âÁ¸ÀÇ ºñ¾îÀÖ´Â 'active' ¹è¿­Àº 'expired' ¹è¿­·Î µ¿ÀÛÇϸç, ŸÀÓ ½½¶óÀ̽º¸¦ ¼ÒÁøÇÑ Å½ºÅ©µéÀ» ÀúÀåÇÏ´Â ¿ªÇÒÀ» ÇϰԵȴÙ.

  • ¿ì¼±¼øÀ§ ¹è¿­À» À妽ÌÇÏ´Â 64-bitÀÇ ºñÆ®¸Ê ij½Ã°¡ ÀÖ´Ù. ÃÖ°í ¿ì¼± ¼øÀ§¸¦ °¡Áø ŽºÅ©¸¦ ã´Â ÀÛ¾÷Àº ´ë°³ µÎ¹øÀÇ x86 BSFL ºñÆ® °Ë»ö ¸í·É¾î¸¦ »ç¿ëÇÑ´Ù.
    ÀÌ·± 'ºÐÇÒ ¹è¿­' ÇØ°áÃ¥Àº ÀÓÀÇ °³ÀÇ acitve ŽºÅ©¿Í expired ŽºÅ©µéÀ» °¡Áú ¼ö ÀÖ°Ú ²û ÇØÁÖ¸ç, ¶ÇÇÑ Å¸ÀÓ ½½¶óÀ̽ºÀÇ Àç°è»êÀº ŸÀÌ ½½¶óÀ̽º°¡ ¸¸·áµÈ Áï½Ã °è»ê °¡´ÉÇØÁø´Ù. µÎ ¹è¿­Àº Ç×»ó ½ÇÇàÅ¥ÀÇ Æ÷ÀÎÅÍ·Î Á¢±ÙÇÒ ¼ö Àֱ⠶§¹®¿¡, µÎ ¿ì¼± ¼øÀ§ ¹è¿­À» ½ºÀ§Äª ÇÏ´Â °ÍÀº ¸Å¿ì ºü¸£°Ô ó¸®µÉ ¼ö ÀÖ´Ù.
    ÀÌ°ÍÀº ¶ó¿îµå ·Îºó ½ºÄÉÁ층°ú ŸÀÓ ½½¶óÀ̽º¸¦ ºÐ¹èÇÏ´Â ¹è¿­-½ºÀ§Äª ¹æ¹ýÀ» °áÇÕÇÑ ¿ì¼±¼øÀ§ ¸®½ºÆ® °Ë»ö ¹æ¹ýÀÌ´Ù.

  • ŽºÅ© ´ÜÀ§ ºÎÇÏ ÃøÁ¤±â°¡ ÀÖ´Ù. ½Ã½ºÅÛ °úºÎÇÏ µ¿¾È¿¡µµ ¶Ù¾î³­ ÀÎÅ;×Ƽºê ¼º´ÉÀ» º¸ÀÌ´Â °ÍÀº Èûµç ÀÏÀÌ´Ù. ´Ù¾çÇÑ ½ºÄÉÁì·¯À» ¿î¿µÇØ º¸¸é¼­ ³ª´Â ÀÎÅ;×ƼºêÇÑ Å½ºÅ©¸¦ Áß¿ä½Ã ¿©±â´Â °Í ´ë½Å¿¡, CPU ½Ã°£À» ±âº» °ªº¸´Ù ´õ ¸¹ÀÌ »ç¿ëÇϱ⸦ ¿øÇϴ ŽºÅ©¿¡ ¹úÁ¡À» ÁÖ¹Ç·Î½á °¡Àå ¶Ù¾î³­ ÀÎÅ;×Ƽºê ¼º´ÉÀ» ¾òÀ» ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Æ³Â´Ù.ÀÌ ¹æ¹ýÀº O(1) ½ºÄÉÁì·¯ ¹æ½ÄÀ¸·Î ±²ÀåÈ÷ ¼ö¿ùÇÏ°Ô µ¿ÀÛÇÑ´Ù.

    ŽºÅ©°¡ ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ½ÇÁ¦ ºÎÇÏ Á¤µµ¸¦ ÃøÁ¤Çϱâ À§ÇØ, º¹ÀâÇØ º¸ÀÌÁö¸¸ ¸Å¿ì Á¤È®ÇÑ ´ÙÀ½°ú °°Àº ¹æ¹ý ÀÌ¿ëµÈ´Ù: ÃÖ±Ù 4ÃÊ µ¿¾È ŽºÅ©ÀÇ µ¿ÀÛÀ» ÀúÀåÇÑÇÏ´Â 4°³ÀÇ ¿£Æ®¸®¸¦ °¡Áø 'È÷½ºÅ丮(history)' ringbuffer¸¦ »ç¿ëÇÑ´Ù.¸µ ¹öÆÛ´Â Å« ¿À¹öÇìµå ¾øÀÌ µ¿ÀÛÇÑ´Ù. °¢ ¿£Æ®¸®µéÀº ½ºÄÉÁì·¯¿¡°Ô ŽºÅ©ÀÇ ºÎÇÏ(Áö³­ N ÃÊ µ¿¾È CPU ½Ã°£À» ´õ ¸¹ÀÌ È¤Àº ´õ Àû°Ô »ç¿ëÇß´ÂÁö¿¡ ´ëÇÑ Á¤º¸)¿¡ ´ëÇÑ history Á¤º¸¸¦ ¸Å¿ì Á¤È®ÇÏ°Ô ¾Ë·ÁÁØ´Ù. º¸ÅëÀº NÀÇ Å©±â´Â 4ÀÌ°í 4ÃÊÀÇ ÁֱⰡ ¸Å¿ì ¸¹Àº ½ÇÇè °á°ú¿¡ ÀÇÇØ ±¸ÇØÁ³´Ù. ÀÌ °ªÀº À¯¿¬Çϸç, º¯°æ °¡´ÉÇÏ´Ù.

    CPU°¡ ó¸® ÇÒ ¼ö ÀÖ´Â °Íº¸´Ù ´õ ¸¹Àº ºÎÇϸ¦ »ý¼ºÇÑ Å½ºÅ©µéÀÌ ¹ÞÀº ¹úÁ¡Àº ¿ì¼±¼øÀ§¸¦ °¨¼Ò½ÃŲ´Ù. ÀÌ·¯ÇÑ ¹úÁ¡Àº ŽºÅ©ÀÇ Á¤Àû ¿ì¼± ¼øÀ§¿¡ ´ëÇØ »ó´ëÀûÀÎ °ªÀ¸·Î¼­ ±× ÃÖ´ë°ªÀÌ °áÁ¤µÇ±â ¶§¹®¿¡ ÃÖ´ë°ªÀÇ ¹úÁ¡À» ¹ÞÀ» ¿ÏÀüÇÑ CPU Áß½ÉÀÇ Å½ºÅ©µé Á¶Â÷, °¢ÀÚ ¿ì¼± ¼øÀ§¸¦ ¾ò°í CPU¸¦ ÀûÀýÈ÷ ³ª´² ¾µ °ÍÀÌ´Ù.

    SMP ·Îµå ¹ë·±¼­´Â Ãß°¡ÀûÀÎ º´·Ä ÄÄÇ»Æðú ij½Ã °èÃþ¼º ±â´ÉÀ» ÅëÇØ È®ÀåµÉ ¼ö ÀÖ´Ù. : NUMA ½ºÄÉÁ층, ¸ÖƼÄÚ¾î CPU´Â ·Îµå ¹ë·±½º¸¦ ¼öÁ¤Çؼ­ ½±°Ô Áö¿øÇÒ ¼ö ÀÖ´Ù. ¹Ù·Î Áö±Ý ±×°ÍÀº ³» SMP ½Ã½ºÅÛ¿¡¼­ ¼öÁ¤µÇ°í ÀÖ´Ù.

    ³ª´Â prev->mm == next->mm¿¡ ÀåÁ¡À» ¹«½ÃÇß´Ù.- ³»°¡ »ý°¢Çϱ⿡´Â ÀÌ°ÍÀº ±×·¸°Ô Å« ÀåÁ¡À» º¸ÀÌÁö ¾Ê´Â´Ù. ±×°ÍÀº ÇöÀç ½ÇÇàÁßÀΠŽºÅ©¿Í ÇÑ ´Ü°è ¾Æ·¡ÀÇ ¿ì¼±¼øÀ§ °¡Áø ŽºÅ©µéÀÇ mmÀ» ºñ±³Çϱâ À§ÇØ O(1) schedule() ÇÔ¼ö¸¦ ¼öÁ¤ÇÔÀ¸·Î½á Ãß°¡µÉ ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ ÀÛ¾÷À¸·Î ÀÎÇØ ¼ö¸¹Àº Áß¿äÇÑ ÀÛ¾÷ µ¿¾È ²Ï ¸¹Àº »çÀÌŬÀ» ¼Ò¸ðÇÏ°Ô µÈ´Ù. ±×·¡¼­ ³ª´Â °¡´ÉÇÑÇÑ ÀÌ°ÍÀ» ÇÇÇϱ⸦ ¿øÇß´Ù.

  • SMP idle ŽºÅ©ÀÇ startup ÄÚµå´Â ¿©ÀüÈ÷ °æÀïÀûÀÌ°í »õ ½ºÄÉÁì·¯´Â °æÀï »óȲÀ» À¯¹ßÇÑ´Ù. ±×·¡¼­ ³ª´Â idle ŽºÅ©ÀÇ setup Äڵ带 ¾à°£ °£¼ÒÈ­ Çß´Ù. ¿ì¸®´Â ¸ðµç ÇÁ·Î¼¼¼­°¡ ¿ÏÀüÈ÷ ½ÃÀ۵ǰí, ¸ðµç idle ½º·¹µå°¡ µ¿ÀÛÇϱâ Àü¿¡´Â schedule() ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù.

  • ÀÌ ÆÐÄ¡´Â ¶ÇÇÑ sched.cÀÇ ¸¹Àº ºÎºÐÀ» ¾ø¾Ý´Ù. ¸î¸î Äڵ带 Ä¿³ÎÀÇ ÀûÀýÇÑ ´Ù¸¥ °÷À¸·Î ¿Å±â°í, ƯÁ¤ ÄÚµå ¼öÇà ¹× ÀÚ·á »ý¼º ºÎºÐÀ» ´Ü¼øÈ­Çß´Ù. ±× °á°ú, »õ ½ºÄÉÁì·¯ÀÇ ÄÚµå Å©±â´Â ±âÁ¸ ½ºÄÉÁì·¯ º¸´Ù ´õ ÀÛ¾ÆÁ³´Ù.


Ingo


ID
Password
Join
If you always postpone pleasure you will never have it. Quit work and play for once!


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-04-06 15:41:07
Processing time 0.0045 sec