ÕâÀïÕæÊÇÒ»¸öºÃµØ·½¡£ÎÒ¸Õ½Ó´¥linux£¬Òò´ËÆȲ»¼°´ýµÄÏëÖªµÀһЩÎÊÌ⣬»¹ÍûÕÔ²©Ê¿Àí½â¡£
µÚÒ»¸öÎÊÌ⣬ÎÒÏëÖªµÀµÄÊÇÈÎÎñµ÷¶Èº¯Êýsched()ÔÚÄÄЩÇé¿öÏ»ᱻµ÷Óã¿ÎÒÒÔÇ°¿´¹ýuCOS£¬ËüÊÇÕâÑùµÄ£º
1¡¢ÏµÍ³Ê±ÖÓÖжϴ¦ÀíÖÐ
2¡¢´´½¨ÈÎÎñµÄʱºò
3¡¢ÈκθıäÈÎÎñ״̬µÄϵͳº¯Êý£¬ÈçsemTake(), semGive()
4¡¢ÖжϷµ»Ø
²»ÖªµÀlinuxÖÐÔõôÑù£¿
µÚ¶þ¸öÎÊÌ⣬Ìý˵linuxµÄµ÷¶È»úÖÆÊÇnon-preemptiveµÄ¡£ÎÒÒ²¿´µ½ÔÚÄúµÄÊéÖеÚ22Ò³Ìáµ½¡°ÔÚÄÚºË̬ÏÂÔËÐеĽø³Ì²»Äܱ»ÆäËü½ø³ÌÇÀÕ¼¡£¡±Òò´ËÎÒ¾õµÃºÜÃÔ»ó£¬ÄѵÀÒ»¸öµÍÓÅÏȼ¶µÄ½ø³Ì²»Äܱ»¸ßÓÅÏȼ¶µÄ½ø³Ì°þ¶áô£¿²¢ÇÒÔÚµÚ79Ò³¿´µ½ÄúдµÀ¡°µ±Ê±ÖÓÖжϹý³ÌÅжϳöËüÔËÐеÄʱ¼äƬÒѱ»ÓÃÍêʱ£¬¾Í»áÔÚdo_timer()ÖÐÖ´Ðнø³ÌÇл»²Ù×÷£¬¸Ã½ø³ÌµÄCPU ʹÓÃȨ¾Í»á±»²»ÇéÔ¸µØ°þ¶á£¬Èøø±ðµÄ½ø³ÌʹÓᣡ±ÎÒÀí½âÕâÀïµÄ±ðµÄ½ø³ÌÓ¦¸Ã¾ÍÊǸßÓÅÏȼ¶²¢ÇÒ¾ÍÐ÷µÄ½ø³Ì¡£ÄÇô¿ÉÒÔÈÏΪÔÚʱ¼äƬµ½´ïµÄʱºò¸ßÓÅÏȼ¶µÄ½ø³Ì¾Í»á°þ¶áµÍÓÅÏȼ¶µÄ½ø³Ì¡£
ÁíÍâÖжϴ¦Àí½áÊøµÄʱºòºÃÏóÒ²½øÐÐÁËÒ»´Îµ÷¶È£¬ÕâʱºòÈç¹ûÓиßÓÅÏȼ¶µÄÈÎÎñ¾ÍÐ÷£¬ÄÇô±»ÖжϵĵÍÓÅÏȼ¶ÈÎÎñ²»ÊǾͱ»°þ¶áÁËô¡£
ÓÉ´ËÎÒ·¢ÏÖ×Ô¼º¶ÔÇÀռʽµ÷¶ÈºÍ·ÇÇÀռʽµ÷¶ÈµÄ¸ÅÄî²¢²»Çå³þ¡£ÄúÄܽâÊͽâÊÍÕâ¸öÎÊÌâô£¿
»ù±¾µÄÇé¿ö϶¼Ò»Ñù¡£ÔÚ´´½¨ÈÎÎñʱ²¢²»µ÷ÓÃschedule()£¬¶øÊǽöÉèÖÃÈÎÎñΪ¿ÉÔËÐÐ״̬¡£½ÏÏêϸµÄÓÐÒÔÏÂһЩµØ·½£º
1. ϵͳµ÷ÓÃÖÐÅжÏʱ¼äƬÓÃÍꣻ
2. ϵͳµ÷ÓÃÖÐÅжϵ±Ç°½ø³Ì״̬ÊÇ·ñÒѾ²»´¦ÓÚRUNNING״̬£»
3. ½ø³Ìµ÷ÓÃexit()£»
4. ϵͳµ÷ÓÃwaitpid()²¢ÇÒflagûÓÐWNOHANG±êÖ¾£¬»ò×Ó½ø³ÌÔÚZOMBIE״̬µÈ£»
5. ttyд²Ù×÷£¬µ«Ð´¶ÓÁÐÒÑÂú£»
6. ʱÖÓÖжϣ»
7. ÓÉÓڵȴý×ÊÔ´¶ø×ÔÔ¸µ÷ÓÃsleep_on()£»
8. µÈ´ýÈκÎÐźŶøµ÷ÓÃpause()¡£
ÔÚÄÚºËִ̬ÐÐʱ²»»á±»Ê±ÖÓÖжϹý³ÌÇ¿ÖÆÇл»µô£¬ÒòΪÔÚʱÖÓÖжϹý³ÌÖÐÓжÔÊÇ·ñÔËÐÐÔÚºËÐÄ̬µÄÅжÏÓï¾ä¡£ÖÁÓÚÔÚÒ»¸ö½ø³Ìʱ¼äƬÓÃÍêºóÇл»µ½Ê²Ã´½ø³Ì£¬ÕâÍêÈ«Óɵ÷¶È³ÌÐòµÄËã·¨É趨¡£ÔÚ±¾Äں˵ĵ÷¶È³ÌÐòÖУ¬schedule()»á±È½Ïÿ¸ö´¦ÓÚ¾ÍÐ÷״̬ÈÎÎñµÄcounter£¨Ê±¼äƬֵ£©Öµ£¬ÄÄÒ»¸ö´ó£¬ÔËÐÐʱ¼ä»¹²»³¤£¬¾Í»ù±¾Ñ¡¶¨Çл»µ½ÄĸöÈÎÎñ¡£ÈôËùÓÐʱ¼äƬ¶¼Îª0£¨»òÏàµÈ£¿£©¾Í¸ù¾Ýÿ¸öÈÎÎñµÄÓÅÏÈȨֵ¸üÐÂÿ¸öÈÎÎñµÄcounterÖµ£¬È»ºó¶ÔËùÓÐÈÎÎñÖØбȽϡ£
¿ÉÒÔ¿´³öÕâ¸öÄÚºËÖÐÑ¡ÔñÇл»Ä¿±êÊÇÊ×Ïȸù¾Ýʱ¼äƬֵ£¬ÔÙ¸ù¾ÝÓÅÏÈȨֵ¡£Òò´ËÖ»ÊÇÔÚ´ó¼Ò¶¼´¦ÓÚͬһÆðÅÜÏßÉÏʱ²Å¸ù¾ÝÓÅÏÈȨֵѡÔñÏÂÒ»¸ö½«ÒªÖ´ÐеÄÈÎÎñ£¬²»´æÔÚ¸ßÓÅÏȼ¶½ø³Ì°þ¶áµÍÓÅÏȼ¶ÈÎÎñÔËÐеÄÇé¿ö¡£
ÔÚÖжϴ¦Àí½áÊøʱҲÊǵ÷ÓÃÕâ¸öschedule()£¬Òò´Ë´¦Àí¹ý³ÌÍêÈ«Ò»Ñù¡£
Çë½ÌÈÎÎñµ÷¶ÈµÄ·¢Æð
¸ÐлÕÔ²©Ê¿µÄ½²½â£¬±¾À´Ò»Ö±ÓиöÒÉÎÊ£¬¸Ð¾õÄں˴úÂëÖжÔÈ«¾ÖÊý¾ÝµÄ·ÃÎʺܲ»±£ÏÕËƵģ¬µ£Ðı»Öжϴò¶Ïºó»ØÀ´¾ÍÂÒÁË£¬ÏÖÔÚÇå³þÁËŶ¡£