· 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
The attacker must vanquish; the defender need only survive.


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.0046 sec