LinuxÒÁµéÔ°ÂÛ̳'s Archiver

zltjiangshi ·¢±íÓÚ 2007-10-27 09:39

XenºÍÐéÄ⻯¼¼ÊõѧϰָÄÏ

1. ÒýÑÔ

ÏÖ´ú¼ÆËã»ú¾ßÓÐ×㹻ǿ´óµÄÄÜÁ¦À´ÀûÓÃÐéÄ⻯¼¼ÊõÖ§³Ö¶à¸öÐéÄâ»ú£¨VM: virtual machines£©£¬²¢ÇÒÔÚÿ¸öÐéÄâ»úÉϸ÷×ÔÔËÐе¥¶ÀµÄ²Ù×÷ϵͳʵÀý¡£ÕâÖ±½Óµ¼ÖÂÁËÐéÄâ»ú¼¼Êõ·¢Õ¹µÄÓÖÒ»¸ö´ºÌì¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃÇÌá³öÁËXen£¬Ò»¸ö¸ßÐÔÄܵÄÓÃÓÚ×ÊÔ´¹ÜÀíµÄÐéÄâ»ú¼àÊÓÆ÷£¨VMM: VM monitor£©¡£XenÄܹ»Ö§³ÖµÄÓ¦ÓñÈÈ磺server consolidation£¬co-located hosting facilities£¬distributed web services£¬secure computing platforms[12£¬16]ºÍapplication mobility¡£

³É¹¦µØ¶Ôһ̨»úÆ÷½øÐл®·Ö£¬Ê¹ËüÄܹ»Ö§³Ö¶à¸ö²Ù×÷ϵͳµÄ²¢·¢Ö´ÐУ¬Õâ¸ö¹ý³Ì¾ßÓкܶàµÄÌôÕ½¡£Ê×ÏÈ£¬ÐéÄâ»ú±ØÐëÊDZ˴ËÏà¸ôÀëµÄ£ºÈç¹ûÒ»¸öÐéÄâ»úµÄÖ´ÐлáÓ°ÏìÁíÒ»¸öµÄÐÔÄÜ£¬ÕâÊDz»¿ÉÒÔ±»½ÓÊܵġ£ÕâÒ»µãÔÚ²Ù×÷¸÷¸öÐéÄâ»úµÄÓû§Ï໥¼ä²¢²»ÐÅÈεÄÇé¿öÏÂÏÔµÃÌØ±ðÖØÒª¡£Æä´Î£¬Ëü±ØÐëÖ§³Ö¶àÖÖ¶àÑùµÄ²»Í¬²Ù×÷ϵͳÒÔÌṩ¸ø¸÷ÖÖÒì¹¹£¨heterogeneity£©µÄÁ÷ÐÐÓ¦ÓõÄÖ§³Ö£¨//ÕâÀïµÄÒì¹¹Ö¸µÄÊÇÓ¦Óÿª·¢ÒÀÍеIJÙ×÷ϵͳ²»Í¬£¬Òò´ËÔÚʵÏÖÉÏÒ²¾ÍÓкܴó²îÒ죬ʹµÃÓ¦Óò¢²»Äܹ»¿çÆ½Ì¨ÒÆÖ²£¬ÒòΪXen²»ÐèÒª¶ÔÓ¦ÓóÌÐò½øÐÐÐ޸ģ¬ÄÇôËü¾Í±ØÐëÖ§³Ö¸÷ÖÖ³£ÓõIJÙ×÷ϵͳ£»ËùνÁ÷ÐеÄÓ¦Ó㬾ÍÊÇÄÇЩ´ó¼Ò³£Óõġ¢±ØÐèµÄÓ¦Óã©¡£µÚÈý£¬ÓÉÐéÄ⻯¼¼ÊõÒýÈëµÄÐÔÄÜ¿ªÏú±ØÐëҪС¡£

Xen²Ù¿Ø£¨//host£º²Ù×÷ºÍ¿ØÖÆ£©µÄÊdz£ÓõIJÙ×÷ϵͳ£¬µ«ÊÇÐèÒª¶Ô²Ù×÷ϵͳÖеÄijЩÏà¹Ø²¿·Ö½øÐÐһЩÐ޸ġ£ÔÚ±¾ÎÄÖÐÃèÊöºÍÆÀ¹ÀµÄXenÔ­ÐÍϵͳÄܹ»Ö§³Ö¶à¸öÎÒÃÇÑз¢µÄXenoLinux guest OSʵÀýµÄ²¢·¢Ö´ÐУ»Ã¿¸öʵÀý¶¼¸ø³öÁ˺ͷÇÐéÄ⻯Çé¿öϵÄLinux 2.4ÖÐÏàͬµÄÓ¦Óöþ½øÖƽӿڡ£Ä¿Ç°£¬ÎÒÃǶÔWindows XPµ½XenµÄÒÆÖ²»¹Ã»ÓÐÍêÈ«Íê³É£¬µ«ÊÇÒѾ­Äܹ»ÔËÐмòµ¥µÄÓû§¿Õ¼ä½ø³Ì¡£ÒÆÖ²NetBSDµÄ¹¤×÷Ò²ÔÚ½øÐÐÖС£

XenʹµÃÓû§Äܹ»¶¯Ì¬µØÊµÀý»¯Ò»¸ö²Ù×÷ϵͳÒÔÖ´ÐÐËûÃÇÐèÒªµÄÓ¦Óá£ÔÚXenoServerÏîÄ¿[15£¬35]ÖУ¬ÎÒÃÇÔÚISP»òÕßInternet exchange£¨//²¼ÖÃÔÚÕâЩ³¡ºÏÖо­¼Ã»®Ëã¶øÇÒÓÖ¾ßÓÐÕ½ÂÔÒâÒåµÄµØ·½£©µÄ±ê×¼·þÎñÆ÷Ó²¼þÉÏÅäÖÃÁËXen¡£ÎÒÃÇÔÚÆô¶¯Ò»¸öеÄÐéÄâ»úµÄʱºòÐèÒªÖ´ÐÐÐí¿É¿ØÖÆ£¨admission control£©£¬Ï£Íûÿ¸öÐéÄâ»úÄܹ»ÒÔijÖÖ·½Ê½ÎªËüÐèÒªµÄ×ÊÔ´¸¶³ö´ú¼Û¡£ÎÒÃÇÔÚÆäËü?**ÐÌÖÂÛ¹?ÎÒÃÇÔÚÕâ¸ö·½ÏòÉϵÄ˼·ºÍ·½·¨[21]£»ÏÖÔÚÕâÆªÎÄÕÂÔò½«½¹µã¹Ø×¢ÓÚÐéÄâ»ú¡£

ÏÖÔÚÓÐһЩ·½·¨ÓÃÓÚ¹¹½¨Äܹ»ÔÚ¹²ÏíµÄ»úÆ÷Éϲٿضà¸öÓ¦ÓúͷþÎñÆ÷£¨//server£ºÕâÀïÌáµ½µÄserverÓ¦¸ÃÊÇ´ó¹æÄ£Ó¦ÓõÄÒâ˼£¬±ÈÈçÊý¾Ý¿â·þÎñÆ÷£©µÄϵͳ¡£Ò²Ðí×î¼òµ¥µÄ·½·¨¾ÍÊDz¿ÊðÒ»¸ö»ò¶à¸öÔËÐÐ×űê×¼²Ù×÷ϵͳ£¨ÈçLinux»òÕßWindows£©µÄÖ÷»ú£¬È»ºóÔÊÐíÓû§Ãǰ²×°ÎļþºÍÆô¶¯½ø³Ì¡ª Ó¦ÓüäµÄ±£»¤ÊÇÓÉ´«Í³µÄ²Ù×÷ϵͳ¼¼ÊõÌṩµÄ£¨//ÕâÀïÌáµ½µÄ×ö·¨£¬¾ÍÊÇÀàËÆ²¢ÐлúÐÔÖʵ쬏÷¸ö½Úµã¶¼ÊǶÀÁ¢µÄÖ÷»ú£¬µ«ÊÇÒ»¸öÓ¦ÓÿÉÒÔÔÚ¶à¸ö½ÚµãÉÏÃæ²¢ÐÐÖ´ÐУ©¡£ÊµÑéÏÔʾ£ºÓÉÓÚÒªÕë¶Ô¸÷¸öÍѽڣ¨//supposedly disjoint£ºÂß¼­ÉÏÍѽڣ¬Ö¸µÄÊÇÓ¦Óò»¾ßÓÐÁ¬¹áÐÔ/¼æÈÝÐÔ£¬ËùÒÔÕë¶Ôÿ¸öÓ¦Óö¼Òªµ¥¶ÀÅäÖÃÒ»´Î£¬Èç¹ûÄÜÏë°ì·¨½«Ç°ºóÓйØÁªµÄÓ¦Ó÷ÅÔÚÒ»ÆðÖ´ÐУ¬¿ÉÒÔ´ó´ó¼õÉÙÏà¹ØµÄ¿ªÏú£¬ÈçÅäÖÿªÏú£¬Í¨ÐÅ¿ªÏúµÈµÈ£©µÄÓ¦ÓýøÐи´ÔÓµÄÅäÖã¬ÕâЩÅäÖùý³Ìµ¼ÖµĽ»»¥ÐÐΪ»áʹϵͳ¹ÜÀíÈÎÎñѸËÙ³ÉΪʱ¼äÏûºÄ¾Þ´óµÄÈÎÎñ¡£

¸üÖØÒªµÄÊÇ£¬ÕâÑùµÄϵͳ²»Äܹ»³ä·ÖµØÖ§³ÖÐÔÄܸôÀ룻ij¸ö½ø³ÌµÄµ÷¶ÈÓÅÏȼ¶£¬´æ´¢ÒªÇó£¬ÍøÂçͨÐÅÁ¿ºÍ´ÅÅÌ·ÃÎʵȵÈÌØÕ÷¶¼»áÓ°Ïìµ½ÆäËü½ø³ÌµÄÐÔÄÜ¡£Èç¹ûÊÇÔÚ×ÊÔ´¹©Ó¦³ä×ã¶øÇÒÓû§ÈºÌåÊÇÏÞ¶¨£¨±ÈÈç¼ÆËãÍø¸ñ»òÕßPlanetLabƽ̨ʵÑ飩µÄÇé¿öÏ£¬Õâ¸öϵͳ»¹ÊÇ¿ÉÒÔ½ÓÊܵġ£µ«Êǵ±×ÊÔ´Êǹ©²»Ó¦ÇóµÄʱºò£¬»òÕßÓû§¼ä²»ÏàЭ×÷£¨//uncooperative£º²»ÏàЭ×÷£¬±ÈÈçÓû§¼äµÄÐèÇóÓгåÍ»£¬ÄÇôһ¶¨»á»¥ÏàÓ°ÏìµÄ£©µÄʱºò¾Í²»ÐÐÁË¡£Ò»¸ö½â¾öÕâ¸öÎÊÌâµÄ·½·¨ÊǸĽø¶Ô²Ù×÷ϵͳÐÔÄܸôÀëµÄÖ§³Ö¡£ÕâÒѾ­ÔÚresource containers£¬Linux/RK£¬QLinuxºÍSILKÖб»»ò¶à»òÉÙµØÊµÏÖÁË¡£ÕâЩ·½·¨ÖдæÔÚ×ÅÒ»¸öÄѵãÊÇÄÑÒÔÈ·±£ËùÓеÄ×ÊÔ´¶¼Äܹ»ÕýÈ·µØ·ÖÅ䏸ÓÐÏàÓ¦×ÊÔ´ÐèÇóµÄ½ø³Ì¡£ÀýÈ磬»º³åÇøcache»òÕß´æ´¢Ò³ÃæµÄÌæ»»Ëã·¨µ¼ÖµÄÔÚÓ¦ÓüäµÄ¸´ÔӵĽ»»¥ÐÐΪ£¨//±ÈÈç´æ´¢Ò³ÃæÌæ»»µÄʱºò£¬Ä³¸ö½ø³ÌµÄÒ³ÃæÌæ»»ÐòÁлá¸ÉÈŵ½ÆäËü½ø³ÌµÄ£¬ÒªÃâ³ýÕâ¸öÓ°Ïì¾ÍÐèÒªÓи´ÔӵĻúÖÆÓÃÓÚ½ø³Ì¼äµÄЭµ÷£©¡£Õâ¾ÍÊÇ´æÔÚÓÚ²Ù×÷ϵͳÖеġ°QoS¸ÉÈÅÎÊÌ⣨QoS crosstalk£©¡±¡£ÔڵͲã²ÉÓöà·ִÐм¼ÊõÄܹ»»º½âÕâ¸öÎÊÌâ´øÀ´µÄÓ°Ï죬ÕâÒѾ­ÔÚExokerneºÍNemesis²Ù×÷ϵͳÖеõ½Ö¤Ã÷¡£ÔÚÕâЩ²Ù×÷ϵͳÖУ¬ÈÎÎñ¼äÎÞÒâʶµÄ»òÕß²»ÊÜ»¶Ó­µÄ½»»¥ÐÐΪ±»×îС»¯ÁË¡£

ÎÒÃÇʹÓÃÁËͬÑùµÄ»ù±¾·½·¨À´¹¹½¨Xen¡£Xen¾ÍÊÇÒÔÕû¸ö²Ù×÷ϵͳµÄÁ£¶È¸´ÓÃÎïÀí×ÊÔ´£¬ËüÄܹ»ÌṩÔÚ²Ù×÷ϵͳ¼äµÄÐÔÄܸôÀë¡£Ïà¶ÔÓÚ½ø³Ì¼¶µÄ×ÊÔ´¸´Óã¬XenÒªÔÊÐíÒ»¶¨·¶Î§ÄÚµÄguest OS¡°ºÍƽ¡±¹²´æ£¬¶ø²¢·ÇÈ¥Ö¸¶¨Ò»¸öÌØÊâµÄÓ¦Óöþ½øÖƽӿڣ¨//Èç¹ûÏÞ¶¨ÁËÓ¦Óöþ½øÖƽӿڣ¬¾ÍÒâζ×ÅÖ»ÄÜÖ§³Öij¸öÌØ¶¨µÄ²Ù×÷ϵͳ£©¡£ÎªÁË»ñµÃÕâÖÖÁé»îÐԾͱØÐ븶³öһЩ´ú¼Û ¡ª ÎÞÂÛÊÇÔÚ³õʼ»¯¹ý³Ì£¨±ÈÈ磬bootºÍresumeÓëforkºÍexecµÄ±È½Ï£©ÖУ¬»¹ÊÇÔÚ×ÊÔ´Ïû·ÑÉÏ£¬ÔËÐÐÒ»¸öÍêÕûµÄ²Ù×÷ϵͳÓëÔËÐÐÒ»¸ö½ø³ÌÏà±È·ÖÁ¿¶¼ÒªÖصöࡣ

ΪÁË´ïµ½ÎÒÃǵÄÄܹ»Ö§³Ö¶àÖÁ100¸ö±»²Ù¿ØµÄ²Ù×÷ϵͳʵÀýµÄÄ¿±ê£¬ÎÒÃÇÈÏΪÕâЩ´ú¼ÛÊÇÖµµÃ¸¶³öµÄ¡£¸¶³öÕâЩ´ú¼Ûºó»ñµÃµÄϵͳÔÊÐíµ¥¸öÓû§ÔÚ×ÊÔ´ÊܿصÄÐÎʽÏ£¬Ö±½ÓÔËÐÐÄÇЩ²»ÐèÒªÐ޸ĵĶþ½øÖÆ´úÂë»òÕß¶þ½øÖÆ´úÂ뼯ºÏ£¨ÀýÈ磬ºó¶ËΪPostgreSQLµÄApache·þÎñÆ÷£©¡£¸ü½øÒ»²½µÄ£¬ÒòΪÓû§Äܹ»¶¯Ì¬µØ¾«È·´´½¨ËûÃǵÄÈí¼þËùÐèÒªµÄÖ´Ðл·¾³£¬ËùÒÔÕâ¸öϵͳҲ¾ÍÌṩÁËÔڷdz£¸ßµÄ²ã´ÎÉϵÄÁé»îÐÔ¡£ÁíÍ⣬ÔÚ¸÷ÖÖ·þÎñºÍÓ¦ÓüäµÄÅäÖý»»¥Ò²ÊÇ¿ÉÒÔ±ÜÃâµÄ£¨ÀýÈ磬ÿ¸öWindowsʵÀý¶¼ÓÐËüÃÇ×Ô¼ºµÄ¼Ä´æÆ÷Îļþ£©¡£

±¾ÎĵÄÓàϲ¿·ÖÊÇÕâÑù×éÖ¯µÄ£ºµÚ2²¿·Ö½âÊÍÁËÎÒÃǵÄÐéÄ⻯·½·¨ºÍXenµÄ¹¤×÷¸Å¿ö¡£µÚ3²¿·ÖÃèÊöÁËÎÒÃǵÄÉè¼ÆºÍʵÏֵĹؼüÌØÕ÷¡£µÚ4²¿·Ö¸ø³öÁËʹÓÃÒµ½ç±ê×¼µÄ²âÊÔ³ÌÐòÆÀ¹ÀÔËÐÐÔÚXenÉ쵀 XenoLinuxÓëµ¥¶ÀµÄLinux£¬VMware WorkstationºÍÓû§Ä£Ê½Linux£¨UML£©µÄÐÔÄܱȽϽá¹û¡£×îºóµÄµÚ5²¿·ÖÌÖÂÛÁËδÀ´µÄ¹¤×÷²¢×÷ÁË×ܽᡣ

2. XEN£º·½·¨ºÍ¸ÅÊö

ÔÚ´«Í³µÄVMMÖУ¬ÐéÄâÓ²¼þµÄ¹¦ÄÜÊÇÓëµ×²ã»úÆ÷ÉϵÄÕæÊµÓ²¼þÍêÈ«ÏàͬµÄ¡£ÕâÖÖ¡°ÍêÈ«ÐéÄ⻯¡±£¨full virtualization£©µÄ·½·¨×îÏÔ¶øÒ×¼ûµÄºÃ´¦ÔÚÓÚ²Ù×÷ϵͳ¿ÉÒÔ²»¾­ÈκÎÐ޸ľÍÖ±½ÓÔÚÐéÄâÓ²¼þÉÏÔËÐУ¬µ«ÊÇËüÒ²Óкܶàȱµã¡£ÌرðÊÇÕë¶ÔÄÇЩµ±Ç°±»¹ã·ºÓ¦ÓõÄIA32£¨»òÕß³Æ×÷x86£©¼Ü¹¹£¬ÕâÖÖ·½·¨´øÀ´µÄȱÏݸüÊDz»ÈݺöÊÓ¡£

x86¼Ü¹¹µÄÉè¼Æ´ÓÀ´¾Í²»Ö§³ÖÍêÈ«µÄÐéÄ⻯¡£Èç¹ûÒªÕýȷʵÏÖx86¼Ü¹¹ÐéÄ⻯£¬VMM¾Í±ØÐëÄܹ»¶Ôij¼¸ÌõÌØ¶¨µÄ¡°³¬¼¶Ö¸Ásupervisor instruction£©¡±½øÐвÙ×÷¡£µ«ÊÇ£¬Èç¹ûÔÚûÓÐ×ã¹»ÌØÈ¨µÄÇé?**´ÐÐÕâЩ³?¼¶Ö¸Áî»áµ¼Ö¡°³ÁĬµÄʧ°Ü£¨//fail silently£ºÈç¹ûÌØÈ¨¼¶²»¹»£¬ÄÇô»áÖ±½Ó?**´ÐÐʧ°Ü£?²»»á²úÉúÆäËüÏìÓ¦£©¡±£¬¶ø²¢·Ç²úÉúÒ»¸ö±ãÓÚÎÒÃÇʹÓõÄÏÝÚ壨trap£©¡£

ÁíÍ⣬½«x86¼Ü¹¹ÖеÄMMU½øÐÐÓÐЧµÄÐéÄ⻯ҲÊÇÒ»¼þºÜÀ§ÄѵÄÊÂÇé¡£ÕâЩÎÊÌâÊÇ¿ÉÒÔ±»½â¾öµÄ£¬µ«ÊÇÔÚ½â¾öµÄͬʱ±ØÐëÒª¸¶³ö²Ù×÷¸´ÔÓ¶ÈÔö¼ÓºÍϵͳÐÔÄܽµµÍµÄ´ú¼Û¡£VMware ESX Server[10]ÐèÒª¶¯Ì¬µØÖØÐ´ÄÇЩ±»VMM²Ù¿ØµÄ»úÆ÷Â벿·Ö£¬ÔÚÆäÖÐÓпÉÄÜÐèÒªVMM¸ÉÉæµÄµØ·½²åÈëÏÝÚå²Ù×÷£¨//ÔÚʲôµØ·½²åÈëÏÝÚå²Ù×÷£¬ÊÇÔÚ³ÌÐòÔËÐÐÆðÀ´ºó²ÅÖªµÀµÄ£¬ËùÒÔÐèÒª¶¯Ì¬µØÖØÐ´Ïà¹Ø´úÂ룩¡£ÒòΪÎñ±ØÒª¶ÔËùÓÐÄÇЩ²»Äܹ»ÒýÆðÏÝÚåµÄÌØÈ¨Ö¸Áî½øÐв¶×½ºÍ²Ù×÷£¬ËùÒÔÕâÖÖת»»£¨//¶¯Ì¬ÖØÐ´´úÂ룩Ҫ±»Ó¦ÓÃÓÚÕû¸öguest OSµÄÄںˣ¨µ¼ÖÂÁËÏà¹ØµÄת»»£¬Ö´Ðкͻº´æµÈ¿ªÏú£©¡£ESX ServerʵÏÖÖвÉÓõļ¼ÊõÊǽ¨Á¢ÏµÍ³½á¹¹£¨system structure£©£¨±ÈÈçÒ³±í£©µÄÓ°×Ó°æ±¾£¬Í¨¹ýΪÿһ´Î¡°¸üС±²Ù×÷ÉèÁ¢ÏÝÚåÀ´½â¾öÐéÄâÒ³±íºÍÎïÀíÒ³±íµÄÒ»ÖÂÐÔÎÊÌ⣨//¾ßÌåϸ½Ú»¹ÊÇÒª¿´ESX ServerµÄ˵Ã÷£©¡£µ«ÊÇÔÚ´¦Àí¡°¸üÐÂÃܼ¯¡±Ð͵IJÙ×÷£¨Èç´´½¨ÐµÄÓ¦Óýø³Ì£©µÄʱºò£¬¸Ã·½·¨»á´øÀ´¸ß°ºµÄ¿ªÏú¡£

³ýÁËx86¼Ü¹¹·Ç³£¸´ÔÓµÄÔ­Òò£¬»¹ÓÐһЩÆäËü·½ÃæµÄÕùÂÛ·´¶Ô¡°ÍêÈ«ÐéÄ⻯¡±¡£ÆäÖÐÖµµÃÒ»ÌáµÄÊÇ£¬±»²Ù¿ØµÄ²Ù×÷ϵͳÔÚһЩÇé¿öÏÂÐèÒª½Ó´¥µ½ÕæÊµµÄ×ÊÔ´¡£ÀýÈ磬Ìá¹©ÕæÊµÊ±¼äºÍÐéÄâʱ¼äÒÔÔÊÐíguest OSÄܹ»¸üºÃµØÖ§³Ö¡°Ê±¼äÃô¸Ð¡±Ð͵ÄÈÎÎñ£¬»¹¿ÉÒÔÕýÈ·µØ²Ù×÷TCP³¬Ê±ºÍRTT¹ÀË㣻¸ø³öÕæÊµµÄ»úÆ÷µØÖ·ÒÔÔÊÐíguest OSÄܹ»ÀûÓ󬼶ҳ£¨superpage£©»òÕßҳȾɫ£¨page coloring£©µÈ·½·¨¸Ä½øÐÔÄÜ¡£

ÎÒÃÇÌá³öµÄÐéÄâ»ú³éÏóÄܹ»±ÜÃâÍêÈ«ÐéÄ⻯´øÀ´µÄÖÖÖÖȱÏÝ¡£ÕâÖÖÐéÄâ»ú³éÏóºÍµ×²ãÓ²¼þÏàËÆÈ´²¢²»ÍêÈ«Ïàͬ£¬Òò´Ë±»³ÆÖ®Îª¡°×¼ÐéÄ⻯¡±£¨//paravirtualization£º»òÕß·­ÒëΪ°ëÐéÄ⻯£¿ºóÃæÒëÎÄÑØÓÃ×¼ÐéÄ⻯£©·½·¨¡£ÕâÖÖ·½·¨ËäÈ»ÐèÒª¶Ôguest OS½øÐÐһЩ¸Ä¶¯£¬µ«ÊÇËüÄܹ»¸ÄÉÆÐÔÄÜ¡£»¹ÓÐÌØ±ðÖØÒªµÄÒ»µãÐèҪ˵Ã÷£º×¼ÐéÄ⻯·½·¨²»»á¶ÔÓ¦Óöþ½øÖƽӿڣ¨ABI£©½øÐÐÐ޸ģ¬Òò´ËÓû§Ò²¾Í²»ÓÃÐÞ¸ÄÄÇЩÔÚ guest OSÉÏÖ´ÐеÄÓ¦ÓóÌÐò¡£

ÎÒÃǽøÐеĹØÓÚ×¼ÐéÄ⻯·½·¨µÄÌÖÂÛÒª×ñÑ­ÒÔÏÂһЩ¹æÔò£º

1.×î»ù±¾µÄÊÇÒªÖ§³ÖÄÇЩ²»¾­¸Ä¶¯µÄÓ¦Óöþ½øÖÆÎļþµÄÖ´ÐУ¬¼´Óû§²»ÓöÔÓ¦ÓóÌÐò×öÕë¶ÔXenµÄת»»¡£Òò´ËÎÒÃDZØÐëÐéÄ⻯ÏÖÓеıê×¼ABIËùÐèµÄÈ«²¿Ìåϵ½á¹¹ÌØÕ÷¡£

2.ºÜÖØÒªµÄÒ»µãÊÇÒªÖ§³ÖÍêÕûµÄ¶àÓ¦ÓòÙ×÷ϵͳ¡£Õâ¾ÍÐèÒª½«ÔÚµ¥¸öguest OSʵÀýÖеĸ´ÔӵķþÎñÆ÷ÅäÖÃÐéÄ⻯£¨//ÀýÈ磬Èç¹ûguest OSÉÏÅäÖÃÁËftp·þÎñ£¬ÄÇôÐéÄâÓ²¼þ¾ÍÒª´ò¿ªÏàÓ¦¶Ë¿Ú£©¡£

3.×¼ÐéÄ⻯Îñ±ØÒªÓкܸߵÄÐÔÄÜ¡£ÁíÍâÕë¶ÔÄÇЩ²»Ð­×÷£¨//uncooperative£ºÕâÀïµÄ²»Ð­×÷ÊÇÖ¸Ó²¼þ¼Ü¹¹²»Ö§³Ö¹²Ïí£¬ËùÒÔ²ÅÐèÒª×ÊÔ´¸ôÀ룩µÄ»úÆ÷¼Ü¹¹£¬Èçx86¼Ü¹¹£¬×¼ÐéÄ⻯»¹ÐèÒªÄܹ»ÌṩºÜÇ¿µÄ×ÊÔ´¸ôÀëÄÜÁ¦¡£

4.ÔÚЭ×÷£¨cooperative£©µÄ»úÆ÷¼Ü¹¹ÉÏ£¬×¼ÐéÄ⻯·½·¨ÒªÄܹ»ÍêÈ«µØÒþ²Ø×ÊÔ´ÐéÄ⻯´øÀ´µÄÓ°Ï죬¼õÉÙguest OSÔÚÕýÈ·ÐÔºÍÐÔÄÜÉÏÃæÁٵķçÏÕ¡£

Çë×¢Ò⣬ÎÒÃÇÔÚÕâÀïÌá³öµÄ×¼ÐéÄ⻯µÄx86³éÏóµÄ·½·¨ÊÇÓë×î½üÔÚDenaliÏîÄ¿ÖÐÌá³öµÄ·½·¨Óкܴó²îÒìµÄ¡£DenaliÊÇΪÁËÖ§³ÖÊýÒÔǧ¼ÆµÄÔËÐÐ×ÅÍøÂç·þÎñµÄÐéÄâ»ú¶øÉè¼ÆµÄ¡£ÕâÐ©ÍøÂç·þÎñÖоø´ó²¿·ÖÊÇС¹æÄ£µÄ£¬²»Á÷ÐУ¨//Ó¦ÓõIJ»Á÷ÐÐÒ²¾Í˵Ã÷ÁËÔËÐиÃÓ¦ÓõĻ·¾³±È½ÏÉÙ£¬ËùÒÔÖ»ÒªÕë¶ÔÕâЩÏàÓ¦µÄÌØ¶¨»·¾³×÷רÃŵÄÐéÄ⻯¼´¿É£©µÄÓ¦Óá£ÓëÖ®Ïà·´µÄÊÇ£¬XenµÄÉè¼Æ×îÖÕÒªÖ§³Ö½ü100¸öÔËÐÐ×ÅÒµ½ç±ê×¼Ó¦ÓúͷþÎñµÄÐéÄâ»ú¡£ÓÉÓÚÉè¼ÆÄ¿±êµÄ¼«´ó²îÒ죬ÎÒÃDz»·Á½« DenaliµÄÉè¼ÆÑ¡ÔñºÍÎÒÃÇ×Ô¼ºµÄÉè¼Æ¹æÔò×öÒ»¸öÓÐÒæµÄÌÖÂÛ¡£

Ê×ÏÈ£¬Denali²»ÐèÒª¹Ø×¢ÏÖÓеÄABI£¬Òò´ËËûÃǵÄVM½Ó¿ÚºöÂÔµôÁËÏà¹ØµÄ¼Ü¹¹ÌØÕ÷¡£ÀýÈ磬Denali²¢²»Íêȫ֧³Öx86µÄ·Ö¶Î»úÖÆ£¬µ«ÊÇÕâÒ»µãÈ´ÊÇÔÚNetBSD£¬LinuxºÍWindows XPµÈ²Ù×÷ϵͳµÄABIÖж¼ÓÐÌá³ö²¢ÇÒ±»¹ã·ºÊ¹Óá£ÀýÈ磬Ï߳̿âÖо­³£»áʹÓ÷ֶλúÖÆÀ´Ñ°Ö·Ïֲ߳̾¿Êý¾Ý¡£

Æä´Î£¬DenaliµÄʵÏÖûÓнâ¾öÔÚµ¥¸öguest OSÖÐÖ§³Ö¶à¸öÓ¦Óã¨application multiplexing£©µÄÎÊÌ⣬ҲûÓнâ¾ö¶àµØÖ·¿Õ¼äµÄÎÊÌâ¡£Ó¦Óñ»ÏÔʽµØÁ´½Óµ½Ilwaco guest OSʵÀýÉÏ£¬Õâô×öÔÚijÖÖÒâÒåÉÏÀàËÆÓÚ֮ǰÔÚExokernelÖеÄlibOS[23]¡£Òò´Ëÿ¸öÐéÄâ»úÖ»ÄܲٿØÒ»¸öµ¥Óû§µ¥Ó¦ÓõÄûÓб£»¤´ëÊ©µÄËùνµÄ ¡°²Ù×÷ϵͳ¡±¡£ÔÚXenÖУ¬ÓëÖ®Ïà·´£¬Ã¿¸öÐéÄâ»úÉÏÄܹ»²Ù¿ØÒ»¸öÕæÕýµÄ²Ù×÷ϵͳ¡£Õâ¸ö²Ù×÷ϵͳÉÏÄܹ»°²È«µØÖ´ÐÐÊýÒÔǧ¼Æ¸ö²»¾­¸Ä¶¯µÄÓû§¼¶½ø³Ì¡£ËäÈ» DenaliºÅ³Æ¿ª·¢ÁËÒ»¸öÐéÄâMMUÔ­ÐÍÄܹ»¶ÔÆäÔÚ¸ÃÁìÓòÓÐËù°ïÖú£¬µ«ÊÇÎÒÃÇûÓп´µ½¹«¿ªµÄ¼¼Êõϸ½ÚºÍÆÀ¹À±¨¸æ¡£

ÔٴΣ¬ÔÚ DenaliÌåϵ½á¹¹ÖУ¬ÊÇÓÉVMMÖ´ÐÐÈ«²¿µÄÄÚ´æÓë´ÅÅ̼äµÄÒ³Ãæµ÷¶ÈµÄ¡£Õâ¿ÉÄÜÊÇÓëÐéÄâ²ãȱ·¦´æ´¢¹ÜÀíÖ§³ÖÓйء£ÓÉVMMÍê³ÉÒ³Ãæµ÷¶ÈÊÇÓëÎÒÃǵÄÐÔÄܸôÀëÄ¿±êÏàÎ¥±³µÄ£ºÄÇЩ¡°ÓжñÒ⡱µÄÐéÄâ»ú¿ÉÄÜ»á¹ÊÒâ²úÉú¶¶¶¯ÐÐΪ£¬µ¼ÖÂÆäËüÐéÄâ»úµÄCPUʱ¼äºÍ´ÅÅÌ´ø¿í±»²»¹«Æ½µØ**£¨//VMM¼à¿ØºÜ¶àVM£¬¸÷¸ö VMÉÏÔÙÅܲÙ×÷ϵͳ£¬ËùÒÔÈç¹ûºÜ¶àÊÂÇé¶¼·ÅÔÚVMMÖÐ×ö±ØÈ»»áÓ°Ïìµ½¸÷¸öVM£»ËùÒÔÒª°ÑһЩÊÂÇé·ÅÔÚÉÏÃæµÄ²Ù×÷ϵͳ×öÀ´´ïµ½¸ôÀëÐÔ£©¡£ÔÚXenÖУ¬ÎÒÃÇÏ£Íûÿ¸öguest OSÔÚÆä×Ô¼º·ÖÅäµ½µÄÄÚ´æ¿Õ¼äºÍ´ÅÅÌÇøÓòÄÚÖ´ÐÐËü×Ô¼ºµÄÒ³Ãæµ÷¶È£¨ ´ËǰÒѾ­ÓÐself-pagingµÄ·½·¨±»Ìá³ö£©¡£
×îºó£¬DenaliΪ»úÆ÷µÄÈ«²¿×ÊÔ´ÐéÄâÁË¡°Ãû×ֿռ䡱¡£ÕâÑùµÄ»°£¬Èç¹ûÒ»¸öVM²»Äܹ»¡°½Ð³ö¡±ÁíÒ»¸öVMÏÂϽµÄ×ÊÔ´µÄÃû×Ö£¬ÄÇô¸ÃVM¾Í²»Äܹ»·ÃÎÊÕâЩ×ÊÔ´£¨ÀýÈ磬DenaliÖеÄVM²¢²»ÖªµÀÓ²¼þµØÖ·£¬ËüÃÇÖ»¿´µÃµ½Denali´´½¨µÄÐéÄâµØÖ·£©¡£Óë´ËÏà¶Ô£¬ÎÒÃÇÈÏΪhypervisorÖеݲȫ·ÃÎÊ¿ØÖÆÒѾ­×ãÒÔÈ·±£°²È«ÐÔ£»´ËÍ⣬¾ÍÏñ֮ǰÌÖÂÛ¹ýµÄ£¬µ±Ç°ÔÚguest OSÊÇ·ñÓ¦¸ÃÄܹ»Ö±½Ó¿´µ½ÎïÀí×ÊÔ´ÕâÒ»µãÉÏ´æÔÚןÜÈÈÁҵĹØÓÚÕýÈ·ÐÔºÍÐÔÄܵÄÕùÂÛ¡£

ÔÚºóÐøµÄÕ½ÚÀÎÒÃǽ«ÃèÊöXenÌá³öµÄÐéÄâ»ú³éÏó£¬È»ºó½«ÌÖÂÛÈçºÎ½«Ò»¸öguest OS×÷±ØÒªµÄ¸Ä¶¯ÒÔÊÊÓ¦Xen¡£ÔÚÕâÆªÎÄÕÂÀïÎÒÃǶ¨ÒåÁËһЩÊõÓïÒªÌáÐÑ´ó¼Ò×¢Òâ¡£ÀýÈ磬ÊõÓïguest OSÊÇÖ¸XenÄܹ»²Ù¿ØµÄ²Ù×÷ϵͳ֮һ£»ÊõÓïdomainÊÇÖ¸Ò»¸öÔËÐÐÖеÄÐéÄâ»ú£¬ÔÚÆäÉÏÓÐÒ»¸öguest OSÔÚÖ´ÐС£programºÍprocessÖ®¼äµÄÇø±ðºÍ´«Í³ÏµÍ³ÖеÄÇø±ðÀàËÆ¡£ÎÒÃdzÆXen±¾ÉíΪhypervisor£¬ÒòΪËüÔËÐеÄÌØÈ¨¼¶Òª±ÈËüËù²Ù¿ØµÄguest OSÖеÄsupervisor codeÔËÐеÄÌØÈ¨¼¶¸ü¸ß¡£

2.1 ÐéÄâ»ú½Ó¿Ú

Ò»¸ö×¼ÐéÄ⻯µÄ x86½Ó¿ÚÖ÷Òª°üÀ¨ÁËϵͳÖеÄÈý¸ö´óµÄ·½Ã棺´æ´¢¹ÜÀí£¬CPUºÍÉ豸I/O¡£ÔÚÏÂÃæ£¬ÎÒÃǽ«ÒÀ´Î½éÉܸ÷¸ö»úÆ÷×ÓϵͳµÄÇé¿ö£¬²¢ÌÖÂÛÔÚÎÒÃǵÄ×¼ÐéÄ⻯¼Ü¹¹ÖÐÊÇÈçºÎÌåÏֵġ£ËäÈ»ÔÚÎÒÃǵÄʵÏÖÖУ¬ÓÐÏ൱һ²¿·Ö£¬Èç´æ´¢¹ÜÀí£¬ÊÇרÃÅÕë¶Ôx86µÄ£¬µ«ÊÇʵ¼ÊÉÏ»¹ÓÐºÜ¶à·½Ãæ£¨±ÈÈçÎÒÃÇÐéÄâµÄCPUºÍI/OÉ豸£©¶¼ÊÇ¿ÉÒÔºÜÈÝÒ×µØÓ¦ÓÃÓÚÆäËü»úÆ÷¼Ü¹¹Éϵġ£¸ü½øÒ»²½µØËµ£¬ÔÚÓëRISC¼Ü¹¹ÔÚʵÏÖÉÏÓвîÒìµÄºÜ¶àµØ·½£¬x86ÍùÍù±íÏÖ³öµÄÊǸ÷½Ãæ×Çé¿öʱµÄÇéÐΡ£ÀýÈ磬¶ÔÓ²¼þÒ³±í½øÐÐÓÐЧµÄÐéÄ⻯¾Í±ÈÐéÄ⻯һ¸öÈí¼þ¹ÜÀíµÄTLBÀ§ÄѺܶࡣ

´æ´¢

¹ÜÀí·Ö¶Î²»Äܹ»Ê¹ÓþßÓÐÍêÈ«ÌØÈ¨¼¶µÄ¶ÎÃèÊö·û£¬²»Äܹ»ÓëÏßÐÔµØÖ·¿Õ¼äµÄ×î¶¥²¿½»µü£¨//ÒòΪ×î¶¥²¿ÊÇXen£©¡£

·ÖÒ³guest

OSÖ±½Ó¶ÔÓ²¼þÒ³±í×ö¶Á·ÃÎÊ£¬µ«ÊǸüУ¨//¾ÍÊÇд£©ÊÇ·ÖÅú½øÐеĶøÇÒÒª¾­¹ýhypervisorÈ·ÈÏ¡£Ò»¸ödomain¿ÉÒÔ±»·ÖÅäÔÚ²»Á¬ÐøµÄÒ³ÃæÉÏ¡£

CPU±£»¤guest OS±ØÐëÔËÐÐÔÚµÍÓÚXenµÄÌØÈ¨¼¶ÉÏ¡£

Òì³£guest OS±ØÐ뽫Òì³£¾ä±úµÄÃèÊö·û±íÔÚXenÖмǼ¡£³ýÁËÒ³Ãæ´íÎóÍ⣬ÆäËü¾ä±úºÍÕæÊµµÄx86¼Ü¹¹Ïàͬ¡£

ϵͳµ÷ÓÃguest OSΪϵͳµ÷ÓÃÌṩһ¸ö¡°¿ìËÙ¡±µÄ¾ä±ú¡£ÔÊÐíÓ¦ÓÃÖ±½Óµ÷ÓÃËüËùÔÚµÄguest OS£¬¶ø²»±Ø¼ä½ÓµØÍ¨¹ýXenÍê³Éÿ´Îµ÷Óá£

ÖжÏÓ²¼þÖжϱ»Ò»¸öÇáÁ¿¼¶µÄʼþÏµÍ³Ìæ»»¡£

ʱ¼äÿ¸öguest OS¾ßÓÐÒ»¸ö¶¨Ê±Æ÷½Ó¿Ú£¬¿ÉÒԵõ½¡°ÕæÊµµÄ¡±ºÍ¡°ÐéÄâµÄ¡±Ê±¼ä¡£

É豸I/OÍøÂ磬´ÅÅÌ£¬¡­¡­ÐéÄâÉ豸·ÃÎÊÆðÀ´ºÜ¼òµ¥¡£Êý¾Ý´«µÝʹÓõÄÊÇÒì²½I/O»·¡£ÓÉÒ»¸öʼþ»úÖÆÌæ»»Ó²¼þÖжÏÀ´·¢²¼Í¨¸æ¡£

2.1.1´æ´¢¹ÜÀí

ÐéÄ⻯´æ´¢ºÁÎÞÒÉÎÊÊÇ×¼ÐéÄ⻯һ¸öÌåϵ½á¹¹ÖÐ×îÀ§ÄѵIJ¿·Ö£¬Ëü°üÀ¨hypervisorËùÐèµÄ»úÖÆºÍÒÆÖ²¸÷¸öguest

OS ËùÐèµÄ¸Ä¶¯¡£Èç¹ûÔڼܹ¹ÖÐÌṩÁËÓÉÈí¼þ¹ÜÀíµÄTLBµÄ»°£¬ÄÇôÕâ¸öÈÎÎñ»á±äµÃÇáËÉЩ£¬ËüÃÇ¿ÉÒÔÒԱȽϼòµ¥µÄ·½Ê½±»ÓÐЧµØÐéÄ⻯[13]¡£´ø±ê¼ÇµÄTLBÊÇÁíÍâÒ»¸öÔڴ󲿷ÖRISC¼Ü¹¹£¨ÕâЩRISC¼Ü¹¹Ö÷ÒªÓÃÓÚ¹¹½¨·þÎñÆ÷£¬±ÈÈçAlpha£¬MIPSºÍSPARC£©ÖÐÖ§³ÖµÄÓÐÓÃÌØÕ÷¡£ÆäÖУ¬Ã¿¸öTLBÏî¶¼Óк͵ØÖ·¿Õ¼ä±êʶ·ûÏà¹ØµÄ±ê¼Ç£¬ÕâʹµÃhypervisorºÍ¸÷¸öguest OSÄܹ»ÓÐЧµØÔÚ±»¸ôÀ뿪µÄµØÖ·¿Õ¼äÄÚ¹²´æ¡£ÕâʱÔÚÖ´ÐÐ×ªÒÆ£¨//transferring execution£ºÔÚ½ø³ÌÖ´ÐмäÇл»µÄʱºò£¬Ö´ÐеÄÖ¸ÁîÐòÁдÓÒ»¸ö½ø³Ì×ªÒÆµ½ÁíÒ»¸ö½ø³Ì£¬³ÆÎªÖ´ÐÐ×ªÒÆ£©µÄʱºò£¬ÊDz»ÐèҪˢУ¨flush£©Õû¸öTLB £¨//Ö»¶Ô¾ßÓкÍ×Ô¼ºµÄµØÖ·¿Õ¼ä±êʶ·ûÏàÎǺϵÄTLBÏî½øÐвÙ×÷£©¡£

²»ÐÒµÄÊÇ£¬x86¼Ü¹¹²¢Ã»ÓÐÓÉÈí¼þ¹ÜÀíµÄTLB£»È¡¶ø´úÖ®µÄÊÇÔÚ·¢ÉúTLBʧЧµÄʱºò£¬´¦ÀíÆ÷»á×Ô¶¯Í¨¹ý±éÀúÓ²¼þÒ³±í½á¹¹À´´¦Àí¡£Òò´ËΪÁË»ñµÃ×îºÃµÄ¿ÉÄÜ´ïµ½µÄÐÔÄÜ£¬µ±Ç°µØÖ·¿Õ¼äÄÚËùÓеÄÓÐЧҳ´«Ê䣩¶¼ÒªÔÚÓ²¼þ¿É·ÃÎʵÄÒ³±íÖиø³ö£¨//×îºÃÇé¿öÀíÓ¦Èç´Ë£¬µ«Êµ¼ÊÈçºÎ×öµÃµ½ÄØ£¿£©¡£´ËÍ⣬ÒòΪTLBÊÇûÓбê¼ÇµÄ£¬ËùÒÔµØÖ·¿Õ¼äµÄÇл»ÐèÒªÕû¸öTLBµÄˢС£ÔÚÕâЩÏÞÖÆÏ£¬ÎÒÃÇ×÷³öÁËÁ½¸ö¾ö¶¨£º£¨i£©ÓÉguest OS¸ºÔð·ÖÅäºÍ¹ÜÀíÓ²¼þÒ³±í£¬Õâô×ö×îС»¯ÁËXen¶ÔÒ³±í²Ù×÷µÄÓ°Ï죬ȷ±£Á˰²È«ÐԺ͸ôÀëÐÔ£»£¨ii£©Xen´¦ÓÚÿ¸öµØÖ·¿Õ¼äµÄ×î¶¥²¿µÄ64MB¿Õ¼äÄÚ£¬Òò´Ë±ÜÃâÁËÔÚ½øÈëºÍÀ뿪hypervisorʱ½øÐÐTLBˢвÙ×÷£¨//Õâ¸öÒª¿´Ô´´úÂë²ÅÄÜ×îºó¸ãÇå³þ£©¡£

ÿµ±guest OSÐèÒªÒ»¸öеÄÒ³±í£¬ÀýÈç´´½¨ÁËÒ»¸öнø³Ì£¬Ëü¾ÍÔÚ×Ô¼º±£ÁôµÄÄÚ´æ¿Õ¼äÄÚ·ÖÅäºÍ³õʼ»¯Ò»¸öÒ³Ãæ£¬²¢ÇÒ½«ÆäÔÚXenÖмǼ¡£´Ëʱ²Ù×÷ϵͳ±ØÐë·ÅÆú¶ÔÒ³±í´æ´¢¿Õ¼äÖ±½ÓдµÄȨÏÞ£ºËùÓкóÐøµÄ¸üвÙ×÷¶¼±ØÐëÓÉXen½øÐÐÈ·ÈÏ¡£Õâ¾ÍÔÚºÜ¶à·½ÃæÏÞÖÆÁ˸üвÙ×÷£¬°üÀ¨Ö»ÔÊÐí²Ù×÷ϵͳËü×Ô¼ºËùÊôµÄÒ³½øÐÐÓ³Éä²Ù×÷£¬²»ÔÊÐí¶ÔÒ³±í½øÐпÉдµÄÓ³Éä²Ù×÷¡£guest OS¿ÉÒÔ³ÉÅúµØ½øÐиüвÙ×÷ÒÔ¼õÉÙÿ´Î¸üж¼Òª½øÈëhypervisor´øÀ´µÄ´ú¼Û£¨//ÒòΪÿ´Î¸üж¼ÒªhypervisorÈ·ÈÏ£©¡£Ã¿¸öµØÖ·¿Õ¼ä¶¥²¿µÄ64MBÇøÓòÊDZ£Áô¸øXenµÄ£¬ÊDz»Äܹ»±»guest OS·ÃÎÊ»òÕßÖØÐ½øÐÐÓ³ÉäµÄ¡£ÒòΪÈκÎͨ³£µÄx86¼Ü¹¹ÖеÄABI¶¼²»»áʹÓõ½Õâ¸öÇøÓòÖеĵØÖ·£¬ËùÒÔÕâ¸öÔ¼Êø²»»áÆÆ»µµ½Ó¦ÓóÌÐòµÄ¼æÈÝÐÔ¡£

·Ö¶Î»úÖÆÒ²ÊÇÒÔÀàËÆµÄ·½Ê½£¬Í¨¹ý¶ÔÓ²¼þ¶ÎÃèÊö·û±íµÄ¸üÐÂÈ·ÈÏÀ´½øÐÐÐéÄ⻯£¨//ÕâÑù×ö¾Í´ïµ½ÐéÄ⻯µÄÄ¿µÄÁËô£¿Å¶£¬Ó¦¸ÃÊÇXenÔÚÈ·ÈϺó½Ó×ÅÓÉXenÖ´ÐУ¬àÅ£©¡£¶ÔÓÚx86¼Ü¹¹É϶ÎÃèÊö·ûµÄÏÞÖÆÖ»ÓУº£¨i£©ËüÃǵÄÌØÈ¨¼¶±ð±ØÐë±ÈXenÒªµÍ£»£¨ii£©ËüÃDz»Äܹ»¶ÔµØÖ·¿Õ¼äÖÐXenµÄ±£Áô²¿·Ö½øÐзÃÎÊ¡£

2.1.2CPU

ÐéÄ⻯CPU¶Ôguest OSÌá³öÁ˼¸¸öÒªÇó¡£ÒòΪhypervisor²åÔÚ²Ù×÷ϵͳµÄϲãÎ¥±³Á˹߳£µÄ¹ØÓÚ²Ù×÷ϵͳÔÚÕû¸öϵͳÖÐÌØÈ¨×î¸ßµÄ¼ÙÉ衣ΪÁ˱£»¤hypervisor²»»áÊܵ½²Ù×÷ϵͳ²»ÕýÈ·ÐÐΪµÄÓ°Ï죨¼´domain²»ÊÜÁíÒ»¸ödomainµÄÓ°Ï죩£¬guest OS¾Í±ØÐë±»¸ÄÔìΪÄܹ»ÔËÐÐÔڽϵ͵ÄÌØÈ¨¼¶ÉÏ¡£

ºÜ¶à´¦ÀíÆ÷Ìåϵ½á¹¹Ö»ÊÇÌṩÁËÁ½¸öÌØÈ¨¼¶¡£ÔÚÕâЩÇé¿öÏ£¬guest OSºÍÓ¦ÓóÌÐò¹²Ïí½ÏµÍµÄÌØÈ¨¼¶¡£Í¬Ê±£¬guest OSÔËÐÐÔÚµ¥¶ÀµÄµØÖ·¿Õ¼äÖÐÒÔ±£»¤×Ô¼º²»»áÊܵ½Ó¦ÓóÌÐòÖ´ÐеÄÓ°Ïì¡£guest OSͨ¹ýhypervisorÉ趨ÐéÄâµÄÌØÈ¨¼¶ºÍ¸Ä±äµ±Ç°µÄµØÖ·¿Õ¼äÀ´¼ä½ÓµØºÍÓ¦ÓÃÖ®¼ä½øÐпØÖÆ´«µÝ¡£ÁíÍ⣬Èç¹û´¦ÀíÆ÷µÄTLBÖ§³ÖµØÖ·¿Õ¼ä±ê¼Ç£¬ÄÇôҲ¾Í¿ÉÒÔ±ÜÃâTLBˢдøÀ´µÄ¸ß°º´ú¼Û¡£

ÔÚx86¼Ü¹¹ÉÏÓÐЧµØÊµÏÖÌØÈ¨¼¶µÄÐéÄ⻯ÊÇ¿ÉÄܵģ¬ÒòΪx86¼Ü¹¹ÔÚÓ²¼þÉÏÖ§³ÖËĸö²»Í¬µÄÌØÈ¨¼¶¡£x86¼Ü¹¹µÄÌØÈ¨¼¶ÍùÍùÓÃȦ£¨ring£©À´±íʾ£¬´Óring 0£¨×î¸ßÌØÈ¨£©µ½ring 3£¨×îµÍÌØÈ¨£©¡£²Ù×÷ϵͳµÄ´úÂëÔËÐÐÔÚring 0Õâ¸öÌØÈ¨¼¶ÉÏ£¬ÒòΪÔÙûÓÐÆäËüµÄringÄܹ»Ö´ÐÐÄÇÐ©ÌØÈ¨Ö¸Áî¡£ring 3ͨ³£ÓÃÓÚÖ´ÐÐÓ¦ÓôúÂë¡£¾ÍÎÒÃÇËùÖª£¬×ÔOS/2Æðµ½ÏÖÔڵĸ÷¸öÖªÃûµÄx86 ¼Ü¹¹ÉϵIJÙ×÷ϵͳ¶¼»¹Ã»ÓÐÀûÓÃring 1ºÍring 2ÕâÁ½¸öÌØÈ¨¼¶µÄ¡£ÄÇô£¬ÈκÎ×ñÑ­Õâ¸öͨ³£µÄ°²ÅŵIJÙ×÷ϵͳ£¨//ûÓÐÀûÓÃring 1ºÍring 2£©¾Í¶¼¿ÉÒÔÒÆÖ²µ½XenÉÏÀ´¡£

Õâ¸öÒÆÖ²¹ý³ÌÖ»ÐèÒª×öһЩ¸Ä¶¯Ê¹²Ù×÷ϵͳ¸ÄΪÔËÐÐÔÚring 1ÌØÈ¨¼¶ÉÏ¡£Õâ¾Í·ÀÖ¹ÁËguest OS»áÖ±½ÓÖ´ÐÐÌØÈ¨Ö¸ÁҲ±£Ö¤Á˲Ù×÷ϵͳÓëÔËÐÐÔÚring 3ÉϵÄÓ¦ÓóÌÐòÖ®¼äÏà¸ôÀëµÄ°²È«ÐÔ¡£

ÌØÈ¨Ö¸ÁîÐèÒª±»XenÈ·ÈϺÍÖ´ÐÐÒÔ´ïµ½×¼ÐéÄ⻯µÄÄ¿µÄ£¬ÕâÖ÷ÒªÓ¦ÓÃÓÚÖîÈç°²ÖÃеÄÒ³±í£¬»òÕßÔÚ´¦ÀíÆ÷idleʱ·ÅÆúÖ®£¨¶ø²»ÊÇÈ¥hltËü£©µÈ²Ù×÷¡£ÒòΪֻÓÐ XenÓÐ×ã¹»¸ßµÄÌØÈ¨¼¶À´Ö´ÐÐÕâЩָÁËùÒÔÈκÎguest OSÊÔͼֱ½ÓÔËÐÐÌØÈ¨Ö¸Áî¶¼»áʧ°Ü£¬ºó¹ûҪôÊÇ¡°³ÁĬ¡±ÒªÃ´ÊDzúÉú´íÎó¡£

Òì³££¬°üÀ¨ÄÚ´æ´íÎóºÍÈí¼þÏÝÚ壬¶¼¿ÉÒÔÔÚx86¼Ü¹¹µÄ»ù´¡ÉÏÖ±½Ó½øÐÐÐéÄ⻯¡£ÓÐÒ»¸ö±í£¬ÄÚÈÝΪ¶ÔÿÀàÒì³£½øÐÐÃèÊöµÄ¾ä±ú¡£±íÖÐËùÁеÄÒì³£¶¼ÊÇÔÚXenÖÐÓмǼµÄ£¬ÒÔÓÃ×÷È·ÈÏ¡£±íÖиø³öµÄ¾ä±ú¶¼ÊÇÓëÕæÕýµÄx86Ó²¼þÖÐÏàͬµÄ£»Ö®ËùÒÔÕâÒ»µãÊÇ¿ÉÄÜ×öµ½µÄ£¬Ö÷ÒªÊÇÒòΪÔÚÎÒÃǵÄ×¼ÐéÄ⻯¼Ü¹¹ÖУ¬Òì³£¶ÑÕ»¿ò¼ÜÊÇûÓб»Ð޸ĵġ£Î¨Ò»µÄÒ»¸ö¸Ä¶¯ÊÇÔÚÒ³Ãæ´íÎó¾ä±úÉÏ¡£ÒòΪ¸Ã¾ä±úµÄ²Ù×÷ÐèÒª´ÓÌØÈ¨´¦ÀíÆ÷¼Ä´æÆ÷£¨CR2£©ÖжÁ³ö³ö´íµÄµØÖ·£»µ«ÊÇÕâÊDz»¿ÉÄܵģ¨//ÒòÎªÌØÈ¨¼¶±ð²»¹»ÁË£©£¬ÎÒÃǾͽ«Ëü£¨//Ò³Ãæ´íÎó¾ä±ú£¿CR2µÄÖµ£¿£©Ð´ÈëÀ©Õ¹µÄ¶ÑÕ»¿ò¼ÜÖУ¨ºóÀ´·¢ÏÖ£¬ÔÚÒÆÖ²XPµÄʱºò£¬½«Õâ¸öֵдÈëÒ»¸öÔ¤ÏÈÉ̶¨µÄ¹²Ïí´æ´¢Î»ÖÃÉÏÒª±ÈÐ޸ĶÑÕ»¿ò¼Ü¼òµ¥Ò»Ð©£©¡£µ±ÏµÍ³ÔÚring 0ÒÔÍâÖ´ÐÐʱÓÐÒì³£·¢Éú£¬XenµÄ¾ä±ú¾Í»áÔÚguest OS¶ÑÕ»Öд´½¨Ò»¸öÒì³£¶ÑÕ»¿ò¼ÜµÄ¿½±´£¬²¢ÇһὫ¿ØÖƽ»¸øÏàÓ¦µÄÒѾ­¼Ç¼¹ýµÄÒì³£¾ä±ú¡£

µäÐ͵ģ¬Ö»ÓÐÁ½ÀàÒì³£»á¾­³£·¢Éú¶øÓ°Ï쵽ϵͳµÄÐÔÄÜ£ºÏµÍ³µ÷Óã¨Ò»°ã¶¼ÊÇͨ¹ýÈí¼þÒ쳣ʵÏÖ£©ºÍÒ³Ãæ´íÎó¡£ÎÒÃÇÈÃÿ¸öguest OS¶¼¼Ç¼һ¸ö¡°¿ìËٵġ±Òì³£²Ù×÷¾ä±úÀ´¸Ä½øÏµÍ³µ÷ÓõÄÐÔÄÜ¡£Õâ¸öÒì³£²Ù×÷¾ä±ú¿ÉÒÔÖ±½ÓÓÉ´¦ÀíÆ÷ʹÓ㬶ø²»±Ø·ÇÒª¼ä½ÓµØ¾­¹ýring 0£»Õâ¸ö¾ä±úÔÚ·ÅÖýøÓ²¼þÒì³£ÁбíÖÐ֮ǰ¾ÍÊǾ­¹ýÈ·Èϵģ¨//ËùÒÔ²»±Ø¾­¹ýXen£©¡£²»ÐÒµÄÊÇ£¬ÎÒÃDz»¿ÉÄÜʹÓÃͬÑùµÄ¼¼ÊõÀ´´¦ÀíÒ³Ãæ´íÎó¾ä±ú£¬ÒòΪֻÓÐÄÇЩÔËÐÐÔÚring 0µÄ´úÂë²ÅÄܹ»´Ó¼Ä´æÆ÷CR2ÖжÁ³ö´íÎóµÄµØÖ·£»Òò´Ë£¬Ò³Ãæ´íÎó±ØÐëÒª¾­¹ýXen²ÅÄÜÌá½»£¬Xen±£´æ¸Ã¼Ä´æÆ÷µÄÖµ¹©À´×Ôring 1µÄ·ÃÎÊʹÓá£

µ±Xen·¢ÏÖÒì³£²úÉúʱ£¬Ëü»á¶ÔÒì³£¾ä±ú½øÐÐÈ·ÈÏÒÔÈ·±£°²È«ÐÔ¡£ÕâÖ»ÐèÒª¼ì²é¾ä±úµÄ´úÂë¶ÎÖÐÊÇ·ñº¬ÓÐÖ¸Ã÷ÒªÔÚring 0ÖÐÖ´ÐеIJÙ×÷¡£¼ÈȻûÓÐguest OSÄܹ»´´½¨ÕâÑùÒ»¸ö¶Î£¬ÄÇôֻÐèÒª½«×¨ÃŵĶÎÑ¡Ôñ·ûºÍÉÙÁ¿µÄ±£ÁôÔÚXenÖеľ²Ì¬Öµ×÷±È½Ï¼´¿É¡£³ýÁËÕâµãÒÔÍ⣬ÈÎºÎÆäËüµÄ¾ä±úÎÊÌâ¶¼»áÔÚÒì³£´«²¥£¨exception propagation£©£¨//Ò»¸öÒì³£µ¼ÖÂÁËÁíÒ»¸öÒì³£µÄ²úÉú£©µÄ¹ý³ÌÖб»ÐÞÕý¡£ÀýÈ磬Èç¹û¾ä±úȱÉÙÏàÓ¦´úÂë¶Î»òÕß¾ä±úûÓзÖÅäµ½ÄÚ´æÒ³£¬ÄÇôÔÚXen Ϊ½«¿ØÖÆ·µ»Ø¸ø¾ä±ú¶øÖ´ÐÐiretÖ¸ÁîµÄʱºò¾Í»áÓÐÒ»¸öÏàÓ¦µÄ´íÎó²úÉú¡£Xenͨ¹ý¼ì²é³ö´íµÄ³ÌÐò¼ÆÊýÆ÷ÖµÀ´¼ì²âÕâЩ¡°Ë«´íÎó£¨//double faults£ºÖ®Ç°ÒѾ­³ö´íÁË£¬ÏÖÔÚµ½ÁËiretÒѾ­Êǵڶþ¸ö´íÎóÁË£»µÚ¶þ¸ö´íÎóÊÇÓɵÚÒ»¸ö´íÎó´«²¥¶øÀ´£©¡±£ºÈç¹ûµØÖ·ÊÇ´¦ÓÚÒì³£ÐéÄ⻯µÄ´úÂëÖУ¨//˵Ã÷Òì³£´¦ÀíûÓÐÍê³É£¬iretû³É¹¦£©£¬ÄÇôguest OS¾ÍÒª±»ÖÕÖ¹¡£

¶ÔÓÚÖ±½ÓµÄϵͳµ÷Óþä±úÀ´Ëµ£¬ÕâÖÖ¡°ÀÁ¶è£¨//µÚÒ»¸ö´íÎó·¢ÉúµÄʱºò£¬Ã»Óб»¼ì²éµ½£»Ö±µ½XenÖ´ÐÐÁËiretÖ®ºó²Å±¨´í£©¡±µÄ¼ì²éÒ²Êǰ²È«µÄ£ºµ±CPUÊÔͼֱ½ÓÌøÖÁguest OS¾ä±úµÄʱºò£¬»á·¢Éú·ÃÎÊ´íÎó£¨//֮ǰµÄ¹ý³Ì¶¼Ò»Ñù£¬Ö»ÊÇÖ±½ÓµÄϵͳµ÷ÓÃÊDz»¾­¹ýXenµÄ£©¡£ÔÚÕâÖÖÇé¿öÏ£¬²úÉú´íÎóµÄµØÖ·½«´¦ÓÚXenÖ®Í⣨ÒòΪ Xen²»»áÈ¥Ö´ÐÐguest OSϵͳµ÷Óã©£¬Òò´Ë´íÎó¾ÍÒÔÉÏÎĽ²¹ýµÄÒ»°ã·½Ê½½øÐÐÐéÄ⻯¼´¿É¡£Èç¹ûÓÉÓÚ´íÎóµÄ´«²¥µ¼ÖÂÁ˽øÒ»²½µÄ¡°Ë«´íÎó¡±£¬ÄÇôguest OS»áÏñÉÏÎÄ̸¼°µÄÒ»Ñù±»ÖÕÖ¹¡£

2.1.3É豸I/O

ÔÚÍêÈ«ÐéÄ⻯»·¾³ÏÂÐèÒª·ÂÕæÏÖÓеÄÓ²¼þÉ豸£¬¶øXen²»Í¬ÓÚ´Ë¡£Xen¸ø³öÁËÒ»Ì×Çå³þ¡¢¼òµ¥µÄÉ豸³éÏó¡£Õâ¾ÍʹµÃÎÒÃÇÄܹ»Éè¼ÆÒ»¸ö½Ó¿ÚÒÔÓÐЧµØÂú×ãÎÒÃǶԱ£»¤ÐԺ͸ôÀëÐÔµÄÐèÇó¡£ÎªÁË×öµ½ÕâÒ»µã£¬I/OºÍ¸÷¸ö domainÖ®¼äµÄÊý¾Ý´«µÝ¶¼ÊÇÒª¾­¹ýXenµÄ£¬¿ÉÒÔʹÓõķ½·¨Óй²ÏíÄڴ棬Òì²½»º³åÇøÃèÊö·û»·µÈ¡£ÕâЩ·½·¨Äܹ»ÔÚXenÓÐЧµØÖ´ÐÐÈ·Èϼì²é£¨ÀýÈ磬¼ì²é»º³åÇøÊÇ·ñ°üÀ¨ÔÚÁËdomainµÄ´æ´¢¿Õ¼äÄÚ£©µÄͬʱ£¬ÎªÔÚϵͳÖеÄÊúÖ±·½ÏòÉÏ´«µÝ»º³åÇøÐÅÏ¢ÌṩÁËÒ»¸ö¸ßÐÔÄܵÄͨÐÅ»úÖÆ¡£ºÍÓ²¼þÖжÏÀàËÆ£¬XenÖ§³ÖÒ»¸öÇáÁ¿¼¶µÄʼþµÝ½»»úÖÆÓÃÓÚΪһ¸ödomain´«ËÍÒ첽ͨ¸æ£¨notification£©¡£ÕâЩͨ¸æÊÇÔÚ¶Ôδ¾öʼþÀàÐ͵Äλͼ½øÐиüеÄʱºò²úÉúµÄ£¬Ò²¿ÉÒÔͨ¹ýµ÷ÓÃÒ»¸öguest OSרÓеÄʼþ¾ä±ú²úÉú¡£ÕâЩµ÷Óõķµ»Ø¿ÉÒÔÓÉguest OSÀ´¾ö¶¨ÊÇ·ñ½øÐС°ÍÏÑÓ¡±´¦Àí¡£ÀýÈ磬Õâô×ö£¨//ÍÏÑÓ´¦Àí£©¿ÉÒÔ±ÜÃâÔÚÆµ·±»½ÐÑͨ¸æÊ±´øÀ´µÄ¶îÍ⿪Ïú¡£

2.2ÒÆÖ²OSµ½XenµÄ´ú¼Û

µ±Ç°ÎÒÃǵÄNetBSDÒÆÖ²»¹´¦Óڷdz£³õ¼¶µÄ½×¶Î£¬Òò´ËÎÒÃǾÍûÓн«Æä½á¹ûÔÚÕâÀﱨ¸æ¡£ËäÈ»XPµÄÒÆÖ²Òª¸ü½øÒ»²½£¬µ«Ò²»¹´¦ÓÚÒÆÖ²¹ý³ÌÖУ»µ±Ç°ÒÆÖ²µÄXPÄܹ»Ö´ÐÐRAMÉϵÄÓû§¿Õ¼äµÄÓ¦Ó㬵«ÊÇȱ·¦ÐéÄâµÄI/OÇý¶¯¡£»ùÓÚÕâ¸öÔ­Òò£¬±íÖоÍûÓиø³öºÍXPµÄÐéÄâÉ豸Çý¶¯Ïà¹ØµÄÊý¾Ý¡£ÎÞÂÛÔõÑù£¬ºÍLinuxÒ»Ñù£¬ÎÒÃÇ¿ÉÒÔÏë¼ûÕâЩÇý¶¯Ó¦¸ÃÊÇСµÄºÍ¼òµ¥µÄ£¬ÒòΪÕâÒªµÃÒæÓÚXenÌṩµÄÀíÏëµÄÓ²¼þ³éÏó¡£

ºâÁ¿´ú¼ÛµÄ±ê×¼ÊÇÓëÔ­ÏȵÄx86´úÂëÏà±ÈÐ޸ĻòÔö¼ÓµÄÄÇЩ±ØÒªµÄ×¢ÊÍÒÔ¼°×ñ´ÓÒ»¶¨¸ñʽµÄ´úÂëµÄÐÐÊý£¨²»°üÀ¨É豸Çý¶¯£©¡£¶ÔWindows XPÖÐÌåϵ½á¹¹Î޹أ¨architecture independent£©µÄ´úÂëËù×÷µÄ¸Ä¶¯´ïµ½ÁËÒ»¸ö¾ªÈ˵ÄÊý×Ö£¬ÕâÊÇÒòΪWindows XPʹÓÃÁ˶àÖÖ¶àÑùµÄ½á¹¹ºÍÁªºÏÀ´·ÃÎÊÒ³±íÏPTE£©¡£Ã¿´Î¶ÔÒ³±íµÄ·ÃÎʶ¼²»µÃ²»±»µ¥¶ÀµØ½øÐÐÐ޸ģ¨//ÒòΪÿ´Î·ÃÎʶ¼¿ÉÄÜÓõ½²»Í¬µÄ½á¹¹£©£¬µ±È»Õâ¸ö¹ý³ÌÊÇ¿ÉÒÔ²ÉÓÃһЩ½Å±¾À´×Ô¶¯Íê³ÉµÄ¡£Óë´ËÏà·´µÄ£¬LinuxÐèÒªµÄ¸Ä¶¯¾ÍÉÙÁ˺ܶ࣬ÕâÊÇÒòΪLinuxµÄ´æ´¢ÏµÍ³ÊÇʹÓÃÔ¤´¦Àí³ÌÐòÖеĺêÀ´·ÃÎÊPTEµÄ ¡ª ÕâЩºê¶¨ÒåΪÔö¼Ó×¼ÐéÄ⻯ËùÐèµÄת»»ºÍhypervisorµ÷ÓÃÌṩÁ˱ãÀûµÄλÖã¨//¾ÍÔÚÕâЩλÖÃÉϼӼ´¿É£©¡£

ÔÚÕâÁ½¸ö²Ù×÷ϵͳÖУ¬Ìåϵ½á¹¹ÌØÓУ¨architecture specific£©µÄ²¿·ÖÓÃÓÚ½«x86´úÂëÏòÎÒÃǵÄ×¼ÐéÄâ¼Ü¹¹µÄÒÆÖ²¡£Õâ°üÀ¨ÖØÐ´ÄÇЩʹÓÃÁËÌØÈ¨Ö¸ÁîµÄ³ÌÐò£¬É¾³ý´óÁ¿µÄµÍ²ãµÄϵͳ³õʼ»¯´úÂë¡£ÁíÍ⣬ Window XPÐèÒªÓиü¶àµÄ¸Ä±ä£¬ÕâÖ÷ÒªÊÇÒòΪ֮ǰÒÅÁôÏÂÀ´µÄ16λ·ÂÕæ´úÂëµÄ´æÔÚÒÔ¼°ÐèÒªÒ»¸öÂÔÓв»Í¬Òýµ¼¼ÓÔØ£¨boot-loading£©»úÖÆ¡£×¢Ò⣬XPÖÐµÄ x86ÌØÓеĴúÂëÒª±ÈLinux¶àºÜ¶à£¬Òò´Ë¿ÉÒÔÔ¤¼ûµ½ÔÚ×öÒÆÖ²µÄʱºòÒ²¾ÍÐèÒª×ö¸ü¶àµÄ¹¤×÷¡£

2.3¿ØÖƺ͹ÜÀí

¹á´©ÓÚÕû¸öXenµÄÉè¼ÆÓëʵÏÖ¹ý³ÌÖУ¬ÓÐÒ»¸öÄ¿±ê¾ÍÊǾ¡¿ÉÄܵؽ«²ßÂÔ´Ó»úÖÆµ±ÖаþÀë³öÀ´¡£ËäÈ»hypervisor±ØÐëÒª±»°üº¬ÔÚÊý¾Ýͨ·£¨data- path aspects£©ÉÏ¡£ÀýÈ磬ÔÚdomainÖ®¼äµ÷¶ÈCPU£¬ÔÚ·¢ËÍ֮ǰ¹ýÂËÍøÂçÊý¾Ý°ü£¬»òÕßÔÚ¶ÁÊý¾Ý¿éµÄʱºò½øÐÐÖ´ÐзÃÎÊ¿ØÖÆ£¨//±ØÈ»µÄ£¬ÒòΪXenλÓÚguest OSºÍµ×²ãÓ²¼þÖ®¼ä£¬guest OSÓÖÊDZ˴˸ôÀëµÄ£¬ËùÒÔÊý¾Ý´«µÝÊÇÒ»¶¨¶¼Òª¾­ÓÉXenµÄ£©¡£µ«ÊÇÔÚ¸ü¸ß²ã´ÎµÄÎÊÌâÉÏ£¬ÀýÈçCPUÈçºÎ±»¹²Ïí»òÕ߸÷¸ödomainÄܹ»·¢ËÍÄÄÖÖÊý¾Ý°ü£¬Õâʱ¾Í²»ÐèÒª½«Xen°üÀ¨ÔÚÄÚÁË£¬ÉõÖÁ¶¼²»Óÿ¼ÂÇËü£¨//hypervisorÊÇʵÏÖ»úÖÆ£¬¶øÈçºÎ¹²ÏíCPUºÍÈçºÎ½øÐÐÈÎÎñ·Ö¹¤¶¼ÊDzßÂÔÎÊÌ⣩¡£

×îÖյõ½µÄ¼Ü¹¹ÊÇhypervisorÖ»ÊÇÌṩÄÇЩ×î»ù±¾µÄ¿ØÖƲÙ×÷¡£ÕâЩ²Ù×÷¾­ÓÉÒ»¸ö¿É·ÃÎʵĽӿڴӾ­¹ýÊÚȨµÄdomain´«À´£»¶øÄÇЩ¸´ÔӵIJßÂÔ¾ö²ß£¬±ÈÈçÐí¿É¿ØÖÆ£¨//²»ÖªµÀÕâ¸öÐí¿É¿ØÖÆÊÇ·ñºÍµÚ1²¿·ÖÀïÌáµ½µÄÊÇÒ»»ØÊ¶ù£©£¬¶¼×îºÃÓÉÔËÐÐÔÚguest OSÉϵĹÜÀíÈí¼þÖ´ÐУ¬¶ø²¢·ÇÔÚÓÐÌØÈ¨µÄhypervisor´úÂëÖУ¨//XenÖ»ÊÇÌṩ»úÖÆ£¬²»¸ºÔð²ßÂÔ£©¡£

Õû¸öϵͳ¼Ü¹¹ÖÐÓÐÒ»¸ö domainÊÇÔÚÒýµ¼£¨boot£©Ê±´´½¨µÄ¡£Õâ¸ödomain±»ÔÊÐíʹÓÿØÖƽӿڡ£Õâ¸ö³õʼµÄdomain£¬ÊõÓï³ÆÎªDomain 0£¬Ëü¸ºÔð²Ù¿ØÓ¦Óü¶µÄ¹ÜÀíÈí¼þ¡£¿ØÖƽӿھßÓд´½¨ºÍÖÕÖ¹ÆäËüdomainµÄÄÜÁ¦£¬»¹ÄÜ¿ØÖÆËüÃÇÏà¹ØµÄµ÷¶È²ÎÊý¡¢ÎïÀí´æ´¢·ÖÅäÒÔ¼°ËüÃǶԸø¶¨µÄÎïÀí´ÅÅ̺ÍÍøÂçÉ豸µÄ·ÃÎÊ¡£

³ýÁË´¦ÀíÆ÷ºÍ´æ´¢×ÊÔ´£¬¿ØÖƽӿڻ¹Ö§³ÖÐéÄâÍøÂç½Ó¿Ú£¨VIF£©ºÍ¿éÉ豸£¨VBD£ºÐéÄâ¿éÉ豸£©µÄ´´½¨ºÍɾ³ý¡£ÕâЩÐéÄâI/OÉ豸¾ßÓÐһЩºÍ·ÃÎÊ¿ØÖÆÏà¹ØµÄÐÅÏ¢¡£ÕâЩÐÅÏ¢¾ö¶¨ÁËÄĸödomainÄܹ»·ÃÎÊËüÃÇ£¬ÒÔ¼°·ÃÎÊʱÓÐÄÄÐ©Ô¼Êø£¨ÀýÈ磬һ¸öÖ»¶ÁµÄVBD¿ÉÒÔ±»´´½¨£¬Ò»¸öVIF¿ÉÒÔ¹ýÂËIP°üÒÔ·ÀÖ¹Ô´µØÖ·ÆÛÆ­£©¡£

Õâ¸ö¿ØÖƽӿڣ¬½áºÏ¶Ôϵͳµ±Ç°×´Ì¬½øÐÐµÄÆÊÎöͳ¼Æ£¬Æä½á¹ûÄܹ»±»Êä³öµ½Ò»Ì×ÔËÐÐÔÚ Domain 0ÉϵÄÓ¦Óü¶¹ÜÀíÈí¼þÉÏ¡£¸Ã¹ÜÀíÈí¼þ×÷Ϊ¹ÜÀí¹¤¾ßµÄ²¹³ä£¬Äܹ»¶ÔÕû¸ö·þÎñÆ÷½øÐз½±ãµØ¹ÜÀí£ºÀýÈ磬Äܹ»´´½¨ºÍÆÆ»µdomain£¬Éè¶¨ÍøÂç¹ýÂËÆ÷ºÍ·ÓɹæÔò£¬ÔÚÊý¾Ý°üºÍÊý¾ÝÁ÷Á½¸öÁ£¶ÈÉϼàÊÓÿ¸ödomainµÄÍøÂç»î¶¯£¬´´½¨ºÍɾ³ýÐéÄâÍøÂç½Ó¿ÚºÍÐéÄâ¿éÉ豸¡£ÎÒÃÇÆÚ´ý¿ª·¢³ö¸ß¼¶µÄ¹¤¾ßÀ´½øÒ»²½½«¹ÜÀí²ßÂÔµÄÓ¦ÓóÌÐò×Ô¶¯»¯£¨//ÕâÀïµÄ¹ÜÀí²ßÂÔºÍÇ°Ãæ½²µÄ¡°»úÖÆÓë²ßÂÔ·Ö¿ª¡±ÖеIJßÂÔ²»ÊÇÒ»»ØÊ¶ù°É£¿£©¡£


3. DETAILED DESIGN ¡ª ϸ½ÚÉè¼Æ

ÔÚÕâÒ»²¿·Ö£¬ÎÒÃǽéÉܹ¹³É»ùÓÚXenµÄ·þÎñÆ÷µÄ¸÷¸öÖ÷Òª×Ó²¿·ÖµÄÉè¼ÆÏ¸½Ú¡£ÔÚ¸÷¸öÉè¼ÆÖУ¬ÎÒÃǶÔXenºÍguest OSµÄ¹¦ÄÜ×÷ÁËÇå³þµÄ˵Ã÷¡£µ±Ç°µÄ¹ØÓÚguest OSµÄÌÖÂÛÖ÷Òª¼¯ÖÐÓÚXenoLinux£¬ÕâÖ÷ÒªÊÇÒòΪÕâ¸öguest OSÊÇĿǰ·¢Õ¹×î³ÉÊìµÄ£»µ«ÊÇÎÒÃǶÔÓÚµ±Ç°ÕýÔÚ½øÐÐÖеĶÔWindows XPºÍNetBSDµÄÒÆÖ²¹¤×÷Ò²ÊǺÜÓÐÐÅÐĵġ£ÎÒÃÇÏàÐÅXen¿ÉÒÔÖ§³Ö¶àÖÖ¶àÑùµÄguest OS¡£

3.1 ¿ØÖÆ´«µÝ£ºhypercallsºÍʼþ

ÓÐÁ½ÖÖ»úÖÆÓÃÓÚXenºÍÆäÉϵÄdomainÖ®¼ä½øÐпØÖƵĽ»»¥£ºÊ¹ÓÃhypercall²úÉú´Ódomainµ½XenµÄͬ²½µ÷Óã»Ê¹ÓÃÒ첽ʼþ»úÖÆÍê³É´ÓXenµ½domainµÄͨ¸æµÝ½»¡£

hypercall ½Ó¿ÚÔÊÐídomainͨ¹ýÖ´ÐÐÒ»¸öͬ²½ÈíÏÝÚåÏÝÈëµ½hypervisorÖ´ÐÐÒ»¸öÌØÈ¨²Ù×÷£¬ÕâÀàËÆÓÚÔÚ´«Í³µÄ²Ù×÷ϵͳÖжÔϵͳµ÷ÓõÄʹÓ᣾ÙÒ»¸öʹÓà hypercallµÄÀý×Ó£ºÒ»×éÒ³±í¸üеÄÇëÇó£¬Òª¾­¹ýXenÈ·Èϲ¢ÇÒÍê³ÉÏàÓ¦µÄ¸üвÙ×÷£¨//¸üÐÂÊÇÒªÓÉXenÈ·Èϲ¢Íê³ÉµÄ£¬ÐèÒªÌØÈ¨²Ù×÷£¬ËùÒÔÕâʱҪÀûÓÃhypercallÏÝÈëµ½hypervisorÖУ©£¬ÔÚ¸üÐÂÍê³ÉºóÔÙÓÉXen½«¿ØÖÆ·µ»Ø¸ø²úÉú±¾´Îµ÷ÓõÄdomain¡£

´ÓXen µ½domainµÄͨÐÅÊÇÓÉÒ»¸öÒ첽ʼþ»úÖÆÌṩµÄ¡£Õâ¸ö»úÖÆÈ¡´úÁ˳£ÓõÄÀûÓÃÉ豸Öжϵĵݽ»»úÖÆ£¬ËüÔÊÐíÄÇÐ©ÖØÒªÊ¼þ£¨Èçdomain- termination request£©²ÉÓÃÇáÁ¿¼¶µÄͨ¸æÐÎʽ¡£ºÍ´«Í³µÄUnixÐźÅÀàËÆ£¬ÕâÐ©ÖØÒªÊ¼þµÄ¸öÊý±È½ÏÉÙ£¬µ«Ã¿Ò»¸ö¶¼ÓÃ×÷Õë¶ÔÄ³Ò»ÌØ¶¨ÀàÐÍʼþµÄ±ê¼Ç¡£ÀýÈ磬ÓÃÓÚÔÚÍøÂçÉÏÖ¸³öеÄÊý¾ÝÒѾ­±»½ÓÊÕµ½µÄʼþ£¬»òÕß±íʾһ¸öÐéÄâ´ÅÅÌÇëÇóÒѾ­Íê³ÉµÄʼþ¡£

ÄÇЩδ¾öµÄʼþ´æ·ÅÔÚÿ¸ödomainµÄ bitmask£¨//Ò»¸öרÃŵÄÊý¾Ý½á¹¹£©ÖС£bitmaskµÄ¸üÐÂÒªÓÉXenÔÚµ÷ÓÃÒ»¸öºÍguest OSÏàÓ¦µÄʼþµ÷Ó÷µ»Ø¾ä±ú֮ǰÍê³É£¨//XenÕë¶ÔijÀàʼþÒªÏòÉÏ·¢Í¨¸æ£¬Èç¹ûXenµ÷ÓÃÁËguest OSÏàÓ¦µÄʼþµ÷Ó÷µ»Ø¾ä±ú£¬¾Í˵Ã÷¸ÃʼþÍê³ÉÁË£¬ÏÂÃæÒª°Ñ¿ØÖƽ»»Ø¸ødomain£¬ËùÒÔ±ØÈ»ÒªÔÚµ÷ÓÃʼþµ÷Ó÷µ»Ø¾ä±ú֮ǰÓÉXen½«bitmask¸üУ©¡£µ÷Ó÷µ»Ø¾ä±ú¸ºÔðÖØÐÂÉèÖÃδ¾öʼþ¼¯ºÏ£¨//µ÷Ó÷µ»Ø¾ä±úÈÔ¾ÉÊÇÓÉXen²Ù×÷£¬¸üÐÂbitmask£©£¬Í¬Ê±ÒÔÏàÓ¦µÄÐÐΪºÍͨ¸æÏàºôÓ¦¡£Ò»¸ö domain¿ÉÒÔͨ¹ýÉèÖÃÒ»¸öXen¿É¶ÁµÄÈí¼þ±ê¼ÇÀ´ÏÔʽµØÍƳٶÔʼþ²Ù×÷£ºÕâÒ»µãÊÇÓëÔÚÕæÊµµÄ´¦ÀíÆ÷ÖнûÖ¹ÖжϵĹý³ÌÀàËÆµÄ¡£

3.2 Êý¾Ý´«µÝ£ºI/O»·

hypervisorµÄ´æÔÚÒâζ×ÅÔÚguest OSºÍI/OÉ豸֮¼äÓÐÒ»¸ö¶îÍâµÄ±£»¤Óò£¬ËùÒÔÊý¾ÝµÄ´«µÝ»úÖÆ¾Í±äµÃÖÁ¹ØÖØÒª¡£Êý¾Ý´«µÝ»úÖÆÊ¹µÃÊý¾ÝÄܹ»ÔÚϵͳÖÐÑØ×ÅÊúÖ±·½ÏòÒÆ¶¯£¬Í¬Ê±¾ßÓо¡Á¿Ð¡µÄ¿ªÏú¡£

ÓÐÁ½¸öÖ÷Òª·½Ãæ¹¹³ÉÁËÎÒÃǶÔI/O´«µÝ»úÖÆµÄÉè¼Æ£º×ÊÔ´¹ÜÀíºÍʼþͨ¸æ¡£ÎªÁË×öµ½resource accountability£¬ÎÒÃÇÔÚ½ÓÊÕµ½Ò»¸öÀ´×ÔÉ豸µÄÖжϺó£¬Òª¾¡Á¿¼õÉÙÔÚ½«¶à·Êý¾Ý·Ö½â£¨//demultiplex data£º·Ö½â¶à·Êý¾Ý£¬Êý¾Ý×ÔÓ²¼þÉ豸´«À´£¬ÐèÒª´«µÝ¸ø¸÷¸öÖ¸¶¨µÄdomainÖеÄguest OSÖÐÖ´ÐУ¬ÕâÀï¾Í´æÔÚÒ»¸ö¶à·ѡÔñµÄÎÊÌâÀ´È·¶¨¾¿¾¹°ÑÊý¾Ý´«¸øÄĸödomain£»Ò»µ©È·¶¨ÁËÊý¾ÝÊÇ´«¸øÄĸödomainµÄ£¬Ò²¾Í˵Ã÷ÁË´ËʱÊÇÄĸö domainÔÚʹÓÃÏà¹ØÉ豸£¬×öµ½ÁËresource accountability£©µ½Ò»¸öÌØ¶¨µÄdomainÖÐËù×öµÄ¹¤×÷ ¡ª

¹ÜÀí»º³åÇø´øÀ´µÄ¿ªÏúÊÇÔÚ¼ÆËãÈÎÎñ·ÖÅ䏸ÏàÓ¦µÄdomainºó²úÉúµÄ£¨//ÈÎÎñ·Ö¸ødomainºó£¬domain²Å¿ªÊ¼¶ÔÈÎÎñÊý¾ÝËù´¦µÄÄDz¿·Ö»º³åÇø½øÐйÜÀí£¬¶ø²¢·ÇÓÃÆäËüµÄ»úÖÆ¶ÔÕû¸ö»º³åÇøÍ³Ò»¹ÜÀí£¬ÄÇÑù»áÔö¼Ó¸´ÔÓÐÔ£¬¶øÇÒȱ·¦±£ÕÏ£©¡£ÀàËÆµÄ£¬É豸I/OµÄ·Ã´æ²Ù×÷Ò²ÊÇÓÉÏàÓ¦µÄdomainÌṩµÄ£¬Õâô×ö¿ÉÒÔ·ÀÖ¹ÓÉÓÚ¹²Ïí»º³å³Øµ¼ÖµÄÏ໥¼äµÄ¸ÉÈÅ£¨//Èç¹ûI/OÄܹ»Ö±½Ó·Ã´æ¶ø²»¾­¹ýdomain¹ÜÀíµÄ»°£¬¾Í»á²úÉú»ìÂÒ£¬±ÈÈç²»Çå³þI/O²Ù×÷´æÈ¡µ½µÄÊý¾ÝÊÇÊôÓÚÄĸödomainµÄ£©£»I/O»º³åÔÚÊý¾Ý´«µÝ¹ý³ÌÖÐͨ¹ýXenÄÚ²¿°ó¶¨£¨pin£©µ½µ×²ãÒ³¿òÉÏÃæµÄ·½·¨À´»ñµÃ±£»¤¡£

I/OÃèÊö·û»·ÊÇÒ»¸öÑ­»·¶ÓÁУ¬ËüÓÉdomain·ÖÅɵÄÃèÊö·û×é³É£¬¿ÉÒÔ´ÓXenÄÚ²¿·ÃÎʵ½¡£ÃèÊö·ûÖв¢²»Ö±½Ó°üº¬ÓÐI/OÊý¾Ý£»È¡¶ø´úÖ®µÄÊÇ£¬I/OÊý¾Ý»º³å±» guest OSÔÚ´ø¿íÍâ·ÖÅäÔÙ¼ä½ÓµØÓÉI/OÃèÊö·ûÒýÓã¨//I/OÃèÊö·û»·µÄÈÝÁ¿ÊÇÓÐÏ޵ģ¬ËùÒÔI/OÊý¾ÝÒªÏȽøÐзÖÅ䣬ÔÙ×öÏòI/OÃèÊö·û»·ÉϵÄÓ³É䣻Ëùν out-of-band£º´ø¿íÍ⣬¾ÍÊÇÔÚ·ÖÅäÊý¾Ýʱ¿ÉÒÔ³¬³öI/OÃèÊö·û»·µÄÏÞÖÆ£©¡£Ã¿´Î»··ÃÎʶ¼Òª»ùÓÚÁ½¶ÔÉú²úÕß-Ïû·ÑÕßÖ¸Õ룺domainͨ¹ýÍÆ½øÇëÇóÉú²úÕßÖ¸Õ뽫һ¸öÇëÇó·ÅÖÃÔÚ»·ÉÏ£»Xen´¦ÀíÕâЩÇëÇó£¬ÍƽøÒ»¸öÏà¹ØµÄÇëÇóÏû·ÑÕßÖ¸Õë¡£ÏìÓ¦±»·Å»ØÔÚ»·ÉÏÒ²ÊÇÀàËÆµÄ£¬Ö»ÊÇÓÉXen×÷ΪÉú²úÕߣ¬ guest OS×÷ΪÏû·ÑÕß¡£ÕâÀïÊDz»ÒªÇóÇëÇóÊDZ»°´Ë³Ðò±»´¦ÀíµÄ£ºguest OS¸øÃ¿¸öÇëÇó¶¼½¨Á¢ÁËÒ»¸öΨһµÄÏà¹Ø±êʶ·û£¬Õâ¸ö±êʶ·û»áÔÚÏà¹ØµÄÏìÓ¦Éϱ»¸´ÖÆ£¨//ÃèÊö·û»·Ö»ÊÇÏÞ¶¨ÁËÄܹ»´¦ÀíÇëÇóµÄ¹æÄ££¬²¢²»¹æ¶¨´¦Àí˳Ðò£¬Ë­Ïȱ»´¦ÀíË­ºó±»´¦ÀíÊÇÔÚ½«Êý¾ÝÓ³Éäµ½ÃèÊö·û»·ÉϵÄʱºò¾ö¶¨µÄ£©¡£Õâ¾ÍÔÊÐíXen³öÓÚµ÷¶ÈºÍÓÅÏȼ¶µÄ¿¼ÂÇ£¬ÖØÐÂÅŶ¨I/O²Ù×÷µÄ˳Ðò¡£

Õâ¸ö½á¹¹ÊÇͨÓõģ¬×ãÒÔÖ§³ÖºÜ¶à²»Í¬µÄÉ豸·¶Àý¡£ÀýÈ磬Èç¹ûÒ»×é¡°ÇëÇó¡±ÒªÎªÍøÂçÊý¾Ý°üµÄ½ÓÊÕÌṩ»º³å£¬ÄÇôÏàÓ¦µÄºóÐø¡°ÏìÓ¦¡±¾ÍÊÇÊý¾Ý°üÒѾ­µ½´ï»º³åÇøµÄÐźš£ÖØÐÂÅÅÐòÔÚ´¦Àí´ÅÅÌÇëÇóʱÊǺÜÓÐÓõģ¨//±ÈÈçÁ½¸ödomainÇëÇó¶¼Òª¶Áͬһ¿éÊý¾Ý£¬ÄÇô¾Í¿ÉÒÔ°ÑÕâÁ½¸öÇëÇóµÄ´¦Àí·Åµ½Ò»ÆðÍê³É£¬Ìá¸ßЧÂÊ£©£¬ËüÔÊÐíËüÃÇÔÚXenÄÚ²¿±»µ÷¶ÈÒÔÌá¸ßЧÂÊ£»Ê¹Óôø¿íÍ⻺³åµÄÃèÊö·ûʹµÃÄܹ»ÈÝÒ×µØÊµÏÖÁã¸´ÖÆ´«Ê䣨//¼õÉÙÁËÊý¾Ý¿½±´£¬Èç¹û²»ÓÃÃèÊö·ûµÄ»°£¬ÄÇô¾ÍÎñ±ØÒª½«»º³åÇøµÄÊý¾ÝÄÚÈÝÔÚI/O»·ÖнøÐи´ÖÆ£¬¶øÏÖÔÚ×öµÄÖ»ÊÇÓ³Éä²Ù×÷£¬¼´Áã¸´ÖÆ£©¡£

ÎÒÃǽ«ÇëÇóºÍÏìÓ¦µÄ²úÉúºÍÆäËüµÄͨ¸æ·Ö¿ª£ºÔÚÇëÇóµÄÇé¿öÏ£¬Ò»¸ödomain¿ÉÒÔÔÚµ÷ÓÃÒ»¸öhypercallÏÝÈëXen֮ǰ½«¶à¸öÏîÅÅÈë¶ÓÁУ»ÔÚÏìÓ¦µÄÇé¿öÏ£¬Ò»¸ödomainÄܹ»Í¨¹ý»®¶¨Ò»¸öÏàÓ¦µÄ·§ÖµÀ´ÍƳÙͨ¸æÊ¼þµÄµÝ½»¡£ÕâʹµÃÿ¸ödomainÄܹ»È¨ºâÑÓ³ÙºÍÍÌÍÂÁ¿µÄÐèÇó£¬ÀàËÆÔÚArseNIC¼ª±ÈÌØÒÔÌ«Íø½Ó¿ÚµÄflow-aware£¨//Á÷ÓÅ»¯£¿£©µÄÖжϷÖÅÉ[34]¡£

3.3 ×ÓϵͳÐéÄ⻯

ǰÎÄÃèÊöµÄ¿ØÖƺÍÊý¾Ý´«µÝ»úÖÆ±»Ê¹ÓÃÔÚÎÒÃǶԸ÷¸ö×ÓϵͳµÄÐéÄ⻯ʵÏÖÖС£ÔÚÏÂÃæ£¬ÎÒÃÇÌÖÂÛÈçºÎ»ñµÃ¶ÔCPU£¬¶¨Ê±Æ÷£¬ÄÚ´æ£¬ÍøÂçºÍ´ÅÅ̵ÄÐéÄ⻯¡£

3.3.1CPUµ÷¶È

Xen µ±Ç°¶ÔdomainµÄµ÷¶È²ÉÓõÄÊÇBorrowed Virtual Time£¨BVT£©µ÷¶ÈËã·¨[11]¡£ÎÒÃÇÖ®ËùÒÔÑ¡ÔñÕâ¸öÌØ±ðµÄËã·¨ÊÇÒòΪËüÊǹ¤×÷±£ÑøÐ͵ģ¬Í¬Ê±»¹¾ßÓÐÌØÊâµÄ»úÖÆÊ¹µÃËüÄܹ»ÔÚ½ÓÊÕµ½Ò»¸öʼþʱ¿ÉÒÔµÍÑӳٵػ½ÐÑ£¨»òÕß˵·ÖÅÉ£©Ò»¸ödomain¡£¿ìËٵķÖÅÉ£¨//dispatch£¬¾ÍÊÇÀàËÆÇ°ÃæËµµÄdemultiplex data£©¶ÔÓÚ¼õÉÙÐéÄ⻯¶ÔÄÇЩ¶Ôʱ¼äÃô¸ÐµÄ²Ù×÷ϵͳ×ÓϵͳÔì³ÉµÄÓ°ÏìÊÇÓÈÆäÖØÒªµÄ£¨//·ÖÅÉÔ½¿ìËÙ£¬Ê¼þ¾ÍÔ½Äܼ°Ê±µ½´ï²Ù×÷ϵͳ£©£»ÀýÈ磬TCPÒªÒÀÀµÓÚÈ·ÈÏÐÅÏ¢µÄ¼°Ê±µÝ½»ÒÔÕýÈ·µØ¹À²âÔÚÍøÂçÉÏÍù·µËùÓõÄʱ¼ä£¨//Èç¹ûÈ·ÈÏÐÅϢûÓм°Ê±µ½´ï£¬ÄÇôʱ¼ä¹À²â¾ÍÓÐÎÊÌâÁË£©¡£BVT provides low-latency dispatch by using virtual-time warping, a mechanism which temporarily violates `ideal' fair sharing to favor recently-woken domains£¨//²»ºÜÃ÷°×BVTËã·¨µÄʵÏÖ£©¡£µ±È»£¬ÆäËüµ÷¶ÈËã·¨Ò²Äܹ»ÔÚÎÒÃǵÄͨÓõ÷¶ÈÆ÷³éÏóÉÏʵÏÖ¡£Ã¿¸ödomainµÄµ÷¶È²ÎÊý¿ÉÒÔÓÉÔËÐÐÔÚ Domain 0µÄ¹ÜÀíÈí¼þ½øÐе÷Õû¡£

3.3.2 ʱ¼äºÍ¶¨Ê±Æ÷

XenΪÿ¸öguest OSÌṩÁËÕæÊµÊ±¼ä£¬ÐéÄâʱ¼äºÍ¹ÒÖÓʱ¼ä£¨wall-clock time£©µÈÈý¸ö¸ÅÄî¡£ÕæÊµÊ±¼äÊÇÒÔÄÉÃëΪµ¥Î»¸ø³öµÄ£¬ÊÇ´Ó»úÆ÷Òýµ¼ÆðÀ´¿ªÊ¼¼ÆËãµÄʱ¼ä£¬Ëü¼Ç¼µÄÊǾ«È·µÄ´¦ÀíÆ÷Ö´ÐеÄʱÖÓÖÜÆÚÊý£¬Ê±ÖÓÖÜÆÚÄܹ»±»ÍⲿʱÖÓÔ´ËøÆµ£¨ÀýÈ磬ͨ¹ýNTPʱ¼ä·þÎñ£©¡£domainµÄÐéÄâʱ¼äÖ»ÊÇÔÚËüÔËÐеÄʱºò²Å»á±»¼ÇÈ룺ÕâÖ÷Òª¹©guest OSµÄµ÷¶ÈÆ÷ʹÓÃÀ´È·±£guest OSÉϵÄÓ¦Óýø³ÌÄܹ»ÕýÈ·µØ¹²Ïíʱ¼äƬ¡£×îºó£¬¹ÒÖÓʱ¼äÊÇÒ»¸öÆ«ÒÆ£¬ÓÃÓÚ¼Óµ½µ±Ç°µÄÕæÊµÊ±¼äÉÏ¡£¹ÒÖÓʱ¼äÄܹ»±»µ÷Õû£¨//±ÈÈçÔÚ¸÷¸öguest OSÖеÄʱ¼ä¿ÉÒÔ²»Í¬£¬ÓеÄÊÇÉÏÎç¾Åµã£¬ÓеÄÊÇÏÂÎçÈýµã£¬¸ÄµÄ¾ÍÊÇÕâ¸öÖµ£©£¬Í¬Ê±²»»áÓ°ÏìÕæÊµÊ±¼äµÄÁ÷ÊÅ¡£

ÿһ¸öguest OSÄܹ»¶ÔÒ»¶Ô¾¯ÖÓ¶¨Ê±Æ÷½øÐбà³Ì£¬Ò»¸öÓÃÓÚÕæÊµÊ±¼ä£¬ÁíÒ»¸öÓÃÓÚÐéÄâʱ¼ä¡£guest OSÄܹ»Î¬»¤ÄÚ²¿µÄ¶¨Ê±Æ÷¶ÓÁУ¨//ºÜ¶àÓ¦ÓóÌÐò¶¼Óж¨Ê±ÐèÇó£¬ÕæÊµµÄ»òÕßÐéÄâµÄ£¬ÌرðÊÇÍøÂçÓ¦Óã»guest OSÒª¶ÔÕâЩ¶¨Ê±ÐèÇóÅŶÓÒÔÈ·¶¨Ë­µÄʱ¼äÒªÇó×î½ôÆÈ£¬È»ºó¾Í¾¡Á¿ÒÀ´ÎÂú×ãËüÃÇ£»Ö»ÒªÓÐÒ»¸ö¶¨Ê±ÐèÇóû±»Âú×㣬¼´³¬Ê±ÁË£¬ÄÇôϵͳ¾Í²úÉúÒì³££©²¢Ê¹ÓÃXen ÌṩµÄ¾¯ÖÓ¶¨Ê±Æ÷À´´¥·¢×îÔçµÄ³¬Ê±¡£³¬Ê±Ê¼þ½«»áʹÓÃXenʼþ»úÖÆÀ´µÝ½»¡£

3.3.3ÐéÄâµØÖ·×ª»»

ºÍÆäËü×ÓϵͳһÑù£¬XenҲŬÁ¦ÒÔ¾¡¿ÉÄÜСµÄ¿ªÏúʵÏÖ´æ´¢·ÃÎʵÄÐéÄ⻯¡£ÕýÈç2.1.1ÖÐÌÖÂ۵ģ¬ÓÉÓÚx86¼Ü¹¹Ê¹ÓõÄÊÇÓ²¼þÒ³±í£¬Òò´Ë´ïµ½Õâ¸öÄ¿±êÓÐЩÄѶȡ£ VMwareÖÐʹÓõķ½·¨ÊÇΪÿ¸öguest OSÌṩÐéÄâµÄÒ³±í£¬Õâ¸öÒ³±í¶ÔÓÚ´æ´¢¹ÜÀíµ¥Ôª£¨MMU£©ÊDz»¿É¼ûµÄ[10]¡£È»ºóÓÉhypervisor¸ºÔðÏÝÈë¶ÔÐéÄâÒ³±íµÄ·ÃÎÊ£¬È·ÈϸüУ¬ÔÙ½«ÕâЩ¸Ä±ä´«²¥µ½ÐéÄâÒ³±íºÍMMU¿É¼ûµÄ¡°Ó°×Ó¡±Ò³±í£¨//¡°Ó°×Ó¡±Ò³±íÔÚµÚ2²¿·ÖÌáµ½¹ý£©¡£Õâ´ó´óÔö¼ÓÁËÕâ¸öguest

OS²Ù×÷µÄ´ú¼Û£¬±ÈÈç´´½¨Ò»¸öеÄÐéÄâµØÖ·¿Õ¼ä£¬ÐèÒª¶Ô¡°·ÃÎʹýµÄ¡±ºÍ¡°ÔàµÄ¡±±ÈÌØÎ»ÉϵÄÓ²¼þ¸üнøÐÐÏÔʽµØ´«²¥¡£

Ö®ËùÒÔÍêÈ«ÐéÄ⻯ҪǿÆÈʹÓÃÓ°×ÓÒ³±í£¬ÊÇÒòΪËüÒª¸ø³öÁ¬ÐøµÄÎïÀíÄÚ´æµÄ¼ÙÏ󣬶øXen¾Í²»¾ÐÄàÓÚ´Ë¡£Êµ¼ÊÉÏ£¬XenÖ»ÐèÒª¿¼ÂǶÔÒ³±íµÄ¸üУ¬À´·ÀÖ¹ guest OSµ¼Ö²»¿É½ÓÊܵĸı䡣Òò´ËÎÒÃDZÜÃâÁ˺ÍʹÓÃÓ°×ÓÒ³±íÏà¹ØµÄ¿ªÏúºÍ¶îÍâµÄ¸´ÔÓ¶È ¡ª XenÖеķ½·¨ÊÇÖ±½ÓµØÓÉMMU¼Ç¼guest OSµÄÒ³±í£¬²¢ÇÒÏÞ֯סguest OSÖ»ÄÜ×ö¶Á·ÃÎÊ¡£Ò³±í¸üÐÂͨ¹ýhypercall´«µÝ¸øXen£»¸üÐÂÇëÇóÔÚ±»²ÉÄÉÒÔǰ¾­¹ýÈ·ÈÏ£¬Õâô×ö¾ÍÈ·±£Á˰²È«ÐÔ¡£

ΪÁËÓÐÖúÓÚÈ·ÈÏ£¬ÎÒÃǸø»úÆ÷µÄÿ¸öÒ³¿ò¶¼½¨Á¢ÁËÒ»¸öÏà¹ØµÄÀàÐͺÍÒýÓÃÊý¡£Ò»¸öÒ³¿òÔÚÈκÎʱºò¶¼»áÅÅËüµØ¾ßÓÐÏÂÊöµÄijһ¸öÀàÐÍ£ºÒ³Ä¿Â¼£¨PD£©£¬Ò³±í£¨PT£©£¬¾Ö²¿ÃèÊö·û±í£¨LDT£©£¬È«¾ÖÃèÊö·û±í£¨GDT£©¡£Í¬Ê±£¬Õâ¸öÒ³¿ò»¹¿ÉÄÜÊÇ¿Éд£¨RW£©µÄÀàÐÍ¡£Ò»¸öguest OS¿ÉÒÔΪËü×Ô¼ºËùÊôµÄÒ³¿ò´´½¨¿É¶ÁµÄÓ³É䣬¶ø²»±ØÀí»áÒ³¿òµÄµ±Ç°ÀàÐÍ¡£Ò»¸öÒ³¿òÖ»ÓÐÔÚËüµÄÒýÓÃÊýΪ0µÄʱºò£¬²ÅÄܱ»°²È«µØÖØÐ·ÖÅ䏸ÆäËüÈÎÎñʹÓá£Õâ¸ö»úÖÆ±»ÓÃÓÚÂú×ãϵͳ¶Ô°²È«ÐÔÒ»¹áµÄÐèÇó£»ÀýÈ磬һ¸ödomain²»Äܹ»ÈÎÒâµØ¶ÔÒ³±íµÄij¸ö²¿·Ö½¨Á¢¿ÉдµÄÓ³É䣬Èç¹ûÒªÕâô×öµÄ»°¾Í±ØÐëÒªÇóÒ³¿òͬʱ¾ßÓÐ PTºÍRWÀàÐÍ£¨//ʲôÇé¿öÏÂÊǿɶÁµÄÓ³É䣿ʲôÇé¿öÏÂÓÖÊÇ¿ÉдµÄÓ³ÉäÄØ£¿£©¡£

ÀàÐÍϵͳ»¹Òª±»ÓÃÓÚ¸ú×ÙÄÇЩÓÃÓÚÒ³±íµÄÒ³¿òÖÐÄÄЩÊÇÒѾ­±»È·ÈϹýµÄ£¨//Ò³¿òÓÃÓÚÒ³±í£¬¼´Ò³ÄÚÈÝÌîÈëÒ³¿ò£©¡£Õâʱ£¬guest OSÒªÖ¸³öÒ³¿òÊÇ·ñ±»·ÖÅäÓÃ×÷Ò³±í ¡ª Õâ¾ÍÐèÒªÔÚÒ³¿òµÄÀàÐͱ»¶¨ÎªPD»òÕßPTºó£¨//˵Ã÷Ò³¿òÊÇÓÃÓÚÒ³±íµÄ£©£¬ÓÉXen¶ÔÒ³¿òÖеÄÿһÏî×öÒ»´ÎÐÔµØÈ·ÈÏ£¬Ö±ÖÁºóÀ´ÓÉguest OS·¢³öÊÍ·Å£¨unpin£©µÄÇëÇó£¨//ÓÉguest OSÊÍ·ÅÒ³¿ò£©¡£ÕâÔڸıäÒ³±í»ùÖ¸ÕëµÄʱºòÊǺÜÓÐÓõģ¬ÒòΪËü²»ÐèÒªÔÚÿһ´ÎÉÏÏÂÎÄÇл»Ê±¶¼¶ÔÐÂÒ³±í½øÐÐÈ·ÈÏ£¨//ÒòΪÏÖÔÚֻȷÈÏÒ³¿òÁË£©¡£×¢Ò⣬һ¸öÒ³¿òÔÚ±»ÊͷŲ¢ÇÒÒýÓÃÊýΪ0֮ǰÊDz»Äܹ»±»ÖØÐ·ÖÅ䏸ÆäËüÈÎÎñµÄ£¬ÕâÑù¾Í±ÜÃâÁËguest OS¿ÉÄÜ»áÈÆ¿ªÒýÓÃÊý»úÖÆ¶øÖ±½ÓÀûÓÃÊÍ·ÅÇëÇóµ¼ÖµÄΣÏÕ¡£

ΪÁ˼õÉÙËùÐèµÄhypercallµ÷ÓõĴÎÊý£¬guest OSÄܹ»ÔÚÀûÓÃÒ»¸öhypercall½øÐÐÕûÅú´¦Àí֮ǰÔÚ¾Ö²¿½«¸üÐÂÅÅÈëÒ»¸ö¶ÓÁС£ÌرðÊÇÔÚ´´½¨ÐµĵØÖ·¿Õ¼äµÄʱºò£¬ÕâÒ»µãÊÇÓÈÆäÓкô¦µÄ¡£µ«ÊÇÎÞÂÛÔõÑù£¬ÎÒÃDZØÐëÈ·±£¸üб»Ìá½»µÃ×ã¹»ÔçÒÔ±£Ö¤×¼È·ÐÔ¡£ÐÒÔ˵ÄÊÇ£¬Ò»¸öguest OSÔÚµÚÒ»´ÎʹÓÃÒ»¸öеÄÓ³ÉäǰҪִÐÐÒ»´ÎTLBˢУºÕâÈ·±£ÁËÈκα»»º´æµÄ¸Ä±ä£¨//ÕâЩ¸Ä±äĿǰ½ö´æÓÚTLBÖУ¬»¹Ã»Óб»Ð´ÈëÄÚ´æÒ³±íÏ¶¼ÊÇûÓо­¹ýÈ·Èϵġ£Òò´Ë£¬ÔÚTLB?**?ǰÁ¢¼´Ìá½»ÄÇЩ´ý´¦ÀíµÄ¸üоͿÉÒÔÂú×ãÕýÈ·ÐÔ£¨//¸üеÄʱ¼ä£¬½â¾öÁËʲôʱºò½øÐгÉÅú¸üвÙ×÷ÒÔ±£Ö¤ÕýÈ·ÐÔµÄÎÊÌ⣩¡£¿ÉÊÇ£¬ÓÐһЩguest OS»áÔÚTLBÖÐûÓг¾ɱíÏî´æÔÚ£¨//ûÓг¾ɱíÏîÒâζןüж¼ÒѾ­ËÍ´ïÄÚ´æÖУ¿£©µÄʱºòÊ¡ÂÔµôÕâ¸öˢеIJ½Öè¡£ÔÚÕâÖÖÇé¿öÏ£¬¾ÍÓпÉÄÜ·¢ÉúµÚÒ»´ÎÊÔͼʹÓÃеÄÓ³Éäʱ»á·¢Éúȱҳ´íÎó£¨//ÒòΪûÓÐË¢ÐÂTLB£©¡£ Õâʱ£¬guest OS´íÎó¾ä±ú¾Í±ØÐëÒªºË²éÊÇ·ñÐèÒª¸üУ»Èç¹ûÐèÒªµÄ»°£¬TLB¾ÍÒª±»Ë¢Ð£¨//¼ÓÈëËùȱµÄÄÚÈÝ£©£¬²¢ÇÒ½«µ¼Ö¸ղÅȱҳ´íÎóµÄÖ¸Áî?**´ÐС?

3.3.4ÎïÀíÄÚ´æ

Ϊ¸÷¸ödomain½øÐеijõʼµÄÄÚ´æ·ÖÅ䣬»òÕß˵ÄÚ´æ±£Áô£¬¶¼ÊÇÔÚdomain±»´´½¨µÄʱºò½øÐеģ»Òò´Ë£¬ÄÚ´æÔÚdomainÖ®¼äÊǾ²Ì¬»®·ÖµÄ£¬Õâ¾ÍÌṩÁËÇ¿´óµÄ¸ôÀëÐÔ¡£×î´óÔÊÐíµÄÄÚ´æ±£ÁôÁ¿ÊDZ»¹æ¶¨Á˵ģºÈç¹ûij¸ödomainÖеÄÄÚ´æÑ¹Á¦Ôö¼ÓÁË£¬ÄÇôËü¾Í¿ÉÒÔ´ÓXenÕùÈ¡¶îÍâµÄÄÚ´æÒ³£¬Ö±µ½´ïµ½¹æ¶¨±£ÁôÁ¿µÄÉÏÏÞ¡£·´¹ýÀ´£¬Èç¹ûÒ»¸ödomainÏ£Íû½ÚʡЩ×ÊÔ´£¬±ÜÃâ²»±ØÒªµÄ¿ªÏú£¬ËüÒ²Äܹ»Í¨¹ýÊÍ·ÅÄÚ´æÒ³¸øXenÀ´¼õÉÙËüµÄÄÚ´æ±£ÁôÁ¿¡£

XenoLinux ʵÏÖÁËÒ»¸öÆøÇòÇý¶¯ [42]£¨//û¿´Ïà¹ØÎÄÏ×£©£¬ËüÄܹ»Í¨¹ýÔÚXenºÍXenoLinuxµÄÒ³Ãæ·ÖÅäÆ÷Ö®¼ä´«µÝÄÚ´æÒ³À´µ÷ÕûdomainµÄÄÚ´æÊ¹Óá£ËäÈ»ÎÒÃÇÄܹ»Ö±½ÓÐÞ¸Ä LinuxµÄÄÚ´æ¹ÜÀíÀý³Ì£¬µ«ÊÇÆøÇòÇý¶¯Äܹ»ÀûÓÃÏÖÓеIJÙ×÷ϵͳ¹¦ÄÜÀ´½øÐе÷Õû£¬Òò´Ë¼ò»¯ÁËLinuxµÄÒÆÖ²¹¤×÷¡£ÎÞÂÛÔõÑù£¬×¼ÐéÄ⻯Äܹ»±»ÓÃÓÚÀ©Õ¹ÆøÇòÇý¶¯µÄÄÜÁ¦¡£ÀýÈ磬guest OSÖеÄÄÚ´æÔ½½ç´¦Àí»úÖÆÄܹ»±»ÐÞ¸ÄΪͨ¹ýÏòXenÇëÇó¸ü¶àµÄÄÚ´æÒ³À´×Ô¶¯µØ¼õÇáÄÚ´æÑ¹Á¦¡£

´ó²¿·Ö²Ù×÷ϵͳ¶¼¼Ù¶¨ÄÚ´æ¿Õ¼äÊÇÓÉ´óÁ¿µÄ½Ï´ó¹æÄ£µÄÁ¬ÐøÇøÓò×é³ÉµÄ¡£ÓÉÓÚXen²¢²»±£Ö¤ËüΪguest OS·ÖÅäµÄÄÚ´æÇøÓòÊÇÁ¬ÐøµÄ£¬ËùÒÔguest OSÐèҪΪËüÃÇ×Ô¼º´´½¨Á¬ÐøµÄÎïÀíÄÚ´æµÄ¼ÙÏ󣬼´Ê¹ËüÃÇʵ¼ÊÔڵײã·ÖÅäµ½µÄÓ²¼þÄÚ´æÊÇÏ¡ÊèµÄ¡£guest OSͨ¹ý¼òµ¥µØÎ¬»¤Ò»¸öÒÔʵ¼Ê·ÖµÃµÄÒ³¿òºÅΪË÷ÒýµÄÊý×飬À´ÍêÈ«¸ºÔð´Óʵ¼Ê·ÖµÃµÄµØÖ·£¨physical£©µ½Ó²¼þµØÖ·µÄÓ³Éä¡£XenÌṩÁËÒ»¸ö¹²ÏíµÄµØÖ·×ª»»Êý×飬Õâ¸öÊý×éÓÃÓÚÖ§³Ö´ÓÓ²¼þµØÖ·µ½¸÷¸ödomainʵ¼Ê·ÖµÃµØÖ·µÄÓ³É䣬ËüÊÇËùÓеÄdomain¶¼¿É¶ÁµÄ ¡ª ¸üÐÂÕâ¸öÊý×éÊǾ­¹ýXenÈ·Èϵģ¬ÒÔÈ·±£guest OSÄܹ»ÓµÓÐÏàÓ¦µÄÓ²¼þÒ³¿ò¡£

¼´Ê¹Ò»¸öguest OSÔÚ´ó¶àÊýÇé¿öÏÂÑ¡ÔñÁ˺öÂÔÓ²¼þµØÖ·£¨//ÒòΪguest OSϲ»¶ÔÚÁ¬ÐøµÄµØÖ·¿Õ¼äÉÏÔËÐУ©£¬µ«ÊÇÔÚËü·ÃÎÊËüËùÓµÓеÄÒ³±íµÄʱºò£¨Õâʱ±ØÐëʹÓÃÓ²¼þµØÖ·£©±ØÐëʹÓÃת»»±í¡£Ó²¼þµØÖ·Ò²¿ÉÒÔ±©Â¶¸ø²Ù×÷ϵͳ´æ´¢¹ÜÀíϵͳÖеÄÓÐÏÞµÄijЩ²¿·ÖÒÔÓÅ»¯´æ´¢·ÃÎÊ£¨//¾ßÌåÊÇÄÄЩ²¿·Ö¿ÉÒÔÖ±½Ó¡°¿´µ½¡±Ó²¼þµØÖ·ÄØ£¿£©¡£ÀýÈ磬һ¸öguest OS¿ÉÒÔ·ÖÅäÌØ¶¨µÄÓ²¼þÒ³ÓÃÓÚÓÅ»¯ÒÔʵ¼Ê·ÖµÃµØÖ·ÎªË÷ÒýµÄ»º´æÖеIJ¼¾Ö£¬»òÕßʹÓ󬼶ҳ½«Ó²¼þÄÚ´æÖеÄÁ¬Ðø²¿·Ö×÷×ÔÈ»¶ÔÆëµÄÓ³Éä¡£

3.3.5ÍøÂç

Xen ÌṩÁËÐéÄâ·À»ðǽ¡ªÂ·ÓÉÆ÷£¨VFR£©µÄ³éÏó£¬Ã¿¸ödomain¶¼ÓÐÒ»¸ö»ò¶à¸öÔÚÂß¼­Éϸ½ÊôÓÚVFRµÄÍøÂç½Ó¿Ú£¨VIF£©¡£VIF¿´ÉÏÈ¥ÓÐЩÏÖ´úµÄÍø¿¨£º¾ßÓÐÁ½¸öI/O»º³åÇøÃèÊö·û»·£¬Ò»¸öÓÃÓÚ·¢ËÍÒ»¸öÓÃÓÚ½ÓÊÕ¡£ÔÚÿ¸ö·½Ïò£¨//·¢ËÍ»òÕß½ÓÊÕ£©É϶¼ÓÐһЩÏà¹ØµÄ¹æÔòÐÎʽ£¨<ģʽ>£¬<¶¯×÷ >£©¡ª Èç¹ûģʽ£¨pattern£©Æ¥ÅäÉϵϰ£¬ÄÇôÏà¹ØµÄ¶¯×÷£¨action£©¾Í»á±»ÆðÓá£

Domain 0¸ºÔð²åÈëºÍɾ³ý¹æÔò¡£ÀýÈçÔÚµäÐ͵ÄÇé¿öÏ£¬¿ÉÒÔÔö¼Ó¹æÔò·ÀÖ¹Ô´IPµØÖ·ÆÛÆ­£¬»òÕßÔö¼Ó¹æÔòÈ·±£»ùÓÚÄ¿µÄIPµØÖ·ºÍ¶Ë¿ÚµÄÕýÈ·µÄÊý¾Ý·ÖÅÉ£¨demultiplexing£©¡£¹æÔòÒ²¿ÉÒÔÊǺÍVFRÉϵÄÓ²¼þ½Ó¿ÚÏà¹ØµÄ¡£ÌرðÊÇÎÒÃÇÔö¼ÓµÄÄÇЩÓÃÓÚÖ´Ðд«Í³µÄ·À»ðǽ¹¦ÄܵĹæÔò£¬±ÈÈç·ÀÖ¹ÔÚ²»°²È«µÄ¶Ë¿ÚÉϽ¨Á¢Á¬½ÓµÄÆóͼ¡£

ΪÁË·¢ËÍÒ»¸öÊý¾Ý°ü£¬guest OS¼òµ¥µØ½«»º³åÇøÃèÊö·ûÅŶӽø·¢ËÍ»·ÖС£Xen¸´ÖÆÃèÊö·û£¬Í¬Ê±ÎªÁËÈ·±£°²È«ÐÔ£¬»¹Òª¸´ÖÆÊý¾Ý°üÍ·²¢Ö´ÐÐÆ¥Åä¹ýÂ˹æÔò¡£Êý¾Ý°üµÄÓÐÐ§ÔØºÉ²»»á±»¸´ÖÆ£¬ÒòΪÎÒÃÇʹÓõÄÊÇ·ÖÉ¢¡ª¼¯ÖÐʽ£¨scatter-gather£©µÄDMA£»ÕâÀïҪעÒâµÄÊÇ£¬ÏàÓ¦µÄÒ³¿ò±ØÐë±»°ó¶¨£¬Ö±µ½Êý¾Ý°ü´«ËÍÍê³É¡£ÎªÁ˱£Ö¤¹«Æ½ÐÔ£¬ XenÔÚÊý¾Ý°üµ÷¶ÈÆ÷ÉÏʵÏÖÁ˼òµ¥µÄÑ­**ת£¨round-robin£©Ëã·¨¡£

ΪÁËÓÐЧµØÊµÏÖÊý¾Ý°üµÄ½ÓÊÕ£¬ÎÒÃÇÐèÒªguest OSΪÿһ¸öËü½ÓÊÕµ½µÄÊý¾Ý°ü½»»»Ò»¸öûÓÐʹÓõÄÒ³¿ò£¨//Õâ¸öÕжùͦ¾øµÄ£¬ÎҾͲ»½«Ò³ÄÚÈݸ´ÖƵ½ÎÒ×Ô¼ºµÄÒ³¿òÀïÁË£¬Ö±½Ó°ÑÕâ¸öÒ³¿òÄÉÈë×Ô¼ºµÄÆìÏ£¬È»ºóÔÙ»»¸öÎÒûÓõĿÕÒ³¿ò¸øÄ㣬·´ÕýÖ»ÒªÐ޸ĵØÖ·×ª»»Êý×é¾Í¿ÉÒÔÁË£©£»Õâ¾Í±ÜÃâÁËÐèÒªÔÚXenºÍguest OSÖ®¼ä¸´ÖÆÊý¾Ý°üÄÚÈݵÄÂé·³£¬µ«ÊÇÕâô×ö±ØÐëÒªÇóÔÚÍøÂç½Ó¿ÚÖнÓÊÕ»º³å¶ÓÁÐÖеÄÓÐÒ³¶ÔÆëµÄÇøÓò£¨//ÒòΪÕâô×öÊÇÖ±½ÓÒÔÒ³¿òΪµ¥Î»½øÐеģ¬ËùÒÔÒ»´Î½»»»¾ÍÊÇÒ»Ò³µÄÄÚÈÝ£¬ËùÒÔÐèÒªÌṩҳ¶ÔÆëµÄ»º³åÇøÓò²Å¿ÉÒÔ½øÐУ©¡£µ±Ò»¸öÊý¾Ý°ü±»½ÓÊÕ£¬XenÁ¢¼´¼ì²é½ÓÊÕ¹æÔò×éÀ´È·¶¨Ä¿µÄVIF£¬È»ºó½«Êý¾Ý°ü»º³åÇøºÍÏàÓ¦µÄ½ÓÊÕ»·£¨//½ÓÊÕ»·´æÔÚÓÚ¸÷¸ödomainÖУ©½»»»Ò»¸öÒ³¿ò¡£Èç¹ûÕâʱûÓÐÒ³¿ò¿ÉÓõϰ£¬Êý¾Ý°ü¾Í±»¶ªÆú¡£

3.3.6 ´ÅÅÌ

Ö»ÓÐDomain 0Äܹ»²»¾­¼ì²éµØÖ±½Ó·ÃÎÊÎïÀí£¨IDEºÍSCSI£©´ÅÅÌ¡£ËùÓÐÆäËüµÄdomain·ÃÎÊÓÀ¾ÃÐÔ´æ´¢½éÖʵÄʱºò£¬¶¼ÒªÍ¨¹ýÐéÄâ¿éÉ豸£¨VBD£©³éÏó¡£Õâ¸ö³éÏóÊÇÓÉÔËÐÐÔÚDomain 0ÖеĹÜÀíÈí¼þÀ´´´½¨ºÍÅäÖõġ£ÓÉDomain 0¹ÜÀíVBDʹµÃXenÖеĻúÖÆ±È½Ï¼òµ¥£¬²»±ÜʹÓøü¸´ÔӵĽâ¾ö·½°¸£¨±ÈÈçExokernelÖÐʹÓõÄUDF[23]£©¡£

Ò»¸öVBD ÊÇÓÉһЩºÍËùÓÐȨÒÔ¼°·ÃÎÊ¿ØÖÆÐÅÏ¢Ïà¹ØµÄÀ©Õ¹×é³ÉµÄ£¬¿ÉÒÔͨ¹ýI/O»·»úÖÆÀ´·ÃÎÊ¡£Ò»¸öµäÐ͵Äguest OS´ÅÅ̵÷¶ÈËã·¨½«ÖØÐÂÅŶ¨ÇëÇóµÄÓÅÏȼ¶²¢°ÑËüÃÇÅŽø»·ÖУ¬ÕâÑù×öÊÇΪÁ˾¡Á¿¼õÉÙÏìӦʱ¼ä£¬²¢ÇÒ¿ÉÒÔÓÐÇø±ðµØ½øÐзþÎñ£¨ÀýÈ磬ÓÉÓÚ½øÐÐͶ»úµÄÏòǰ¶ÁÇëÇóµÄ´ú¼ÛºÜ¸ß£¬µ÷¶ÈÆ÷¿ÉÄÜ»áÑ¡ÔñÖ÷¶¯ÏÈÈ¥µ÷¶ÈºóÃæµÄ¶Ôͬ²½Êý¾ÝµÄ·ÃÎÊÇëÇ󣩡£ÁíÍ⣬ÒòΪXen¶ÔÕæÊµµÄ´ÅÅ̹滮¾ßÓиüÍêÕûµÄÈÏʶ£¬ËùÒÔÎÒÃÇÒ²ÒªÔÚXenÖÐÖ§³ÖÖØÐ¶¨Ðò£¨//¸Õ¸ÕÌáµ½µÄÊÇguest OS£©£¬²¢ÇÒ¿ÉÒÔÂÒÐòµØ·µ»ØÏìÓ¦¡£Òò´Ë£¬¶ÔÓÚguest OSÀ´Ëµ£¬VBDÓÐÒ»µãÏñSCSI´ÅÅÌ¡£

ÔÚhypervisor ÄÚ²¿»¹ÎªÃ¿¸öVBDά»¤ÁËÒ»¸öת»»±í£»Õû¸ö±íÖеÄÄÚÈݶ¼ÓÉDomain 0ͨ¹ýÌØÈ¨¿ØÖƽӿڽøÐа²×°ºÍ¹ÜÀí¡£ÔÚ½ÓÊÕµ½Ò»¸ö´ÅÅÌÇëÇóºó£¬Xen¼ì²éVBD±êʶ·ûºÍÆ«ÒÆ£¬²¢ÇÒ²úÉúÏàÓ¦µÄÉÈÇøµØÖ·ºÍËùÊôÎïÀíÉ豸¡£Ðí¿É¼ì²éÒ²ÊÇÔÚÕâ¸öʱºò½øÐеģ¨//¼ì²éµ½µ×Äܲ»ÄܽøÐÐÕâ¸ö´ÅÅ̲Ù×÷£©¡£Áã¸´ÖÆÊý¾Ý´«µÝ½«ÒÔDMAµÄ·½Ê½ÔÚ´ÅÅ̺Ͱ󶨵½¸Ã·¢³öÇëÇóµÄdomainÉϵÄÄÚ´æÒ³Ö®¼ä½øÐС£

Xen »áʹÓüòµ¥µÄÑ­**ת·½Ê½À´³ÉÅú´¦Àí¸÷¸ö´æÔÚ¾ºÕù¹ØÏµµÄdomain·¢³öµÄÇëÇó£»È»ºó£¬ÔÚµ½´ï´ÅÅÌÓ²¼þ֮ǰ£¬ÕâЩÇëÇ󴫸ø±ê×¼µÄµçÌݵ÷¶ÈÆ÷¡£domain ¿ÉÒÔÏÔʽµØÉèÖÃÖØ¶¨ÐòÕϰ­£¨//²»ÐíÖØ¶¨Ðò£©À´·ÀÖ¹ÔÚ±ØÐëά³Ö¸ß²ã´ÎÓïÒåµÄʱºò£¨ÀýÈ磬ÔÚʹÓÃÁËÒ»¸öԤдÈÕÖ¾£¨write-ahead log£©µÄʱºò£©½øÐÐÖØ¶¨Ðò¡£µ±³ÉÅúµÄÇëÇóÖÐÄܹ»ÏÔÏÖ³ö·ÃÎʵĹ«Æ½ÐÔµÄʱºò£¬µÍ²ãµÄµ÷¶ÈÄܹ»¸øÎÒÃÇ´øÀ´ºÜºÃµÄÍÌÍÂÁ¿¡£ÏÂÒ»²½¹¤×÷½«Ñо¿Ê¹ÓÃÏÖÓеļ¼ÊõºÍµ÷¶ÈÆ÷Ìṩ¸ü¿ÉÔ¤²âµÄ¸ôÀëÐÔºÍÖ§³Ö¸üÓвî±ðµÄÉ豸¡£

3.4½¨Á¢ÐµÄDomain

Ϊһ¸öеÄdomain½¨Á¢³õʼµÄ guest OS½á¹¹£¬Õâ¸öÈÎÎñºÜ´ó³Ì¶ÈÉÏÊÇίÍиøDomain 0Íê³ÉµÄ¡£Domain 0ʹÓÃËüµÄÌØÈ¨¿ØÖƽӿڣ¨2.3¶Î£©·ÃÎÊеÄdomainµÄ´æ´¢¿Õ¼ä²¢¸æÖªXen¸ÃÐÂdomainµÄ³õʼ¼Ä´æÆ÷״̬¡£Õâ¸ö·½·¨Ïà¶ÔÓÚÓÉXen½¨Á¢Õû¸ö domainÀ´ËµÓÐһЩÓÅÊÆ£¬°üÀ¨¼õÉÙÁËhypervisorµÄ¸´ÔÓ¶È£¬¸Ä½øÁ˳°ôÐÔ£¨¶ÔÌØÈ¨½Ó¿ÚµÄ·ÃÎÊÒª¾­¹ýÍêÈ«µØ¼ì²éµÄ£¬Ê¹µÃÎÒÃÇÄܹ»ÔÚ³õʼ½×¶Î²¶×½µ½´ó²¿·ÖµÄbug¡£

×îÖØÒªµÄÊÇ£¬Õû¸ö½¨Á¢¹ý³ÌÒ×ÓÚ±»À©Õ¹£¬¿ÉÒÔÓ¦¸¶ÐµÄguest OS¡£ÀýÈ磬LinuxÄÚºËÒýµ¼Ê±µÄµØÖ·¿Õ¼äÊÇÒª±ÈWindows XP¼òµ¥µÃ¶àµÄ¡£ÎÒÃÇ¿ÉÒÔΪËùÓеÄguest OSÖ¸¶¨Ò»¸ö¹Ì¶¨µÄ³õʼÄÚ´æ¹æ»®£¬µ«ÊÇÕâÑùµÄ»°¾ÍÐèÒªÕë¶Ôÿ¸öguest OS±àд¶îÍâµÄÒýµ¼ÏÝÚå´úÂëÓÃÀ´°²ÖòÙ×÷ϵͳËùÐèµÄÆäËü²¿·Ö¡£²»ÐÒµÄÊÇ£¬ÕâÀà´úÂëÊǷdz£ÄÑÒÔʵÏֵģ»ÎªÁË»ñµÃ¼òµ¥ÐԺͳ°ôÐÔ£¬¸üºÃµÄʵÏÖ·½·¨¾ÍÊÇʹÓà Domain 0£¬ËüÄܹ»Ìṩ±ÈÒýµ¼³ÌÐò¸ü³äÔ£µÄÕï¶ÏºÍµ÷ÊÔÖ§³Ö¡£

Scatter-gather DMA·½Ê½ÊÇÓëblock DMA·½Ê½Ïà¶ÔÓ¦µÄÒ»ÖÖDMA·½Ê½¡£

ÔÚDMA´«ÊäÊý¾ÝµÄ¹ý³ÌÖУ¬ÒªÇóÔ´ÎïÀíµØÖ·ºÍÄ¿±êÎïÀíµØÖ·±ØÐëÊÇÁ¬ÐøµÄ¡£µ«ÊÇÔÚijЩ¼ÆËã»úÌåϵÖУ¬ÈçIA¼Ü¹¹£¬Á¬ÐøµÄ´æ´¢Æ÷µØÖ·ÔÚÎïÀíÉϲ»Ò»¶¨ÊÇÁ¬ÐøµÄ£¬ËùÒÔDMA´«ÊäÒª·Ö³É¶à´ÎÍê³É¡£

Èç¹ûÔÚ´«ÊäÍêÒ»¿éÎïÀíÉÏÁ¬ÐøµÄÊý¾ÝºóÒýÆðÒ»´ÎÖжϣ¬È»ºóÔÙÓÉÖ÷»ú½øÐÐÏÂÒ»¿éÎïÀíÉÏÁ¬ÐøµÄÊý¾Ý´«Ê䣬ÄÇôÕâÖÖ·½Ê½¾ÍΪblock DMA·½Ê½¡£Scatter-gather DMA·½Ê½Ôò²»Í¬£¬ËüʹÓÃÒ»¸öÁ´±íÃèÊöÎïÀíÉϲ»Á¬ÐøµÄ´æ´¢¿Õ¼ä£¬È»ºó°ÑÁ´±íÊ×µØÖ·¸æËßDMA master¡£DMA masterÔÚ´«ÊäÍêÒ»¿éÎïÀíÁ¬ÐøµÄÊý¾Ýºó£¬²»Ó÷¢ÆðÖжϣ¬¶øÊǸù¾ÝÁ´±íÀ´´«ÊäÏÂÒ»¿éÎïÀíÉÏÁ¬ÐøµÄÊý¾Ý£¬Ö±µ½´«ÊäÍê±ÏºóÔÙ·¢ÆðÒ»´ÎÖжϡ£

ºÜÏÔÈ»£¬scatter-gather DMA·½Ê½±Èblock DMA·½Ê½Ð§Âʸߡ£

4.Ïà¹Ø¹¤×÷

ÐéÄ⻯¼¼Êõ±»Ó¦ÓÃÔÚÉÌÒµ»¯ºÍÑо¿ÐͲÙ×÷ϵͳÉÏÒѾ­Óнü30ÄêÁË¡£IBM VM/370[19£¬38]×îÏÈʹÓÃÁËÐéÄ⻯¼¼ÊõÒÔÌṩ¶ÔÏÈǰ´æÁôµÄ´úÂëµÄÖ§³Ö¡£VMware[10]ºÍConnectix[8]²ÉÓÃÁ˽«³£ÓõÄPCÓ²¼þ½øÐÐÐéÄ⻯µÄ·½·¨£¬ÔÊÐí¶à¸ö²Ù×÷ϵͳÔÚͬһ̨Ö÷»úÉÏÔËÐС£ËùÓÐÕâЩÀý×Ó¶¼¶Ôµ×²ãÓ²¼þ£¨ÖÁÉÙÊǵײãÓ²¼þµÄÒ»¸ö×Ó¼¯£©½øÐÐÁËÍêÈ«ÐéÄ⻯µÄʵÏÖ£¬¶ø²¢·ÇÊÇ×¼ÐéÄ⻯µÄ·½·¨Ìṩ¸øguest OSÒ»¸öÐ޸ĺóµÄ½Ó¿Ú¡£ÕýÈçÎÒÃÇµÄÆÀ¹À½á¹ûÖиø³öµÄ£ºÍêÈ«ÐéÄ⻯ËäÈ»Äܹ»¸üÈÝÒ×µØÖ§³ÖÉÌÒµÊÐÊ۵IJÙ×÷ϵͳ£¬µ«ÊÇÈ´´ó´ó½µµÍÁËÐÔÄÜ¡£

VMM·½·¨»¹±»DiscoÓÃÓÚ½«³£ÓõIJÙ×÷ϵͳ¸ßЧµØÔËÐÐÔÚccNUMA»úÆ÷ÉÏ[7£¬18]¡£Æä¼äÒª¶Ô±»²Ù¿ØµÄ²Ù×÷ϵͳ×öÉÙÁ¿µÄ¸Ä¶¯£¬ÒÔʹÆäÄܹ»ÐéÄ⻯µØÔËÐÐÔÚMIPSÌåϵ½á¹¹ÉÏ¡£ÁíÍ⣬³öÓÚÐÔÄܵĿ¼ÂÇ£¬»¹Òª×öһЩÆäËüÐ޸ġ£

ÏÖÔÚ£¬ÎÒÃÇÖªµÀÓÐÁ½¸öÆäËüµÄϵͳҲ²ÉÓÃÁË×¼ÐéÄ⻯µÄ·½·¨£ºIBM²»¾ÃǰÌá³öµÄLinuxµÄ×¼ÐéÄ⻯°æ±¾ÔÊÐí´óÁ¿µÄLinuxʵÀýͬʱÔËÐУ¬½«ÓÃÓÚËûÃÇµÄ zSeries´óÐÍ»úÉÏ¡£Denali[44]ÔÚ֮ǰÒѾ­ÌÖÂÛ¹ý£¬ËüÊÇÒ»¸öÔÝʱ¸ôÀëµÄÄںˣ¬ÊÔͼÌṩÄܹ»²Ù¿Ø´óÁ¿ÐéÄâ²Ù×÷ϵͳʵÀýµÄϵͳÄÜÁ¦¡£

³ýÁËDenali£¬ÎÒÃÇ»¹ÖªµÀÓÐÁ½ÖÖÆäËüµÄ·½·¨Ê¹ÓÃÁ˵ͲãÐéÄ⻯¼¼Êõ½¨Á¢·Ö²¼Ê½ÏµÍ³µÄµ×²ã¼Ü¹¹¡£vMatrix[1]ÊÇ»ùÓÚVMwareµÄ£¬ËüµÄÄ¿±êÊǽ¨Á¢Ò»¸öÓÃÓÚÔÚ²»Í¬»úÆ÷¼äÒÆ¶¯´úÂëµÄƽ̨¡£ÓÉÓÚvMatrixÊÇÔÚVMwareÖ®ÉÏ¿ª·¢µÄ£¬Òò´ËËü¸ü¹Ø×¢µÄÊÇÐéÄ⻯¼¼ÊõÔÚ·Ö²¼Ê½»·¾³ÖдæÔڵĸ߲ãÎÊÌâ¡£ÁíÍ⣬ÔÚIBMÌá³öµÄ¡°ÍйܹÜÀí£¨Managed Hosting£©¡±·þÎñÖУ¬ÐéÄâLinuxµÄʵÀý¿ÉÒÔÔÚIBM´óÐÍ»úÉϱ»×âÓã¨//´óÐÍ»úÉÏÅܶà¸öLinuxʵÀý£¬Äã¿ÉÒÔ×âÒ»¸öÓ㬴Äã×Ô¼ºµÄϵͳ£¬ºÍÆäËû×â»§¹²Ïí´óÐÍ»úµÄ×ÊÔ´£©¡£

PlanetLabÏîÄ¿[33]¹¹½¨ÁËÒ»¸ö·Ö²¼Ê½µÄµ×²ã¼Ü¹¹£¬ËüµÄÉè¼ÆÄ¿µÄÊÇ×÷ΪʵÑé´²ÓÃÓÚÑо¿ºÍ¿ª·¢µØÀí¿Õ¼ä·Ö²¼µÄÍøÂç·þÎñ¡£Æ½Ì¨µÄ¶ÔÏóÊÇÑо¿Õߣ¬ÊÔͼ½«µ¥¸öµÄÎïÀíÖ÷»ú»®·ÖΪÌõ£¨sliver£©£¬ÌṩͬʱµÄ¶ÔÓû§µÄµÍ²ã·ÃÎÊ¡£ÏîÄ¿µ±Ç°Ê¹ÓõÄÊÇ VServers[17]ºÍSILK[4]À´¹ÜÀí²Ù×÷ϵͳÄÚ²¿µÄ¹²Ïí¡£

ÎÒÃÇÔٺͲÙ×÷ϵͳÍâÑÓÑо¿ºÍÖ÷¶¯ÍøÂçͨÐÅÑо¿ÖеÄһЩ˼·×÷±È½Ï¡£µ±´úÂëÔÚXenÉÏÃæÔËÐеÄʱºòûÓбØÒª¼ì²éÆä¡°°²È«ÐÔ¡±£¬Ò²Ã»ÓбØÒªÈ¥¼ì²é´úÂëÔËÐÐÊÇ·ñÄܹ»±£Ö¤ÖÕÖ¹£¬ÒòΪÔÚÕâЩÇé¿öÖÐΨһµÄÊܺ¦ÈËÊÇÄÇЩ¿ÉÒɵĿͻ§¡£ÓÚÊÇXenÌṩÁ˸üͨÓõķ½°¸£ºÕâ¸ö·½°¸²»ÐèÒªÓÉÒ»¸ö¿ÉÐŵıàÒëÆ÷Ϊ±»²Ù¿ØµÄ´úÂë×öÊý×ÖÇ©Ãû£¨±ÈÈçSPIN[5]£©£¬²»ÐèÒªÕâЩ´úÂë±»Ò»¸ö°²È«Ö¤Ã÷°éËæ£¨±ÈÈçPCC[31]£©£¬²»ÐèÒªÓÉÒ»ÖÖÌØÊâµÄÓïÑÔд³É£¨±ÈÈçSafetyNet[22]»òÕ߯äËü»ùÓÚJavaµÄϵͳ£©£¬Ò²²»ÐèÒªÒÀÀµÓÚÌØÊâµÄÖмä¼þ£¨±ÈÈçÒÆ¶¯´úÀí£¨mobile-agent£©ÏµÍ³£©¡£µ±È»£¬ÕâЩÆäËüµÄ¼¼ÊõÄܹ»¼ÌÐøÔÚÔËÐÐÔÚXenÉϵÄguest OSÖÐʹÓ㬶øÇÒ¿ÉÄÜ»á¶ÔÄÇЩʱÏÞ¸ü¶ÌÔݵÄÈÎÎñ¸ºÔØÓÐ×ÅÌØ±ðµÄÓÃ;£¬ÒòΪÕâÀàÈÎÎñûÓлú»á±»³ÉÅú´¦ÀíÒÔ¼õÉÙÆô¶¯Ò»¸öеÄdomainµÄ´ú¼Û¡££¨//Õâ¶ÎµÄÒâ˼£¬ÎҵĸоõÊÇÔÚ²Ù×÷ϵͳÍâÑÓÑо¿ºÍÖ÷¶¯ÍøÂçͨÐÅÑо¿ÎªÁ˱£Ö¤´úÂ밲ȫ£¬²ÉÓÃÁ˶àÖÖ¶àÑùµÄ·½·¨£»µ«ÊÇÔÚXenÖУ¬ÕâЩ·½·¨¶¼ÊDz»±ØÒªµÄ£¬ÒòΪXenµÄ°²È«ÐÔÈ·ÈϲßÂԱȽϼòµ¥£¬Ç°ÎÄÓÐÌá¼°£»µ«ÊÇÕâЩ·½·¨ÔÚXenÖÐÒ²»¹ÊÇÓÐËüÃǵÄ×÷Ó㬱ÈÈç¶ÔÓÚʱÏÞ¶ÌÔݵÄÈÎÎñ£¬ËüµÈ²»¼°³ÉÅúµØ±»È·ÈÏ£¬ÄÇôËü¾ÍÐèÒªÓÃÆäËü·½·¨±£Ö¤°²È«ÐÔ¡££©

¹ØÓÚÓïÑÔ¼¶ÐéÄâ»ú£¨//±ÈÈçJavaÐéÄâ»ú£©·½·¨ÖÐÒ²´æÔÚ×ÅÀàËÆµÄÎÊÌ⣺һ¸ö¹ÜÀí×ÊÔ´£¨resource- managed£©µÄJVM[9]¿Ï¶¨Äܹ»²Ù¿Ø²»¿ÉÐŵÄÓ¦Óã¬Ç°ÌáÊÇÕâЩӦÓñØÐë±»±àÒëΪJava×Ö½ÚÂë²¢ÇÒ×ñÑ­ÌØ±ðµÄϵͳ°²È«Ä£ÐÍ£¨//²»¿ÉÐŵĴúÂ룬¼´Ê¹³öÁËÎÊÌ⣬µ«ÊÇÓÉÓÚÆä×ñѭϵͳ°²È«Ä£ÐÍ£¬ËùÒÔÒ²²»»áÔì³ÉΣº¦£©¡£ÕâÑùµÄ»°£¬Xen¾ÍÄܹ»ÈÝÒ×µØÖ§³ÖÓïÑÔ¼¶ÐéÄâ»ú£¬¾ÍÏñÖ§³ÖÆäËüÔËÐÐÔÚguest

OSÉϵÄÓ¦ÓÃÒ»Ñù¡££¨//Õâ¶ÎµÄÒâ˼£¬ºÍÇ°ÃæÀàËÆ£¬ÈÔ¾ÉÊDZíÃ÷Xen²¢²»Ìṩ¹ý¶àµÄ°²È«ÐÔ¼ì²é£»Èç¹ûÒªÅÜÓïÑÔÐéÄâ»úÖ®ÀàµÄÓ¦Óã¬ÓïÑԵݲȫÐÔÒªÓÉÐéÄâ»úÓ¦Óñ¾Éí±£Ö¤£¬¶ø²»¹ØÏµµ½Xen¡££©

5.ÌÖÂۺͽáÂÛ

ÎÒÃÇÔÚÉÏÎĽéÉÜÁËXen hypervisor¡£ËüÄܹ»½«¼ÆËã»úµÄ×ÊÔ´»®·Ö¸ø¸÷¸öÔËÐÐ×Åguest

OSµÄdomain¡£ÎÒÃǵÄ×¼ÐéÄ⻯Éè¼ÆÌØ±ðÇ¿µ÷ÁËÐÔÄܺÍ×ÊÔ´¹ÜÀí¡£ÎÒÃÇ»¹ÃèÊöºÍÆÀ¹ÀÁËXeonLinux£¬XeonLinuxÊǽ«Linux 2.4ÄÚºËÏòXenÉÏ×öµÄÍêÈ«ÒÆÖ²¡£

5.1 Future Work ¡ª ½«À´µÄ¹¤×÷

ÎÒÃÇÈÏΪXenºÍXenoLinuxÍêÈ«Äܹ»±»ÓÃÓÚ¸ü¹ãÀ«µÄ¿Õ¼ä£¬ËùÒÔÎÒÃÇ×¼±¸ÔÚ²»¾ÃµÄ½«À´°ÑÎÒÃǵÄÈí¼þ×ö³ÉÒ»¸ö¹«¿ª°æ±¾¡£µ±Ç°ÒѾ­ÓÐÒ»¸öBeta°æ±¾ÕýÔÚ±»ÆÀ¹À£¨//Ã²ËÆ¾ÍÊÇÄǸöClarkson University×öµÄ¹¤×÷£©£»Ò»µ©ÆÀ¹À½×¶Î½áÊø£¬ÎÒÃǾͻáÔÚÏîÄ¿Ö÷Ò³ÉÏ·¢²¼1.0°æ¡£

ÔÚÍê³É³õʼ°æ±¾ºó£¬ÎÒÃǼƻ®¶ÔXen×öһЩµÄÀ©Õ¹ºÍ¸Ä½ø¡£ÎªÁËÔö¼ÓÐéÄâ¿éÉ豸µÄЧÂÊ£¬ÎÒÃÇ×¼±¸ÊµÏÖÒ»¸öÓÉ¿éÄÚÈÝË÷ÒýµÄ¹²ÏíµÄͨÓûº³åCache £¨universal buffer cache£©¡£Õ⽫ΪÎÒÃǵÄÉè¼ÆÔö¼ÓÊܿصÄÊý¾Ý¹²Ïí£¬Í¬Ê±È´²»ÎþÉü¸ôÀëÐÔ¡£ÎªÐéÄâ¿éÉ豸Ôö¼Óд¸´ÖÆ£¨copy-on-write£©ÓïÒ壬ʹËüÃÇÄܹ»ÔÚ domainÖ®¼ä±»°²È«µØ¹²Ïí£¬¼´Ê¹ÊDz»Í¬µÄÎļþϵͳҲ²»»áÓÐÎÊÌ⣨//д¸´ÖÆ£¬±£Ö¤Ò»ÖÂÐÔ£¬¼õÉÙÄÚÈݸ´ÖÆ¿ªÏú£»²»¹ý¿çÎļþϵͳӦ¸Ã»¹ÊDz»ºÜÈÝÒ×°É£¿£©¡£

ΪÁËÌṩ¸üºÃµÄphysical£¨//ÎïÀí£¿»¹ÊÇÏñ֮ǰÌáµ½µÄÊÇ¡°Êµ¼Ê·ÖµÃµÄ¡±£¿Ó¦¸ÃÊǺóÕߣ©ÄÚ´æÐÔÄÜ£¬ÎÒÃǼƻ®ÊµÏÖÒ»¸ö×îºó»ú»áÒ³»º´æ£¨LPC£ºlast-chance page cache£©¡£ÕâÊÇÒ»¸öȫϵͳ·¶Î§ÄڵĿÕÏÐÒ³Á´±í£¬Ö»ÓÐÔÚ»úÆ÷ÄÚ´æÎ´±»·Ö¹âµÄÇé¿öÏ£¬Á´±í²ÅÓзÇÁãµÄ³¤¶È¡£µ±guest OSÐéÄâ´æ´¢ÏµÍ³Ñ¡ÔñÉáÆúÒ»¸ö¸É¾»£¨clean£ºÊý¾ÝÖÐûÓÐdirty data£¬¶¼ÊÇÓë´ÅÅÌÖÐÏàͬµÄ£©µÄҳʱ»áʹÓõ½LPC£»Õâ¸ö¸É¾»µÄÒ³»á±»¼ÓÈëµ½¿ÕÏÐÁ´±íµÄ½á⣬¶ø²¢·Ç±»ÍêÈ«Åׯú¡£Èç¹ûÔÚ¸ÃÒ³ÖØÐ±»Xen·ÖÅä֮ǰ·¢ÉúÁ˺͸ÃÒ³Ïà¹ØµÄ´íÎó£¬ÄÇô¶Ô´íÎóµÄ´¦ÀíÊDz»ÐèÒª´ÅÅÌ·ÃÎʵģ¨ÎÒµÄÀí½âÊÇ£¬ÒÔÍùµÄ·½·¨Èç¹û²Ù×÷ϵͳÊÍ·ÅÁËÄÚ´æ×ÊÔ´µÄ»°£¬ÄÇôËüÈç¹ûÔÙÏëʹÓøղÅÊÍ·ÅÒ³ÉϵÄ×ÊÔ´¾Í±ØÐëÖØÐ´ӴÅÅÌÉϵ÷È룻¶øÏÖÔÚµÄlast-chance£¬¾Í¸øÁ˲Ù×÷ϵͳһ¸ö»ú»á£¬Èç¹û³öÏÖÁ˺͸ÕÊͷŵôµÄÒ³ÄÚÈÝÏà¹ØµÄ´íÎó£¬ÄÇô²Ù×÷ϵͳ¿ÉÒÔÖ±½Ó´ÓÕâ¸öLPCÖе÷Ïà¹ØÒ³£¬¶ø²»Ó÷ÃÎÊ´ÅÅÌ£©¡£

XenµÄÒ»¸öÖØÒª½ÇÉ«ÊÇ×÷ΪXenoServerµÄ»ù´¡¡£XenoServerµÄÉè¼ÆÄ¿±ê³¬Ô½Á˵¥»úµÄ·¶³ë£¬ËüÒª´î½¨µÄÊÇÖ§³ÖÒ»¸ö»¥ÁªÍø¹æÄ£¼ÆËã¼Ü¹¹Ëù±ØÐèµÄ¿ØÖÆÏµÍ³¡£¶ÔÓÚÎÒÃǵÄÉè¼ÆÀ´Ëµ£¬¹Ø¼üÔÚÓÚ×ÊÔ´µÄʹÓÃÒª±»¾«È·µØ¼ÆËã²¢ÇÒÓɹ¤×÷µÄ·¢ÆðÕßÏë°ì·¨Âú×ã×ÊÔ´ÐèÇó ¡ª Èç¹û×ÊÔ´±ØÐëÒª¼°Ê±¶ÒÏÖ£¬ÎÒÃǾÍʹÓÃÒ»¸öÓµÈû¶¨¼Û²ßÂÔÀ´´¦ÀíÄÇЩ³¬¹ý×ÊÔ´ÌṩÄÜÁ¦µÄÒªÇó£¬Ê¹ÓÃ͸֧µÄ·½·¨Âú×㳬³öµÄÐèÇó¡£Õâ¾Í±ØÐëÒªÓо«È·¡¢¼°Ê±µÄI/O µ÷¶È£¬ËüÒªÄܹ»¸üÓе¯ÐԵش¦ÀíÄÇЩ²»ÓѺã¨//¶ñÒâ͸֧£¿£©µÄ¹¤×÷¸ºÔØ¡£ÎÒÃÇ»¹¼Æ»®´´½¨ÐéÄâ¿éÉ豸×â½èµÈÐÎʽ£¬½«»á¼ÆÑ§ÖеÄһЩÀíÂÛ£¨//ÉÏÊöµÄ×â½è£¬Í¸Ö§Ö®ÀàµÄ¸ÅÄî¶¼ÊÇÊôÓÚ»á¼ÆÑ§µÄ·¶³ë£©½è¼ø½øÎÒÃÇµÄ¿é´æ´¢¼Ü¹¹ÖС£

ΪÁËÄܹ»ÎªXenoServerµÄ¹ÜÀíºÍ¾­ÓªÌṩ¸üºÃµÄÖ§³Ö£¬ÎÒÃÇÕýÔÚ¼ÓÈë¶ÔÈÕÖ¾ÉóºËºÍÈÕÖ¾¼øÖ¤¸ü³¹µ×µÄÖ§³Ö¡£ÎÒÃÇ»¹ÔÚ¿ª·¢ÆäËüµÄVFR¹æÔò£¬Ï£ÍûÕâЩ¹æÔòÄܹ»Ê¹ÎÒÃǼì²âºÍ·ÀÖ¹¸ü´ó·¶Î§µÄ¶ÔÉç»áÓÐΣº¦µÄÍøÂçÐÐΪ¡£×îÖÕ£¬ÎÒÃÇÕýÔÚ¼ÌÐøÎÒÃÇÔÚXenoXPÉϵŤ×÷£¬×îÖØÒªµÄ¹¤×÷¾ÍÊDZàÐ´ÍøÂçºÍ¿éÉ豸Çý¶¯ÊµÀý£¬¹¤×÷µÄÄ¿±êÊÇÍêȫ֧³ÖÆóÒµ¼¶µÄ·þÎñÆ÷Ó¦Óã¨ÈçIIS£©¡£

5.2½áÂÛ

XenÌṩÁËÒ»¸öÓÅÐãµÄƽ̨£¬ÔÚÕâ¸öƽ̨ÉÏÄܹ»ÅäÖù㷺µÄ¶àÑù»¯µÄÒÔÍøÂçΪÖÐÐĵķþÎñ£¬±ÈÈ綯̬webÄÚÈݵľֲ¿¾µÏñ£¬Ã½ÌåÁ÷µÄ±àÂëת»»ºÍ·Ö·¢£¬¶àÓû§ÓÎÏ·ºÍÐéÄâÏÖʵ·þÎñÆ÷£¬»¹ÓÐΪ˲ʱÁ¬½ÓÉ豸Ìṩ¶ÌÔÝÍøÂçÁ¬½ÓµÄ¡°ÖÇÄÜ´úÀí¡±[2]·þÎñ¡£

Xen Ö±½Ó½â¾öµÄÊÇÔÚ²¿Êð·þÎñʱÓöµ½µÄ×î´óÕϰ­£¬¼´µ±Ç°²»Äܹ»ÔÚµÍʵÀý»¯¿ªÏúµÄǰÌáÏ£¬¶Ô˲ʱ·þÎñÆ÷²Ù¿Ø½Ï¶ÌµÄʱ¼ä£¨//˲ʱ·þÎñÆ÷£ºÊ±ÓÐʱÎÞ£¬ÓÐʱºòÐèÒªÓÐʱºò²»ÐèÒª£»¶ø¼´Ê¹ÊÇÿ´ÎÐèÒª£¬Ò²Ö»ÊDzÙ×÷ºÜ¶ÌµÄʱ¼ä£¬ÂíÉϾÍÓÖ²»ÐèÒªÁË£»ËùÒÔÕâÑùµÄ»°£¬ÆµÆµÇл»£¬¾ÍÐèÒªºÜ´óµÄʵÀý»¯¿ªÏú£¬ÒòΪÿ´ÎÆô¶¯Ë²Ê±·þÎñ£¬¾ÍҪʵÀý»¯Ò»´Î£»µ«ÊÇXenÖУ¬·´ÕýÎÒ¿ÉÒÔÅܶà¸öϵͳ£¬ÄǾÍרÃÅÁôÒ»¸ö»ò¼¸¸öϵͳ¸øÄãÅÜ˲ʱ·þÎñ£¬Í¬Ê±»¹²»µ¢ÎóÎÒÆäËü·þÎñµÄÐÔÄÜ£©¡£Í¨¹ýÔÊÐí100¸ö²Ù×÷ϵͳÔËÐÐÔÚµ¥Ì¨·þÎñÆ÷ÉÏ£¬ÎÒÃǼõÉÙÁËÁ½¸öÊýÁ¿¼¶µÄÏà¹Ø¿ªÏú¡£¸ü½øÒ»²½µÄ£¬ÎÒÃÇ¿ÉÒ԰ѶÔÿ¸ö²Ù×÷ϵͳ½øÐÐÉ趨ºÍÅäÖõĹý³Ìת±äΪÈí¼þÐÐΪ£¬ÕâÑù¾ÍÄܹ»¸üÈÝÒ׵زٿظüϸÁ£¶ÈµÄʱ¼äƬ¡£

ÕýÈçÎÒÃÇÔÚµÚ4²¿·Ö¸ø³öµÄʵÑé½á¹û£¬ÔÚXenÉÏÔËÐÐXenoLinuxµÄÐÔÄܼ¸ºõÓë±¾µØLinuxϵͳµÄÐÔÄÜÏàͬ¡£Ö®ËùÒÔ»áÓÐÕâÑùµÄ½á¹û£¬Ö÷ÒªµÃÒæÓÚ¶ÔÁ½¸ö²¿¼þÖ®¼ä½Ó¿Ú£¨//¾ÍÊÇVMM°É£¿²Ù×÷ϵͳºÍµ×²ãÓ²¼þÁ½¸ö²¿·ÖÖ®¼äµÄ½Ó¿Ú£©µÄϸÖÂÉè¼Æ£¬ÕâʹµÃÎÒÃǼ¸ºõ¸Ð¾õ²»µ½ÔÚʹÓÃ×ÊÔ´¹ÜÀí¹¤¾ßʱ´øÀ´µÄ¿ªÏú¡£ÎÒÃǵÄÏÂÒ»²½¹¤×÷ÊÇÒÆÖ²BSDºÍWindows

XPµÄÄں˵½XenÉÏÀ´ÑéÖ¤XenÌṩµÄ½Ó¿ÚµÄÆÕÊÊÐÔ¡£

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.