2.0 ǰºǫ́ϵͳ £¨Foreground/Background System£© ²»¸´ÔÓµÄСϵͳһ°ãÉè¼Æ³ÉÈçͼ2.1ËùʾµÄÑù×Ó¡£ÕâÖÖϵͳ¿É³ÆÎªÇ°ºǫ́ϵͳ»ò³¬Ñ»·ÏµÍ³(Super-Loops)¡£Ó¦ÓóÌÐòÊÇÒ»¸öÎÞÏÞµÄÑ»·£¬Ñ»·Öе÷ÓÃÏàÓ¦µÄº¯ÊýÍê³ÉÏàÓ¦µÄ²Ù×÷£¬Õⲿ·Ö¿ÉÒÔ¿´³Éºǫ́ÐÐΪ(background)¡£ÖжϷþÎñ³ÌÐò´¦ÀíÒ첽ʼþ£¬Õⲿ·Ö¿ÉÒÔ¿´³Éǰ̨ÐÐΪ£¨foreground£©¡£ºǫ́Ҳ¿ÉÒÔ½Ð×öÈÎÎñ¼¶¡£Ç°Ì¨Ò²½ÐÖжϼ¶¡£Ê±¼äÏà¹ØÐÔºÜÇ¿µÄ¹Ø¼ü²Ù×÷(Critical operation)Ò»¶¨ÊÇ¿¿ÖжϷþÎñÀ´±£Ö¤µÄ¡£ÒòΪÖжϷþÎñÌṩµÄÐÅÏ¢Ò»Ö±ÒªµÈµ½ºǫ́³ÌÐò×ßµ½¸Ã´¦ÀíÕâ¸öÐÅÏ¢ÕâÒ»²½Ê±²ÅÄܵõ½´¦Àí£¬ÕâÖÖϵͳÔÚ´¦ÀíÐÅÏ¢µÄ¼°Ê±ÐÔÉÏ£¬±Èʵ¼Ê¿ÉÒÔ×öµ½µÄÒª²î¡£Õâ¸öÖ¸±ê³Æ×÷ÈÎÎñ¼¶ÏìӦʱ¼ä¡£×Çé¿öϵÄÈÎÎñ¼¶ÏìӦʱ¼äÈ¡¾öÓÚÕû¸öÑ»·µÄÖ´ÐÐʱ¼ä¡£ÒòΪѻ·µÄÖ´ÐÐʱ¼ä²»Êdz£Êý£¬³ÌÐò¾¹ýÄ³Ò»ÌØ¶¨²¿·ÖµÄ׼ȷʱ¼äÒ²ÊDz»ÄÜÈ·¶¨µÄ¡£½ø¶ø£¬Èç¹û³ÌÐòÐÞ¸ÄÁË£¬Ñ»·µÄʱÐòÒ²»áÊܵ½Ó°Ïì¡£ ͼ2-1ǰºǫ́ϵͳ
ºÜ¶à»ùÓÚ΢´¦ÀíÆ÷µÄ²úÆ·²ÉÓÃǰºǫ́ϵͳÉè¼Æ£¬ÀýÈç΢²¨Â¯¡¢µç»°»ú¡¢Íæ¾ßµÈ¡£ÔÚÁíÍâһЩ»ùÓÚ΢´¦ÀíÆ÷µÄÓ¦ÓÃÖУ¬´ÓÊ¡µçµÄ½Ç¶È³ö·¢£¬Æ½Ê±Î¢´¦ÀíÆ÷´¦ÔÚÍ£»ú״̬(halt)£¬ËùÓеÄʶ¼¿¿ÖжϷþÎñÀ´Íê³É¡£ 2.1 ´úÂëµÄÁÙ½ç¶Î ´úÂëµÄÁÙ½ç¶ÎÒ²³ÆÎªÁÙ½çÇø£¬Ö¸´¦Àíʱ²»¿É·Ö¸îµÄ´úÂë¡£Ò»µ©Õⲿ·Ö´úÂ뿪ʼִÐУ¬Ôò²»ÔÊÐíÈκÎÖжϴòÈ롣Ϊȷ±£ÁÙ½ç¶Î´úÂëµÄÖ´ÐУ¬ÔÚ½øÈëÁÙ½ç¶Î֮ǰҪ¹ØÖжϣ¬¶øÁÙ½ç¶Î´úÂëÖ´ÐÐÍêÒÔºóÒªÁ¢¼´¿ªÖжϡ£(²ÎÔÄ2.03¹²Ïí×ÊÔ´) 2.2 ×ÊÔ´ ÈκÎΪÈÎÎñËùÕ¼ÓõÄʵÌå¶¼¿É³ÆÎª×ÊÔ´¡£×ÊÔ´¿ÉÒÔÊÇÊäÈëÊä³öÉ豸£¬ÀýÈç´òÓ¡»ú¡¢¼üÅÌ¡¢ÏÔʾÆ÷£¬×ÊÔ´Ò²¿ÉÒÔÊÇÒ»¸ö±äÁ¿£¬Ò»¸ö½á¹¹»òÒ»¸öÊý×éµÈ¡£ 2.3 ¹²Ïí×ÊÔ´ ¿ÉÒÔ±»Ò»¸öÒÔÉÏÈÎÎñʹÓõÄ×ÊÔ´½Ð×ö¹²Ïí×ÊÔ´¡£ÎªÁË·ÀÖ¹Êý¾Ý±»ÆÆ»µ£¬Ã¿¸öÈÎÎñÔÚÓë¹²Ïí×ÊÔ´´ò½»µÀʱ£¬±ØÐë¶ÀÕ¼¸Ã×ÊÔ´¡£Õâ½Ð×ö»¥³â£¨mutual exclusion£©¡£ÔÚ2.18½Ú¡°»¥³â¡±ÖУ¬½«¶Ô¼¼ÊõÉÏÈçºÎ±£Ö¤»¥³âÌõ¼þ×ö½øÒ»²½ÌÖÂÛ¡£ 2.4 ¶àÈÎÎñ ¶àÈÎÎñÔËÐеÄʵÏÖʵ¼ÊÉÏÊÇ¿¿CPU(ÖÐÑë´¦Àíµ¥Ôª)ÔÚÐí¶àÈÎÎñÖ®¼äת»»¡¢µ÷¶È¡£CPUÖ»ÓÐÒ»¸ö£¬ÂÖ·¬·þÎñÓÚһϵÁÐÈÎÎñÖеÄijһ¸ö¡£¶àÈÎÎñÔËÐкÜÏñǰºǫ́ϵͳ£¬µ«ºǫ́ÈÎÎñÓжà¸ö¡£¶àÈÎÎñÔËÐÐʹCPUµÄÀûÓÃÂʵõ½×î´óµÄ·¢»Ó£¬²¢Ê¹Ó¦ÓóÌÐòÄ£¿é»¯¡£ÔÚʵʱӦÓÃÖУ¬¶àÈÎÎñ»¯µÄ×î´óÌØµãÊÇ£¬¿ª·¢ÈËÔ±¿ÉÒÔ½«ºÜ¸´ÔÓµÄÓ¦ÓóÌÐò²ã´Î»¯¡£Ê¹ÓöàÈÎÎñ£¬Ó¦ÓóÌÐò½«¸üÈÝÒ×Éè¼ÆÓëά»¤¡£ 2.5 ÈÎÎñ Ò»¸öÈÎÎñ£¬Ò²³Æ×÷Ò»¸öỊ̈߳¬ÊÇÒ»¸ö¼òµ¥µÄ³ÌÐò£¬¸Ã³ÌÐò¿ÉÒÔÈÏΪCPUÍêȫֻÊô¸Ã³ÌÐò×Ô¼º¡£ÊµÊ±Ó¦ÓóÌÐòµÄÉè¼Æ¹ý³Ì£¬°üÀ¨ÈçºÎ°ÑÎÊÌâ·Ö¸î³É¶à¸öÈÎÎñ£¬Ã¿¸öÈÎÎñ¶¼ÊÇÕû¸öÓ¦ÓõÄijһ²¿·Ö£¬Ã¿¸öÈÎÎñ±»¸³ÓèÒ»¶¨µÄÓÅÏȼ¶£¬ÓÐËü×Ô¼ºµÄÒ»Ì×CPU¼Ä´æÆ÷ºÍ×Ô¼ºµÄÕ»¿Õ¼ä(Èçͼ2.2Ëùʾ)¡£ ͼ2.2¶àÈÎÎñ¡£ µäÐ͵ء¢Ã¿¸öÈÎÎñ¶¼ÊÇÒ»¸öÎÞÏÞµÄÑ»·¡£Ã¿¸öÈÎÎñ¶¼´¦ÔÚÒÔÏÂ5ÖÖ״̬֮һµÄ״̬Ï£¬Õâ5ÖÖ״̬ÊÇÐÝÃß̬£¬¾ÍÐ÷̬¡¢ÔËÐÐ̬¡¢¹ÒÆð̬(µÈ´ýijһʼþ·¢Éú)ºÍ±»ÖжÏ̬£¨²Î¼ûͼ2.3£© ÐÝÃß̬Ï൱ÓÚ¸ÃÈÎÎñפÁôÔÚÄÚ´æÖУ¬µ«²¢²»±»¶àÈÎÎñÄÚºËËùµ÷¶È¡£¾ÍÐ÷ÒâζןÃÈÎÎñÒѾ׼±¸ºÃ£¬¿ÉÒÔÔËÐÐÁË£¬µ«ÓÉÓÚ¸ÃÈÎÎñµÄÓÅÏȼ¶±ÈÕýÔÚÔËÐеÄÈÎÎñµÄÓÅÏȼ¶µÍ£¬»¹ÔÝʱ²»ÄÜÔËÐС£ÔËÐÐ̬µÄÈÎÎñÊÇÖ¸¸ÃÈÎÎñÕÆÎÕÁËCPUµÄ¿ØÖÆÈ¨£¬ÕýÔÚÔËÐÐÖС£¹ÒÆð״̬Ҳ¿ÉÒÔ½Ð×öµÈ´ýʼþ̬WAITING£¬Ö¸¸ÃÈÎÎñÔڵȴý£¬µÈ´ýijһʼþµÄ·¢Éú£¬£¨ÀýÈçµÈ´ýijÍâÉèµÄI/O²Ù×÷£¬µÈ´ýij¹²Ïí×ÊÔ´ÓÉÔݲ»ÄÜʹÓñä³ÉÄÜʹÓÃ״̬£¬µÈ´ý¶¨Ê±Âö³åµÄµ½À´»òµÈ´ý³¬Ê±Ðźŵĵ½À´ÒÔ½áÊøÄ¿Ç°µÄµÈ´ý£¬µÈµÈ£©¡£×îºó£¬·¢ÉúÖжÏʱ£¬CPUÌṩÏàÓ¦µÄÖжϷþÎñ£¬ÔÀ´ÕýÔÚÔËÐеÄÈÎÎñÔݲ»ÄÜÔËÐУ¬¾Í½øÈëÁ˱»ÖжÏ״̬¡£Í¼2.3±íʾ¦ÌC/OS-¢òÖÐһЩº¯ÊýÌṩµÄ·þÎñ£¬ÕâЩº¯ÊýʹÈÎÎñ´ÓÒ»ÖÖ״̬±äµ½ÁíÒ»ÖÖ״̬¡£ ͼ2.3ÈÎÎñµÄ״̬ 2.6 ÈÎÎñÇл»(Context Switch or Task Switch) Context Switch ÔÚÓеÄÊéÖзÒë³ÉÉÏÏÂÎÄÇл»£¬Êµ¼Êº¬ÒåÊÇÈÎÎñÇл»£¬»òCPU¼Ä´æÆ÷ÄÚÈÝÇл»¡£µ±¶àÈÎÎñÄں˾ö¶¨ÔËÐÐÁíÍâµÄÈÎÎñʱ£¬Ëü±£´æÕýÔÚÔËÐÐÈÎÎñµÄµ±Ç°×´Ì¬£¨Context£©£¬¼´CPU¼Ä´æÆ÷ÖеÄÈ«²¿ÄÚÈÝ¡£ÕâЩÄÚÈݱ£´æÔÚÈÎÎñµÄµ±Ç°×´¿ö±£´æÇø£¨Task¡¯s Context Storage area£©£¬Ò²¾ÍÊÇÈÎÎñ×Ô¼ºµÄÕ»ÇøÖ®ÖС££¨¼ûͼ2.2£©¡£ÈëÕ»¹¤×÷Íê³ÉÒԺ󣬾ÍÊǰÑÏÂÒ»¸ö½«ÒªÔËÐеÄÈÎÎñµÄµ±Ç°×´¿ö´Ó¸ÃÈÎÎñµÄÕ»ÖÐÖØÐÂ×°ÈëCPUµÄ¼Ä´æÆ÷£¬²¢¿ªÊ¼ÏÂÒ»¸öÈÎÎñµÄÔËÐС£Õâ¸ö¹ý³Ì½Ð×öÈÎÎñÇл»¡£ÈÎÎñÇл»¹ý³ÌÔö¼ÓÁËÓ¦ÓóÌÐòµÄ¶îÍ⸺ºÉ¡£CPUµÄÄÚ²¿¼Ä´æÆ÷Ô½¶à£¬¶îÍ⸺ºÉ¾ÍÔ½ÖØ¡£×öÈÎÎñÇл»ËùÐèÒªµÄʱ¼äÈ¡¾öÓÚCPUÓжàÉټĴæÆ÷ÒªÈëÕ»¡£ÊµÊ±Äں˵ÄÐÔÄܲ»Ó¦¸ÃÒÔÿÃëÖÓÄÜ×ö¶àÉÙ´ÎÈÎÎñÇл»À´ÆÀ¼Û¡£ 2.7 Äںˣ¨Kernel£© ¶àÈÎÎñϵͳÖУ¬Äں˸ºÔð¹ÜÀí¸÷¸öÈÎÎñ£¬»òÕß˵Ϊÿ¸öÈÎÎñ·ÖÅäCPUʱ¼ä£¬²¢ÇÒ¸ºÔðÈÎÎñÖ®¼äµÄͨѶ¡£ÄÚºËÌṩµÄ»ù±¾·þÎñÊÇÈÎÎñÇл»¡£Ö®ËùÒÔʹÓÃʵʱÄں˿ÉÒÔ´ó´ó¼ò»¯Ó¦ÓÃϵͳµÄÉè¼Æ£¬ÊÇÒòΪʵʱÄÚºËÔÊÐí½«Ó¦Ó÷ֳÉÈô¸É¸öÈÎÎñ£¬ÓÉʵʱÄÚºËÀ´¹ÜÀíËüÃÇ¡£Äں˱¾ÉíÒ²Ôö¼ÓÁËÓ¦ÓóÌÐòµÄ¶îÍ⸺ºÉ£¬´úÂë¿Õ¼äÔö¼ÓROMµÄÓÃÁ¿£¬Äں˱¾ÉíµÄÊý¾Ý½á¹¹Ôö¼ÓÁËRAMµÄÓÃÁ¿¡£µ«¸üÖ÷ÒªµÄÊÇ£¬Ã¿¸öÈÎÎñÒªÓÐ×Ô¼ºµÄÕ»¿Õ¼ä£¬ÕâÒ»¿é³ÔÆðÄÚ´æÀ´ÊÇÏ൱À÷º¦µÄ¡£Äں˱¾Éí¶ÔCPUµÄÕ¼ÓÃʱ¼äÒ»°ãÔÚ2µ½5¸ö°Ù·ÖµãÖ®¼ä¡£ µ¥Æ¬»úÒ»°ã²»ÄÜÔËÐÐʵʱÄںˣ¬ÒòΪµ¥Æ¬»úµÄRAMºÜÓÐÏÞ¡£Í¨¹ýÌṩ±Ø²»¿ÉȱÉÙ µÄϵͳ·þÎñ£¬ÖîÈçÐźÅÁ¿¹ÜÀí£¬ÓÊÏä¡¢ÏûÏ¢¶ÓÁС¢ÑÓʱµÈ£¬ÊµÊ±ÄÚºËʹµÃCPUµÄÀûÓøüΪÓÐЧ¡£Ò»µ©¶ÁÕßÓÃʵʱÄÚºË×ö¹ýϵͳÉè¼Æ£¬½«¾ö²»ÔÙÏë·µ»Øµ½Ç°ºǫ́ϵͳ¡£ 2.8 µ÷¶È£¨Scheduler£© µ÷¶È£¨Scheduler£©,Ó¢ÎÄ»¹ÓÐÒ»´Ê½Ðdispatcher£¬Ò²Êǵ÷¶ÈµÄÒâ˼¡£ÕâÊÇÄں˵ÄÖ÷ÒªÖ°ÔðÖ®Ò»£¬¾ÍÊÇÒª¾ö¶¨¸ÃÂÖµ½ÄĸöÈÎÎñÔËÐÐÁË¡£¶àÊýʵʱÄÚºËÊÇ»ùÓÚÓÅÏȼ¶µ÷¶È·¨µÄ¡£Ã¿¸öÈÎÎñ¸ù¾ÝÆäÖØÒª³Ì¶ÈµÄ²»Í¬±»¸³ÓèÒ»¶¨µÄÓÅÏȼ¶¡£»ùÓÚÓÅÏȼ¶µÄµ÷¶È·¨Ö¸£¬CPU×ÜÊÇÈô¦ÔÚ¾ÍÐ÷̬µÄÓÅÏȼ¶×î¸ßµÄÈÎÎñÏÈÔËÐС£È»¶ø£¬¾¿¾¹ºÎʱÈøßÓÅÏȼ¶ÈÎÎñÕÆÎÕCPUµÄʹÓÃȨ£¬ÓÐÁ½ÖÖ²»Í¬µÄÇé¿ö£¬ÕâÒª¿´ÓõÄÊÇʲôÀàÐ͵ÄÄںˣ¬ÊDz»¿É°þ¶áÐ͵ϹÊǿɰþ¶áÐÍÄںˡ£ 2.9 ²»¿É°þ¶áÐÍÄÚºË £¨Non-Preemptive Kernel£© ²»¿É°þ¶áÐÍÄÚºËÒªÇóÿ¸öÈÎÎñ×ÔÎÒ·ÅÆúCPUµÄËùÓÐȨ¡£²»¿É°þ¶áÐ͵÷¶È·¨Ò²³Æ×÷Ï×÷ÐͶàÈÎÎñ£¬¸÷¸öÈÎÎñ±Ë´ËºÏ×÷¹²ÏíÒ»¸öCPU¡£Ò첽ʼþ»¹ÊÇÓÉÖжϷþÎñÀ´´¦Àí¡£ÖжϷþÎñ¿ÉÒÔʹһ¸ö¸ßÓÅÏȼ¶µÄÈÎÎñÓÉ¹ÒÆð״̬±äΪ¾ÍÐ÷״̬¡£µ«ÖжϷþÎñÒÔºó¿ØÖÆÈ¨»¹Êǻص½ÔÀ´±»ÖжÏÁ˵ÄÄǸöÈÎÎñ£¬Ö±µ½¸ÃÈÎÎñÖ÷¶¯·ÅÆúCPUµÄʹÓÃȨʱ£¬ÄǸö¸ßÓÅÏȼ¶µÄÈÎÎñ²ÅÄÜ»ñµÃCPUµÄʹÓÃȨ¡£ ²»¿É°þ¶áÐÍÄں˵ÄÒ»¸öÓŵãÊÇÏìÓ¦ÖжϿ졣ÔÚÌÖÂÛÖжÏÏìӦʱ»á½øÒ»²½Éæ¼°Õâ¸öÎÊÌâ¡£ÔÚÈÎÎñ¼¶£¬²»¿É°þ¶áÐÍÄÚºËÔÊÐíʹÓò»¿ÉÖØÈ뺯Êý¡£º¯ÊýµÄ¿ÉÖØÈëÐÔÒÔºó»áÌÖÂÛ¡£Ã¿¸öÈÎÎñ¶¼¿ÉÒÔµ÷Ó÷ǿÉÖØÈëÐÔº¯Êý£¬¶ø²»±Øµ£ÐÄÆäËüÈÎÎñ¿ÉÄÜÕýÔÚʹÓøú¯Êý£¬´Ó¶øÔì³ÉÊý¾ÝµÄÆÆ»µ¡£ÒòΪÿ¸öÈÎÎñÒªÔËÐе½Íê³Éʱ²ÅÊÍ·ÅCPUµÄ¿ØÖÆÈ¨¡£µ±È»¸Ã²»¿ÉÖØÈëÐͺ¯Êý±¾Éí²»µÃÓÐ·ÅÆúCPU¿ØÖÆÈ¨µÄÆóͼ¡£ ʹÓò»¿É°þ¶áÐÍÄÚºËʱ£¬ÈÎÎñ¼¶ÏìӦʱ¼ä±Èǰºǫ́ϵͳ¿ìµÃ¶à¡£´ËʱµÄÈÎÎñ¼¶ÏìӦʱ¼äÈ¡¾öÓÚ×µÄÈÎÎñÖ´ÐÐʱ¼ä¡£ ²»¿É°þ¶áÐÍÄں˵ÄÁíÒ»¸öÓŵãÊÇ£¬¼¸ºõ²»ÐèҪʹÓÃÐźÅÁ¿±£»¤¹²ÏíÊý¾Ý¡£ÔËÐÐ×ŵÄÈÎÎñÕ¼ÓÐCPU£¬¶ø²»±Øµ£Ðı»±ðµÄÈÎÎñÇÀÕ¼¡£µ«ÕâÒ²²»ÊǾø¶ÔµÄ£¬ÔÚijÖÖÇé¿öÏ£¬ÐźÅÁ¿»¹ÊÇÓõÃ×ŵġ£´¦Àí¹²ÏíI/OÉ豸ʱÈÔÐèҪʹÓû¥³âÐÍÐźÅÁ¿¡£ÀýÈ磬ÔÚ´òÓ¡»úµÄʹÓÃÉÏ£¬ÈÔÐèÒªÂú×㻥³âÌõ¼þ¡£Í¼2.4ʾÒâ²»¿É°þ¶áÐÍÄں˵ÄÔËÐÐÇé¿ö£¬ÈÎÎñÔÚÔËÐйý³ÌÖ®ÖУ¬[L2.4(1)]ÖжÏÀ´ÁË£¬Èç¹û´ËʱÖжÏÊÇ¿ª×ŵģ¬CPUÓÉÖжÏÏòÁ¿[F2.4(2)]½øÈëÖжϷþÎñ×Ó³ÌÐò£¬ÖжϷþÎñ×Ó³ÌÐò×öʼþ´¦Àí[F2.4(3)]£¬Ê¹Ò»¸öÓиü¸ß¼¶µÄÈÎÎñ½øÈë¾ÍÐ÷̬¡£ÖжϷþÎñÍê³ÉÒÔºó£¬ÖжϷµ»ØÖ¸Áî[F2.4(4)], ʹCPU»Øµ½ÔÀ´±»ÖжϵÄÈÎÎñ£¬½Ó×ÅÖ´ÐиÃÈÎÎñµÄ´úÂë[F2.4(5)]Ö±µ½¸ÃÈÎÎñÍê³É£¬µ÷ÓÃÒ»¸öÄں˷þÎñº¯ÊýÒÔÊÍ·ÅCPU¿ØÖÆÈ¨£¬ÓÉÄں˽«¿ØÖÆÈ¨½»¸øÄǸöÓÅÏȼ¶¸ü¸ßµÄ¡¢²¢ÒѽøÈë¾ÍÐ÷̬µÄÈÎÎñ[F2.4(6)]£¬Õâ¸öÓÅÏȼ¶¸ü¸ßµÄÈÎÎñ²Å¿ªÊ¼´¦ÀíÖжϷþÎñ³ÌÐò±êʶµÄʼþ[F2.4(7)]¡£
[´ËÌù×ÓÒѾ±»×÷ÕßÓÚ2005-11-28 16:37:09±à¼¹ý] |