ºìÁªLinuxÃÅ»§
Linux°ïÖú

Debian Hurd¼¼ÊõÄÚÄ»

·¢²¼Ê±¼ä:2006-08-26 16:35:11À´Ô´:ºìÁª×÷Õß:wuhu911
ÒëÕß : PhantomCat
×÷Õß : Jerry Epplin
³ö´¦ : ddj.com

¡¡¡¡ÎÒÃÇÖªµÀ Linux ºËÐı»ÊÓΪһÖÖÀϾɵÄÉè¼Æ - ËùνµÄ monolithic (µ¥Ò») ºËÐÄ£¬¶øÁíÒ»ÖÖ¹ÜÀí¸´Ô OS µÄ·½Ê½£¬¾ÍÊÇ microkernel (΢ºËÐÄ) ¼Ü¹¹£¬Ïñ Hurd ¾Í³ÐŵËüÊÇ΢ºËÐļܹ¹ - Ò»¸öÓë UNIX ÏàËÆ²¢ÇÒ¿ª·ÅÔ´´úÂëµÄϵͳ...

[code]Dr. Dobb's Journal December 2000. Courtesy of Dr. Dobb's Journal

The Hurd's modular design enables customization[/code]

By Jerry Epplin (Òë: PhantomCat)

¡¡¡¡½ü¼¸ÄêÀ´£¬Linux µÄ·¢Õ¹³ÉΪ×ÊѶ½ç×î³£±»ÄÃÀ´ÌÖÂ۵ϰÌâ¡£Äú¿ÉÒÔÔÚµçÊÓÉÏ¿´µ½ Linux Torvalds£¬ÔÚÈí¼þÉ̵êÖп´µ½ Red Hat Linux£¬»¹¿ÉÒÔÔÚÐÂÎÅÖп´µ½ Linux ×¼±¸ºÃÒª¶Ô¿¹ Microsoft µÄÎÄÕ¡£¾ÍÔÚÕâʱ£¬Linux ÎüÒýÐí¶àÈí¼þ·¢Õ¹ÕßµÄÄ¿¹â£¬ÎüÒýµÄÔ­ÒòºÜ¶à£¬²»¹ý×îÖØÒªµÄÀíÓÉÔÚÓÚËüµÄ¿ª·ÅÐÔ¡£ÎÞÂÛÊÇ Linux ²Ù×÷ϵͳ£¬»ò´ó¶àÊýÔÚÉÏÃæËùÖ´ÐеÄÈí¼þ£¬¶¼ÔÊÐíÈκÎÈ˼ìÊÓ¡¢Ñ§Ï°»òÊÇÐÞ¸ÄÔ´´úÂë¡£ËüµÄ¿ª·ÅÐÔ£¬ÈÃÓÐÐÄѧϰ OS ÄÚ²¿ÔË×÷µÄÈËÀ´Ëµ£¬¾ÍÏñÒ»×ù¿óɽ¡£¼ÇµÃÒÔǰѧϰ²Ù×÷ϵͳʱ£¬¼¸ºõ¶¼ÊÇÀíÂÛÉϵÄ×·Çó£¬×î¶àÖ»ÄÜÓÃ×Ô¼ºÓÐÏÞµÄÁ¦Á¿Ð´³öÏñÍæ¾ß°ãµÄ²Ù×÷ϵͳ¡£ÒòΪ Linux ¿ÉËæÒâÈ¡µÃ (µ±È»»¹ÓÐÆäËüÃâ·ÑµÄ²Ù×÷ϵͳÏñÊÇ FreeBSD)£¬ÏÖÔڵĵçÄԿγ̿ÉÒÔÔÚÕâ¸öÖ÷Á÷µÄ²Ù×÷ϵͳÖÐ̽Ë÷£¬»òÊǼƻ®ÎªËü¼ÓÉÏһЩÐµĹ¦ÄÜ¡£µ±ÕâЩ¼Æ»®Íê³Éºó£¬ÆäЧ¹ûÓÅÓÚÔ­ÓеŦÄÜ£¬ÕâЩ³ÌÐòÓпÉÄܱ»ÕûºÏµ½Î´À´µÄ Linux °æ±¾ÖУ¬²¢É¢²¥ÖÁÊýÒÔÍò¼ÆµÄʹÓÃÕßÊÖÉÏ¡£ºÜÃÔÈ˰É! ¾ÍÊÇÕâ¹ÉħÁ¦Ç÷ʹÐí¶àÈËÔÚ OS µÄÄÚ²¿Ì½Ë÷¡£

¡¡¡¡ÉÏÃæËùÌáµ½µÄ¶¼ÊÇ Linux (ÕýÈ·µÄÀ´Ëµ£¬Ó¦¸ÃÊÇ Linux kernel) µÄÓŵ㣬¶øÁîÈËʧÍûµÄÊÇ£¬ÏëÒª·¢Õ¹ Linux ²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊ¡£ÔÚѧϰ Linux ʱ£¬ÄãµÚÒ»¸öÓöµ½µÄÎÊÌâ¾ÍÊÇÔ´´úÂë´óÌ«ÁË£¬Linux kernel µÄÔ´´úÂë°üº¬Á˵ײãµÄÅųÌÓë¼ÇÒäÌå¹ÜÀí£¬µ½ÉϲãµÄÍøÂ磬ËùÒÔÓë³ÌÐòÂëÏà¹ØµÄµµ°¸¶àµ½Ò»°ãÈËÎÞ·¨ÏëÏñ¡£ÁíÍ⣬Linux kernel µÄ·¢Õ¹ÊǾßÓкڿ;«Éñ£¬Èç¹û²»¹«¿ªÄÚ²¿µÄ¼¼ÊõÎļþ¾Í»á±»Õе½ÍÙÆú£¬¼´Ê¹³ÌÐòÂëÖмÓÈëÁË×¢½â£¬ÕâЩע½â¶¼»á±ðÈË»³ÒÉËüµÄÕæÊµÐÔ¡£ÔÚÕâÖÖ»·¾³Ö®Ï£¬Ð޸ijÌÐòÂëµÄËٶȳÉΪÊ×ÒªµÄÈÎÎñ£¬ÖÁÓÚÒªÈÃÄÇЩ²»¶® Linux µÄÈËÁ˽â Linux ÒѲ»ÊÇ×îÖØÒªµÄÁË¡£Kernel ά»¤ÕßËùÃæÁÙµÄÌôÕ½ÊÇ£¬ÈçºÎʹԭʼ³ÌÐòÂë¸üÓÐ×éÖ¯£¬µ«Òª´ïµ½´ËÄ¿µÄ²¢·ÇÒ»Èտɼ°¡£

¡¡¡¡ËùÒÔÎÒÃÇÖªµÀ Linux ºËÐı»ÊÓΪһÖÖÀϾɵÄÉè¼Æ¡£Õâ¾ÍÊÇËùνµÄ "monolithic (µ¥Ò»)" ºËÐÄ; Ò²¾ÍÊǽ«´ó´óСС¡¢ÁãÁãÖÖÖÖËùÓÐÓëϵͳÏà¹ØµÄ¹¦ÄÜ£¬Ò»¹ÉÄÔµØÈûµ½ºËÐÄÀï¡£µ± OS ÐëÒªÐµĹ¦ÄÜ£¬ÏñÊÇ֧ԮеÄÍøÂçЭ¶¨Ê±£¬ÕâÖÖÒÔµ¥Ò»ºËÐÄΪÖ÷µÄϵͳ£¬¾ÍûÓÐÊʵ±µÄ¼Ü¹¹À´·ÅÖÃÕâЩ¹¦ÄÜ£¬Òò´ËÎÒÃÇËùÄÜ×öµÄ£¬¾ÍÊÇÔÙÒ»´Î½«³ÌÐòÈû½øºËÐÄ¡£ÓÉÓÚ¹ýÈ¥ÀúÊ·ÒòËØ£¬µ¼ÖÁ Linux ʹÓÃÕâÖÖµ¥Ò»ºËÐļܹ¹¡£ÎÒÃÇ¿ÉÒÔÓɵ±Ê±µÄÓ²¼þ»·¾³¿´³ö¡£Linux Torvalds Ô­±¾µÄÄ¿µØÏëÔÚ 386 µÄʱ´ú£¬Ê¹ÓÃËûËùÄÜ»ñµÃµÄµçÄÔÀ´Íê³ÉÒ»¸ö²Ù×÷ϵͳ£¬Ò»¸öÓµÓÐÓë UNIX Ïàͬ¹¦ÄܵÄϵͳ¡£Òª´ïµ½Õâ¸öÄ¿±êΨһµÄ·½·¨£¬¾ÍÊÇÓÐЧµØÔËÓô¦ÀíÆ÷£¬ÓëËùÓпɻñµÃµÄϵͳ×ÊÔ´¡£µ¥Ò»ºËÐÄÔÊÐíϵͳÖеÄÔª¼þÖ±½ÓÏ໥¹µÍ¨ (ËùÓÐÔª¼þÔÚ±à³Ìʱ¾ÍÈ«±»´®ÔÚÒ»Æð)£¬À´´ïµ½Á¼ºÃµÄЧÂÊ¡£ÔÚÕâÖÖ×´¿öÏ£¬Ö»ÒªºËÐĵŦÄܱ£³ÖijÖÖÏÞ¶È£¬Ò»Çж¼ÈÝÒ×ά»¤¡£²»¹ý£¬Ò»µ©ºËÐļÓÈë¹ý¶àµÄ¹¦ÄÜ£¬¾Í²»ÈÝÒ×ά»¤ÁË¡£

Microkernel Architectures

¡¡¡¡ÓÐÒ»ÖÖ¿ÉÄܵķ½Ê½À´¹ÜÀí¸´Ô OS £¬¾ÍÊÇÒÔ "microkernel" (΢ºËÐÄ) ¼Ü¹¹Îª»ù´¡µÄ OS£¬Ïñ Hurd ¾Í³ÐŵËüÊÇ΢ºËÐļܹ¹¡£Hurd Ô­±¾ÊÇ Free Software Foundation (×ÔÓÉÈí¼þ»ù½ð»á) µÄ¼Æ»®£¬²»¹ý Hurd Ò²ÎüÒýÁËÐí¶àÆäËü×éÖ¯µÄÄ¿¹â¡£(Ò»°ã˵µ½ Hurd Æäʵ¾ÍÊÇÒâÎ½Öø "the Hurd"£¬¶ø²»ÊÇÖ»ÓÐ "Hurd"¡£Õâ¸ö×ÖÏóáçÁË "Hird of UNIX-replacing daemons"¡£Èç¹ûÄú¶Ô Hurd µÄÆðÔ´¸Ðµ½ÐËȤ£¬Çë²Î¿¼ http://www.cs.pdx.edu/~trent/gnu/hurd/¡£"Hird"£¬ÔÚÆäËü·½Ãæ´ú±í "Hurd of interfaces representing depth")¡£Hurd ÆðÔ´ÓÚ 1990 Ä꣬ÔÚ Linux ֮ǰ£¬ÆäÄ¿µØÊdzÉΪ GNU ²Ù×÷ϵͳµÄºËÐÄ¡£µ±Ê± GNU µÄ¼Æ»®ÓëÆäËü¼Æ»®Öظ²£¬Á©Õß¶¼ÊÇʹÓÿª·ÅÔ´´úÂëµÄ·¢Õ¹·½Ê½£¬¶¼ÊÇÓë UNIX ÀàËÆµÄ¹¦ÄÜ£¬»¹ÓÐÌØ±ðµÄÊDZàÒëÆ÷ÓëÆäËü·¢Õ¹¹¤¾ß¡£ÆäÄ¿±êÊÇÉú²úÒ»¸öÍêÕûµÄϵͳ£¬Ò»¸öÓë UNIX ÏàËÆ²¢ÇÒ¿ª·ÅÔ´´úÂëµÄϵͳ£¬ÓÉÓÚÕû¸öϵͳÖеĺËÐÄÉÐδÍê³É£¬Hurd ¼Æ»®Ò²¿ªÊ¼ÔÍÄð¡£Óë Linux ²»Í¬Ö®´¦ÔÚÓÚ Hurd ²¢²»ÏÞ¶¨ÓÚ PC ¼Ü¹¹; Ëü¼Æ»®ÄÜʹÓÃÓÚµ±Ê±²»Í¬ÀàÐ͵Ä΢µçÄÔ»òÊǹ¤×÷Õ¾¡£Òò´Ë GNU ¼Æ»®ÒÔÂý¹¤³öϸ»îµÄ·½Ê½À´Éè¼ÆÕâ¸öºËÐÄ¡£

¡¡¡¡Î¢ºËÐÄÓëÒ»°ãºËÐIJ»Í¬Ö®´¦£¬ÔÚÓÚËü½«Î¬³ÖºËÐÄÔË×÷ËùÐëµÄ×îÉÙ¹¦ÄÜʵ×÷ÓÚºËÐÄÖС£Õâ°üº¬ process µÄ½¨Á¢Óëɾ³ý¡¢Åų̴¦Àí¡¢¼ÇÒäÌå¹ÜÀíÓëÖжϴ¦Àí¡£ÖÁÓÚÆäËü²¿·Ö£¬ÏñÊÇÍøÂçЭ¶¨Óë´¦Àí¼äµÄ»ù±¾Í¨Ñ¶£¬¶¼±»ÒƳýÖÁºËÐÄÍâµÄ user space (ʹÓÃÕ߿ռä)¡£ºËÐļäµÄͨѶ½éÃæ¶¼±»Êʵ±µÄ¶¨Ò壬ÕâµãÓëµ¥Ò»ºËÐIJ»Í¬£¬µ¥Ò»ºËÐÄÄÚµÄÔª¼þ¿ÉÒÔ¿´µ½²¢ÇÒ²Ù×÷ÁíÒ»¸öÔª¼þ¡£

¡¡¡¡ÒÔ΢ÐÄΪ¼Ü¹¹µÄ²Ù×÷ϵͳÔÚά»¤ÓëÐÞ¸ÄÉÏÓµÓв»ÉÙÓÅÊÆ£¬¶ÔÓÚ½ü 20 ÄêÀ´Ñ§¹ýÈí¼þ¹¤³ÌµÄÈËÀ´Ëµ£¬ÎÞÂÛÓɲÙ×÷ϵͳ»òÊÇÓ¦ÓóÌÐòµÄ½Ç¶ÈÀ´¿´£¬Õâ¼Ü¹¹ÔÙÊìϤ²»¹ýÁË¡£ÕâЩ¼¸ºõ¶¼ÊÇʹÓÃÎï¼þµ¼ÏòµÄ·½Ê½À´Éè¼Æ¡£Îï¼þ¼äµÄ½éÃæ¶¨ÒåÇå³þ¶øÃ÷È·¡£Òò´ËÎï¼þÄÚ²¿ÓÐËù±ä¶¯Ê±£¬²»»áÓ°Ï쵽ʹÓÃÕâ¸öÎï¼þµÄ³ÌÐò¡£ÁíÒ»·½Ã棬´æÈ¡Îï¼þµÄÄÚ²¿ÏóáçÖøÒªÓÐÖ´ÐнϿìµÄ³ÌÐòÀ´Ê¹ÓÃÎï¼þ£¬Ð§ÂʵÄÓÅÊÆ²¢ÎÞ·¨ÓÃÀ´ÅжÏÔö¼Ó¶àÉÙ¸´ÔÓ¶È¡£

¡¡¡¡Hurd µÄÄ£×黯²»Ö»ÊÇʹÓýéÃæ¼ò½àµÄ΢ºËÐÄ¡£Ëü»¹½«ºËÐÄϵͳ֮ÍâµÄ¹¦ÄÜ×é³É²»Í¬µÄ "servers" (»òÊÇ daemons; ÕâЩÊÇ "UNIX-replacing daemons" Èçͬ Hurd µÄËõд)¡£Ã¿Ò»¸ö server ÌṩʹÓÃÕß³ÌÐò¹Ì¶¨µÄ·þÎñ¡£ÕâЩ server¡¢kernel ÓëʹÓÃÕß³ÌÐò͸¹ýÒ»×é¼ò½àµÄ½éÃæÏ໧ͨѶ¡£

¡¡¡¡Äã¿ÉÒÔÀíÐÔµØÎÊÎÊ×Ô¼º£¬Hurd ¶ÔÄãÓкܴóÎüÒýÁ¦Âð? µ½Ä¿Ç°ÎªÖ¹£¬ËüÖ»²»¹ýÊÇÒ»¸ö²»³ÉÊìµÄ²Ù×÷ϵͳ¡£¶ÔÒ»¸öÏëѧϰ²Ù×÷ϵͳµÄÈËÀ´Ëµ£¬µ½´¦¶¼¿ÉÒÔÇáÒ×µØÕÒµ½Ò»¶ÑÒÔ΢ºËÐÄΪ»ù´¡µÄ²Ù×÷ϵͳ¡£Î¢ºËÐÄÀíÂÛÔçÔÚѧÊõ½çÊ¢Ðн«½üÓÐ 15 ÄêÖ®¾Ã£¬Õâ¶Îʱ¼äÔì¾ÍÁËÎÞÊýµÄСÐͲÙ×÷ϵͳ£¬Äú¿ÉÒÔÔÚÐí¶àÍøÒ³ÉÏÕÒµ½µ±Ê±¼Æ»®ËùÁôÏÂÀ´µÄ×ÊѶ¡£Ã¿µ±ÕâЩ¼Æ»®Íê³Éºó£¬²ÎÓë¼Æ»®µÄÈ˾Í×ªÒÆÖÁÁíÒ»¸öеļƻ®; Òò´Ë΢ºËÐIJ¢Ã»ÓÐÔÚѧÊõ½çÊܵ½³ÖÐø¶ø³¤¾ÃµÄÖØÊÓ¡£Ðí¶à¼Æ»®·¢Õ¹³öÀ´µÄ²Ù×÷ϵͳ¶¼Êܵ½Ï൱ºÃµÄÆÀ¼Û£¬µ«ÊÇÖ»ÓÐÉÙÊýµÄ¼Æ»®ÄܼÌÐøµØ±»¹ã·ºÓ¦Óá£Hurd µÄδÀ´Ò²Ðí»áÓëÕâЩ¼Æ»®Ò»Ñù·¦ÈËÎʽò£¬µ«ÊÇ Hurd µÄÌØÐÔÒ²ÈÃËü´ÓÕâЩ¼Æ»®ÖÐÍÑÓ±¶ø³ö¡£

¡¡¡¡Ê×ÏÈ£¬Ò»Ð©ÖØÁ¿¼¶Íæ¼ÒŬÁ¦µÄÍÆ¹ã£¬Ê¹Ëü³ÉΪ Linux ÍâÁíÒ»¸ö¿ª·ÅÔ´´úÂë¡£´ËÍ⣬Free Software Foundation Ò²ÔÞÖúÕâ¸ö¼Æ»®¡£ÒòΪ Hurd ºÜÔç¾Í¿ªÊ¼²¢³ÖÐøµÄ·¢Õ¹£¬¿ÉÊÓΪ¿ª·ÅÔ´´úÂë¼ÛÖµ¹ÛµÄÏȷ棬¶ø FSF ÓëÕâ¼Æ»®Ò²ÓкÜÃÜÇеĹØÏµ¡£²»¹ý£¬±È½ÏÖØÒªµÄÒ»µãÊÇ Debian (http://www.debian.org/) Ò²¼ÓÈëÕâ¸ö¼Æ»®£¬Debian µÄÆ·Öʱ»´ó¼ÒËù³ÆÔÞ£¬²¢Çҹ㷺µØ±»Ê¹Óá£Debian ËùÉú²úµÄ distribution (ÓÖ±»³Æ×÷ "Debian GNU/Linux"£¬ÒòΪ´ó²¿·ÖµÄÈËÈÏΪ Linux ÊÇ GNU ¼Æ»®ÏµIJúÆ·) ±» Linux ¹±Ï×Õ߸߶ÈÔÞÃÀ¡£ËüÒ²±»ÊÓΪ¿ª·ÅÔ´´úÂëÖÐ×î´¿¾»µÄ Linux£¬ÒòΪËüÍêÈ«²»ÊÜÉÌÒµ¸ÉÈÅ£¬ËùÓеĹ©Ï×Õß¶¼ÊÇ×ÔÔ¸µÄ¡£ÎÞÂÛÈçºÎ£¬Debian ¼Æ»®·¢ÐÐ Debian GNU/Hurd distribution£¬ÆäÖаüÀ¨ËùÓÐ Linux distribution ÖеÄÌ×¼þ£¬³ýÁËϵͳ¸ü»»Îª Hurd¡£Õâ¸ö·¢Õ¹×î´óµÄÒåÒâÔÚÓÚ£¬Linux ʹÓÃÕß¿ÉÒÔºÜ˳ÀûµÄת»»ÖÁ Hurd¡£ÔÚ°²×°ÓëʹÓÃÉÏ Linux Óë Hurd »á¾¡¿ÉÄÜÏàͬ¡£´ËÍ⣬Debian µÄ¼ÓÈë½øÒ»²½±£Ö¤ Hurd »á±»Íê³É£¬²¢ÇÒ·¢ÐÐ; ÒòΪ Debian Ôø·¢Ðйý¿ÉÓõÄϵͳ¡£

¡¡¡¡µÚ¶þ¸öÈà Hurd ÄÜ´ÓÕâЩСÐͲÙ×÷ϵͳÖÐÇø¸ô³öÀ´µÄÒòËØ£¬ÊÇËüµÄ·¢Õ¹Õß³ÐŵҪÍêÈ«ÏàÈÝ UNIX¡£µ± Debian ¼ÓÈëʱ£¬×îÖ÷ÒªµÄÒâÒåÔÚÓÚ Hurd ½«»áÏàÈÝ Linux¡£»Ø¹Ë FSF ·¢Õ¹ Hurd Ô­±¾µÄÄ¿µÄ£¬ÊÇÒªÏàÈÝÓÚÒ»¸öÃâ·ÑµÄ UNIX ²Ù×÷ϵͳ£¬¶øÕû¸öϵͳ³ýÁË kernel Íâ¶¼ÒѾ­¿ªÊ¼·¢Õ¹¡£Õâ¸ö¼Æ»®²¢²»±»ÈÏΪÍê³É£¬³ý·ÇËùÓÐµÄ GNU ¹¤¾ß¼°·¢Õ¹¹¤¾ß¶¼¿ÉÒÔÖ´ÐÐÔÚÕâ¸öеIJÙ×÷ϵͳ¡£Òò´Ë£¬·¢Õ¹ Hurd µÄÍÅÌå»ý¼«µÄ¿ª·¢Ò»¸öÄÜÖ´ÐÐ UNIX Ó¦ÓóÌÐòµÄ²Ù×÷ϵͳ¡£Í¬ÑùµÄ£¬Debian ÍÅÌåÒ²Ïë×ªÒÆËûÃÇËù·¢Õ¹µÄ Linux Ì×¼þ¡£Ö»Òª Hurd ÓëΪËü·¢Õ¹µÄÓ¦ÓóÌÐòÄܱ»É¢²¼³öÈ¥£¬ËûÃǾÍËãÊdzɹ¦ÁË¡£Õâ¸öÄ¿±êºÜÃ÷È·£¬ËùÒԼƻ®²ÎÓëÕß¶¼ºÜ»ý¼«µÄÍê³ÉËü£¬³ÉΪһ¸ö¿ÉÒÔʹÓõIJÙ×÷ϵͳ¡£ËûÃÇÑо¿µÄÄ¿µØ²»Ö»ÊÇΪÁËÒ»¸öÍæ¾ß°ãµÄ²Ù×÷ϵͳ¡£Ö»Òª·ÖÎö¹ý Hurd ¼Ü¹¹£¬Äú»á·¢ÏÖÔÚһЩ·¢Õ¹ÈËÔ±µÄÑÛÖУ¬ Hurd ±È Linux »¹ÒªÃÔÈË¡£

Overall Hurd Architecture


¡¡¡¡ÈçÍ¬Ç°ÃæËù˵µÄ£¬Hurd ÓÉÒ»¸ö΢ºËÐļ°°üº¬ÔÚ΢ºËÐÄÍâµÄÒ»×é server (·þÎñ)Ëù×é³É£¬²¢ÓÃÀ´·þÎñÓ¦ÓóÌÐò¡£ÕâÑùÉè¼ÆµÄÄ¿µØÊÇΪÁËÈúËÐÄ¿ÉÒÔ±»Ìæ»»£¬ËùÒÔÉè¼ÆÕß¿ÉÒÔʹÓÃÆäËüºËÐÄÈ¡´úÔ­ÓеĺËÐÄ; ÀýÈ磬ÁíÒ»¸ö²»Í¬µÄÅų̴¦Àí£¬²»Í¬ÑÝËã·¨µÄ¼ÇÒäÌå¹ÜÀí¡£µ½Ä¿Ç°ÎªÖ¹£¬Hurd Ï൱ÒÀÀµ Mach ΢ºËÐÄ£¬Ò»¸öÏ൱ÓÐÃûµÄ΢ºËÐÄ¡£Mach ÓÐÐí¶à²»Í¬µÄ°æ±¾Óë±äÖÖ£¬ÆäÖÐÒ»¸öʹÓÃÓÚ Hurd µÄ¾ÍÊÇ GNU Mach£¬ËüÊÇÒ»¸ö¿ª·ÅÔ´´úÂëµÄ Mach£¬Ò²ÊÇ GNU ¼Æ»®µÄÒ»²¿·Ö¡£ÔÚ Mach ÖÜΧµÄÔòÊÇ server (ÕâЩÊǶÀÁ¢µÄ daemon£¬Ï໥¼äÓж¨ÒåÍêÕûµÄ½éÃæ) ÓëÓ¦ÓóÌÐò¡£

The Mach Microkernel


¡¡¡¡Mach ÊǸöÏ൱ÓÐÃûµÄ΢ºËÐÄ¡£Èç¹ûÄúÔÚ×î½üÊ®ÄêÄÚÐÞ¹ý²Ù×÷ϵͳ£¬ÄÇÄúÓ¦¸ÃÓлú»áѧµ½Ëü¡£Mach ±»Ðû³ÆÊÇÒ»¸öÒÔÎï¼þΪµ¼ÏòµÄºËÐÄ£¬Ò»Ð©ÑϽ÷µÄÈËÈÏΪÕâÊǸöÇú½â£¬ÈçͬËüʹÓà C ÓïÑÔÀ´¿ª·¢£¬C ÓïÑÔ²¢Ã»ÓÐËùνµÄ inheritance (¼Ì³Ð) Óë polymorphism (¶àÐÍ)¡£¾¡¹ÜÈç´Ë£¬Mach »¹Êǿɱ»ÊÓΪÒÔÏÂÕâЩԪ¼þËù×é³É: ports (²º)¡¢messages (ѶϢ)¡¢tasks (¹¤×÷)¡¢threads (Ð÷) Óë virtual memory (ÐéÄâ¼ÇÒäÌå)¡£Èçͬһ¸öÉè¼Æ³ÉÊìµÄÎï¼þµ¼Ïòϵͳ£¬ÕâЩÎï¼þµÄ½éÃæÒѾ­¶¨ÒåÃ÷È·£¬Òò´ËÎï¼þÄڵĸı䲻»áÓ°Ï쵽ʹÓÃÕâЩÎï¼þµÄ³ÌÐò¡£

¡¡¡¡Äú¿É½« Mach ÖÐµÄ task ¿ÉÒÔÊÓΪ UNIX »·¾³ÖÐµÄ process¡£ ¶ÔÖ´ÐÐÖеijÌÐò¶øÑÔ£¬ËüÊÇÒ»¸ö¿ÉÖ´ÐеĻ·¾³£¬ÈçͬÐéÄâ¼ÇÒäÌå»òÊÇ´¦ÀíÆ÷µÄÖ´ÐÐÖÜÆÚ¡£²»¹ý£¬Ïà¶ÔÓÚ´«Í³ UNIX µÄ process£¬Mach µÄ task ²¢²»±íʾ°üº¬Ò»¸öÕýÔÚÖ´ÐÐµÄ thread£¬¶Ô Mach ¶øÑÔ£¬thread Ò²ÊÇÒ»¸ö¶ÀÁ¢µÄÎï¼þ¡£Òò´Ë£¬Ò»¸öÓÐÓÃµÄ task ±ØÐë°üº¬ÖÁÉÙÒ»¸ö thread¡£Mach µÄ thread ÓëÆäËü³£¼û²Ù×÷ϵͳ (ÏñÊÇ UNIX »òÊÇ Windows) µÄ thread ÊÇÒ»ÑùµÄ£¬ÔÚͬһ¸ö task ÖÐµÄ thread Ï໥ͬÏí¼ÇÒäÌåÓëÆäËü×ÊÔ´¡£Mach ÔÚÉè¼ÆÊ±£¬¾ÍÏ£Íû³ÉΪһ¸ö multithread£¬¶øÇÒ¿ÉÒÔÓÐЧִÐÐÓÚ¶à¿Å´¦ÀíÆ÷ÉÏ¡£Ïà¶ÔµÄ£¬Linux ·¢Õ¹Ö®³õ£¬Ö»ÊÇÒ»¸öÒÔ singal thread Ϊµ¼ÏòµÄϵͳ£¬multithread Óë¶à´¦ÀíÆ÷µÄ¹¦ÄÜÒ²Ö»ÔÚ×î½ü¼ÓÈë¡£Linux ¿ÉÒÔÖ´ÐÐ multithread ÊÇÒòΪËüʹÓÃ×î½üÁ÷´«¹ã·ºµÄ glibc C º¯Ê½¿â£¬ÖÁÓÚ¶à´¦ÀíÆ÷²¿·ÖËäÈ»ÒѾ­½øÐУ¬µ«ÊÇ»¹Ã»Íê³É¡£ÎÞÂÛÈçºÎ£¬Mach Óë Hurd ÔÚÉè¼Æ³õÆÚÒÑ¿¼ÂDz¢°üÀ¨ÕâЩ¸ÅÄî¡£

¡¡¡¡Task ÔÚ Mach ÖÐ×îÖ÷ÒªµÄ¹µÍ¨·½Ê½ÊÇʹÓà port¡£Mach µÄ port ÓеãÏñÊÇ socket ÖÐµÄ port£¬Á½¸ö task ¼äµÄÒ»Ìõ¹µÍ¨¹ÜµÀ¡£Èçͬ socket »·¾³Ï嵀 port£¬Mach µÄ port ±»Éè¼ÆÔÚÁ½¸ö²»Í¬µÄ thread Ö´ÐÐÓÚͬһ¸ö´¦ÀíÆ÷¡¢²»Í¬µÄ´¦ÀíÆ÷£¬»òÊÇÍøÂçÉϲ»Í¬µÄµçÄÔʱµÄͨѶ¶¯×÷¡£ÒòΪ port Ö÷ÒªµÄÓÃÒâÔÚÓÚÁ½¸ö Mach Ó¦ÓóÌÐò¼äÄÚ²¿µÄͨѶ£¬ËùÒÔÕâ¸öÉè¼Æ¿ÉÒÔÇáÒ×µØÀ©Õ¹µ½¶à¿Å´¦ÀíÆ÷¡£Í¬ÑùµÄ£¬ÕâЩ×ÊÁϵÄÄÚÈÝÔÚ´«ËÍǰ±ØÐëÐÎ³É message (ѶϢ)£¬message ÊÇ Mach ÄÚµÄÒ»ÖÖÎï¼þ¡£×îºó£¬Mach Ìṩ memory-management servers (¼ÇÒäÌå¹ÜÀí·þÎñ)£¬ÆäÄ¿µØÔÚ¸÷ task ¼ä·ÖÏí¼ÇÒäÌå¡£

The Hurd Servers

¡¡¡¡Mach ΢ºËÐÄÓÐÐí¶àÌØÐÔ£¬µ«ÊÇÕâЩ¶Ô Hurd ¶øÑÔ¶¼²»ÖØÒª¡£Hurd Ö»ÐëҪ΢ºËÐÄÌṩ¼¸¸ö»ù±¾¶ø¼òµ¥µÄ¹¦ÄÜ: Åų̡¢task ½¨Á¢Óëɾ³ý¡¢IPC¡¢¼ÇÒäÌå¹ÜÀí¡£»»¾ä»°Ëµ£¬ÀíÂÛÉÏÆäËüµÄ΢ºËÐÄÖ»ÒªÌṩÕâЩ»ù±¾¹¦ÄÜ£¬¾Í¿ÉÒÔÈ¡´ú Mach£¬ËùÒÔ Hurd ÓкܸߵÄÒÆÖ²ÐÔ; ²»¹ýĿǰΪֹ£¬ Hurd ֻʹÓà Mach Õâ¸ö΢ºËÐÄ¡£³ýÁË΢ºËÐÄÍ⣬Hurd ÁíÒ»¸öÈÃÈ˸е½ÐËȤµÄ¼¼Êõ¾ÍÊÇ multiserver µÄÉè¼Æ¡£ÕâЩ»·ÈÆÔÚ΢ºËÐÄÅ﵀ server ¶¼Ö´ÐÐÓÚ user mode£¬²¢ÌṩӦÓóÌÐòËùÐëµÄ·þÎñ¡£ÓÉÕâЩ server ÓëÆäÌØÐÔ¿´À´£¬¿ÉÒÔÇå³þµÄÁ˽â Hurd Õû¸öÉè¼Æ¡£

¡¡¡¡Authentication server ÔÚ²»Í¬ task ¼äͨѶʱ£¬ÌṩʹÓÃÕßÉí·ÖÑéÖ¤¡£Ò»¸ö task ¿ÉÒÔ͸¹ý port Á¬µ½ authentication server ʹÓÃÆäËùÌṩµÄ·þÎñ£¬²¢ÀûÓÃÕâЩ·þÎñÀ´±æÊ¶ÆäËüµÄ task¡£Òò´Ë authentication server Ìṩ Hurd »ù±¾µÄ°²È«»úÖÆ¡£²»¹ýÖµµÃ×¢ÒâµÄÊÇ£¬Õâ¸ö server ûÓÐÊ²Ã´ÌØ±ð£¬ËüÓëÆäËü Hurd µÄ server Ò»Ñù£¬¶¼ÊÇÔÚ user-space Ö´ÐС£Òò´Ë£¬ÈκÎÈË¿ÉÒÔÉè¼Æ²¢ÇÒÖ´ÐÐËû(Ëý)×Ô¼ºµÄ authentication server; ÆäÈç¹ûËüʹÓÃÕßÐÅÈÎÕâ¸ö server£¬ÄÇËûÃÇ¿ÉÒÔ×ÔÓɵÄʹÓÃËü£¬Èç¹ûËûÃDz»ÐÅÈÎÕâ¸ö server£¬ÄÇ¿ÉÒÔ²»Ê¹ÓÃËü¡£

¡¡¡¡Process server »ù±¾ÉϰçÑÝÒ»¸öÇÅÁº£¬½åÓÚÒÔ UNIX Ϊ¸ÅÄîµÄ process ¼°ÒÔ Mach Ϊ¸ÅÄîµÄ task¡£×ñÑ­ POSIX ±ê×¼µÄ UNIX ÓÐÐí¶à¸ÅÄîÎÞ·¨Ê¹ÓÃÓÚ Mach£¬ÕâЩȱÉٵŦÄܾÍÓÉ process server À´²¹×ã¡£´ËÍ⣬process server ÌṩÁËÕû¸öϵͳËùÓÐ process µÄ×ÊѶ -- task ¿ÉÔÚ process server ÖÐ×¢²á£¬Èç´ËÆäËüµÄ task (ÀýÈç UNIX Ï嵀 process server ³ÌÐò) ¾Í¿ÉÒÔ»ñµÃϵͳÖÐÆäËü task µÄ×ÊѶ¡£µ«ÊÇ£¬Õ⶯×÷²»ÊÇÇ¿ÖÆµÄ£¬process ¿ÉÒÔÑ¡Ôñ²»ÔÚ process server ×¢²á£¬Òò´ËÆäËü process Ò²¾ÍÎÞ·¨»ñµÃÕâ¸ö process µÄ×ÊѶ¡£

¡¡¡¡Hurd »¹°üÀ¨Ðí¶àÆäËü server£¬ÏñÊÇÒÔ socket ΪͨѶ»ù´¡µÄ server£¬NFS server µÈµÈ¡£ÕâЩ server Óë Hurd Ò»Ñù»¹ÔÚ·¢Õ¹ÖС£¼ÇµÃÒ»µã£¬Ê¹ÓÃÕß¿ÉÒÔËæÐÄËùÓûµÄ¼ÓÉÏËûµÄ server£¬Õâ¸ö¶¯×÷²»ÐëÒªÌØ±ðµÄȨÏÞ¡£

¡¡¡¡³ýÁË server£¬Hurd ÁíÒ»¸öÖØÒªµÄ¸ÅÄî¾ÍÊÇËùνµÄ translator¡£Äú¿ÉÒÔ½« translator ÊÓΪÄúÊìϰµÄ UNIX Æäµµ°¸ÏµÍ³ÌØÉ«µÄʵÏÖ£¬ÏñÊÇ mount points¡¢devices »¹ÓÐ symbolic links¡£ÔÚ Hurd µµ°¸ÏµÍ³ÖУ¬Ã¿¸öµµ°¸¶¼±»Á¬½áµ½Ò»¸ö½Ð "translator" µÄ³ÌÐò¡£µ±Ê¹ÓÃÕß³ÌÐò´æÈ¡Õâ¸öµµ°¸Ê±£¬¿ØÖÆÈ¨¾Íת½»¸ø translator À´´¦Àí¡£Èç¹û´æÈ¡¶¯×÷ÊǶÁÈ¡ disk ÖÐÕæÕýµÄµµ°¸£¬ÔòÕâÖÖµµ°¸ÏµÍ³¸ñʽµÄ translator »áÏò disk ÒªÇó×ÊÁÏ£¬²¢´«»ØÓ¦ÓóÌÐò¡£Èç¹û´æÈ¡µÄÊÇ device£¬ÔòÕâ¸ö device µÄ driver »á´¦Àí¡£Í¬ÑùµÄ£¬ÔÚ´æÈ¡ symbolic link ʱ£¬translator »áÖ±½Óµ¼Ïòµ½Ö¸¶¨µÄλÖ㬻òÊÇÆäËüµÄµµ°¸¼Ü¹¹¡£

¡¡¡¡Ä¿Ç°ÎªÖ¹£¬translator ×öµ½Á˱ê×¼ UNIX ϵͳÎÞ·¨´ïµ½µÄ¹¦ÄÜ£¬ËüÌṩÁË files¡¢device Óë symbolic link Ò»ÖµĴæÈ¡¶¯×÷¡£Hurd µÄ translator »¹¿ÉÒÔÓ¦ÓÃÓÚÈκÎÖÖÀàµÄ×ÊÁÏ¡£ÒÔ FTP ´æÈ¡ÎªÀý£¬¶Ô·½ÏµÍ³Öеĵµ°¸¿ÉÒÔÖ±½Ó¶ÔÓ¦ÖÁÄúµÄµµ°¸½á¹¹ÖÐ (ÏñÊÇ /ftp/ftp.mydomain.com/pub/myfile)£¬Äú¿ÉʹÓÃÔ­ÓеŤ¾ß½øÀ´¿½±´¡¢É¾³ý»òÊDZ༭¡£Translator »áת»»µ½¶ÔÓ¦ FTP ¶¯×÷¡£Äú¿ÉÒÔÏëÏñÆäËüµÄ translator ÓÐÄÇЩ¹¦Óã¬ÏñÊÇÄú¿ÉÒÔʹÓà cat »òÊÇ ls µÈ¹¤¾ß͸¹ý translator À´Á÷ÀÀÊý¾Ý¿âµÄÄÚÈÝ¡£»òÊÇÍø¹Ü¹¤¾ß¿ÉÒÔд³É translator£¬ÍøÂçÄÚËùÓеĵçÄÔ¿ÉÒÔ¶ÔÓ¦µ½Ò»¸öĿ¼¡£Cat ¿ÉÒÔÁгöÍøÂçµÄ×ÊÁÏ£¬ÏñÊÇ»úÆ÷µÄ IP λַ¡£Gateway ¿ÉÒÔÊÓΪĿ¼£¬ËùÒÔÖ´ÐÐ cd µ½Ò»¸ö gateway ʱ£¬¿ÉÒÔ¿´µ½Õâ¸ö gateway ÏÂ×ÓÍøÓòËùÓеĻúÆ÷¡£Óë server ÏàͬµÄÒ»µã£¬translator ²»ÒªÐë¶îÍâµÄȨÏÞ¡£ÈκÎÈ˶¼¿ÉÒÔ¿ª·¢×Ô¼ºµÄ translator£¬³ý´í²¢³¢ÊÔÍê³É£¬ÈÃÆäËüʹÓÃÕßÒ²¿ÉÒÔÒ»ÆðʹÓá£

Current Hurd Status


¡¡¡¡ÈçÍ¬Ç°ÃæËù˵µÄ£¬ÏÖÔÚ»¹²»ÊʺÏÍÆ¼ö Hurd ¸øÒ»°ãʹÓÃÕß¡£ÒòΪÕâϵͳ»¹È±ÉÙһЩ»ù±¾µÄ¹¦ÄÜ£¬ËùÒÔÉÐδ´ïµ½Ê¹ÓÃÕßËùÄܲÙ×÷µÄ³Ì¶È¡£Hurd Ŀǰ¿ÉÒÔ×öµ½Ò»Ð© Linux ÎÞ·¨´ïµ½µÄ¹¦ÄÜ¡£Òò´Ë£¬Óо­ÑéµÄ Linux hacker »¹ÊÇ¿ÉÒÔÕÒµ½·½Ê½À´¼ÝÔ¦Ëü£¬Èç¹ûÄúÏë¶ÔËüÓÐЩ¹±Ï×£¬Ä¿Ç°»¹ÓÐÐí¶à»ú»á¡£ÒòΪ Hurd Éè¼ÆÓÅÁ¼£¬´ó²¿·ÖµÄ³ÌÐòÉè¼ÆÕ߻ᷢÏÖËü±È Linux ¸üÈÝÒ×Á˽⡣

¡¡¡¡´ËÍ⣬Hurd µÄÄ£×黯Éè¼ÆÔÊÐíÄúÒ»ÔÙµÄΪËüÁ¿Éí¶©×ö¡£Äú»á·¢ÏÖÕâЩ server ¿ÉÒÔÇáÒ׵ı»¼ÓÈë»òÊÇÒÆ³ý; »òÊÇ΢ºËÐÄÒ²¿ÉÒÔ±»È¡¶ø´úÖ®¡£ËùÒÔ£¬ÎÒÃÇ¿ÉÒÔÏëÏñ£¬Hurd »áÒò²»Í¬µÄÌØÊâÐèÇó¶ø²úÉú²»Í¬µÄ±ä»¯£¬ÌرðÔÚǶÈëʽӦÓá£ÎÒÃÇ¿ÉÒÔʹÓà real-time µÄ΢ºËÐÄÈ¡´ú GNU µÄ Mach£¬Ò²¿ÉÒÔÒÆ³ýʹÓò»µ½µÄ server¡£¾­¹ýÕâЩССµÄ¸Ä±ä£¬ÎÒÃÇÒѾ­ÊÖ¶¯Íê³ÉÒ»¸öÍêÕûµÄ real-time ²Ù×÷ϵͳ¡£Ò»¸öǶÈëʽӦÓÿÉÒÔɾ³ý´ó²¿·ÖµÄ server£¬Ö»ÁôÏÂÉÙÊýÉϲãËùÓõ½µÄ server¡£ÕâЩӦÓóÌÐò¿ÉÒÔÔÚͬÑùµÄ×ÀÉÏÐÍ OS ¿ª·¢¡£Linux ÃÔÈ˵ÄÒ»µã¾ÍÊÇ¿ÉÒÀÕÕÐèÇó×ÔÓɵIJúÉúËùÒªµÄ²Ù×÷ϵͳ¡£Hurd Ò²ÓÐͬÑùµÄDZÔÚ¿ÉÄÜ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ