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

LinuxÍøÂçÄںˡªÑ§Ï°Óë˼¿¼

·¢²¼Ê±¼ä:2007-11-05 01:19:00À´Ô´:ºìÁª×÷Õß:Entertr
¡¡¡¡¶Ô²Ù×÷ϵͳµÄÈí¼þÌåϵ½á¹¹½øÐгéÏó£¬Ò»°ãÈÏΪLinuxÄÚºËÓɽø³Ìµ÷¶È(SCHED)¡¢ÄÚ´æ¹ÜÀí(MM)¡¢ÐéÄâÎļþϵͳ(VFS)¡¢½ø³Ì¼äͨÐÅ(IPC)ÒÔ¼°ÍøÂç½Ó¿Ú(NET)µÈÎå¸ö×Óϵͳ¹¹³É£¬¸÷¸ö×Óϵͳ¶¼¶ÔÆäËü×Óϵͳ´æÔÚ×Ų»Í¬³Ì¶ÈµÄÒÀÀµ¹Øϵ£¬ÆäÄÚÔÚ΢ÃîÁªÏµÓë±Ë´Ë¼ä¸´ÔÓµÄͨÐÅΪÕû¸öϵͳµÄ׿ԽÐÔÄܵ춨ÁË»ù´¡¡£½ö´Ó²Ù×÷ϵͳµÄÕâ¸öÒ»°ãÊÓ½ÇÀ´¿´£¬ÍøÂç×ÓϵͳÒѾ­ÏÔʾÆä²»¿ÉºöÊÓµÄÖØÒªÐÔ£¬ÍøÂ繦ÄÜÒ²ÔçÒѳÉΪÏÖ´ú²Ù×÷ϵͳµÄ»ù±¾Ä¿±êÖ®Ò»¡£µ«Êµ¼ÊÉÏLinuxÒ»¿ªÊ¼±ãµ®ÉúÓÚÍøÂ磬Æä²»¶ÏµÄ׳´óÓëÍêÉƱ¾ÉíÒ²ÊÇÔÚÍøÂç»·¾³ÖÐÍƽø£¬×÷ΪһÖÖÖ÷Á÷µÄÍøÂç²Ù×÷ϵͳ£¬ËüÒÔÆäÇ¿´óµÄÍøÂçÖ§³Å¹¦ÄÜ¡¢¸ß¼¶±ðÍøÂ簲ȫÐÔÄܺͳÖÐøÎȶ¨ÔËÐеÈÌØÐÔÔÚÓ¦Ó÷þÎñÆ÷ƽ̨Êг¡µÄÕ¼ÓзݶîÖðÄêÔö³¤£¬²»½öÊÇ΢Èí»ùÓÚNT¼¼ÊõµÄÍøÂç·þÎñÆ÷ÔÚÕâÒ»ÁìÓò×î´óµÄÇ¿µÐ£¬¶øÇÒ¾ÍÕû¸öÓ¦ÓÃÁìÓòÀ´¹Û²ì£¬LinuxÍøÂç·þÎñÆ÷ƽ̨һֱÒÔÀ´Ò²¶¼ÊÇÕ¼¾Ý×ÅÖ÷ÒªµÄÖ§ÅäλÖá£

¡¡¡¡LinuxÄں˵ÄÍøÂ粿·Ö¼´ÆäÍøÂçÄں˱¾ÉíÒ²ÊÇ°´ÕÕ²ã´ÎÄ£ÐÍÀ´²¼¾ÖµÄ£¬Óû§µÄÓ¦Óýø³ÌÓëÍøÂçÄں˵ÄÖ±½Ó½Ó¿ÚÊÇSocket£¬¾ßÌåµÄÍøÂçͨÐÅЭÒ鹤×÷ÓÚSocketÏÂÃæµÄЭÒé²ã£¬´¦ÓÚ×îµ×²ãµÄÊÇÍøÂçͨÐŵÄÓ²¼þÉ豸¡£ÊÂʵÉÏÔÚÕâÿһ¸ö²ã´ÎµÄÄÚ²¿ÓÖ´æÔÚ×Ŷà¸ö¿ÉÒÔ¶ÏÐøϸ·ÖµÄÖî¶à²ã´Î£¬ÍøÂçÉÏ´«ÊäµÄÊý¾ÝÔÚµ½´ïÖ÷»ú»òÊǽ«Òª´ÓÖ÷»ú·¢Ëͳöȥ֮ǰ·Ö±ðÑØ×Å×Ô϶øÉϺÍÓÉÉϵ½ÏµĴÎÐò½øÐд«µÝ£¬²»ÄÜ¿çÔ½ÆäÖеÄÈκÎÒ»¸ö²ã´Î£¬Äں˶ÔÕâÒ»´«Êä·¾¶µÄΨһÐԵı£Ö¤³ÉΪÕû¸öÍøÂç×ÓϵͳµÄ¿É¿¿ÐÔÓë׼ȷÐÔµÄÇ°Ìá¡£

¡¡¡¡ÎÒÃÇÖªµÀLinuxµÄÄÚºËÔ´ÂëÖ÷ÒªÊÇÓÃCÓïÑÔ±àд¡£²»¹ý£¬ÔÚÍøÂç×ÓϵͳµÄÉè¼ÆÓëʵÏÖÉÏ£¬ÃæÏò¶ÔÏóµÄÉè¼Æ˼ÏëÔòµÃµ½ÁËÃ÷ÏÔµÄÌåÏÖ¡£¾¡¹ÜûÓÐÖ±½ÓÒýÈëÀàµÄ¶¨Ò壬ҲûÓÐÕýʽµÄ·â×°¼Ì³ÐµÈÃ÷È·µÄOOP¸ÅÄµ«Æ佫Êý¾ÝµÄÊôÐÔÓë²Ù×÷¼¯ºÏÉè¼ÆÔÚij¸ö¼¯³ÉµÄÊý¾Ý½á¹¹ÖеÄ˼ÏëÔÚ±¾ÖÊÉÏ»¹ÊÇÏÔʾÁËÃæÏò¶ÔÏóµÄÌØÐÔ£¬±ÈÈçÍøÂçÄں˲¿·Ö×îΪÖØÒªµÄÊý¾Ý½á¹¹device½á¹¹ºÍsk_buff½á¹¹¾ÍÊǺܺõÄʵÀý¡£ÔÚÕâÖÖÃæÏò¶ÔÏóµÄÉè¼Æ˼·Ï£¬ÍøÂçÉ豸½Ó¿Ú¡¢Socket»º³åÇø¡¢Socket¼°ÍøÂçЭÒé±»ÊÓΪÕâÒ»×ÓϵͳµÄºËÐÄ¡±ÍøÂç¶ÔÏó¡±£¬¶øÕû¸öÍøÂçÄں˵ÄÉè¼ÆʵÏÖÒ²ÕýÊÇΧÈÆ×ÅÕâËĸöÖ÷Òª¶ÔÏó¼°ÆäÏ໥¼äµÄÁªÏµºÍͨÐÅÕ¹¿ªµÄ¡£ÕâËÄÕß·Ö±ðÌåÏÖ×ÅÍøÂç×ÓϵͳÓëÄں˵ÄÆäËü×Óϵͳ¼äµÄ¹Øϵ£¬ÍøÂçÄں˵ÄÔËÐÐÀë²»¿ªVFS¡¢MMÒÔ¼°SCHEDµÄÖ§³Ö£¬ÆäÖеÄSocket»º³åÇø¶ÔÏóÕýÊÇ·´Ó³ÁËÍøÂç×ÓϵͳÓëMMµÄÃÜÇйØϵ¡ª¡ªSocket»º³å±¾Éí¾ÍÊÇÔÚÐéÄâÄÚ´æÖпª±ÙµÄÒ»¿é¿Õ¼ä£¬¶ÔËüµÄ¹ÜÀíʵ¼ÊÉϺܴó³ÌÐòÉ϶¼ÊÇÒÀÀµÓÚÄÚ´æ¹ÜÀí×ÓϵͳÌṩµÄ¹¦ÄÜ;¶ø¶ÔSocketÕâÒ»ÍøÂç¶ÔÏóµÄ¹ÜÀíÉæ¼°µ½ÐźÅͬ²½£¬ÎļþÃèÊöÐзûµÄ·ÖÅäÓë·ÃÎʵÈÄÚºËÖÐSCHEDºÍFSµÈ×ÓϵͳµÄ¹¦ÄÜ¡£

¡¡¡¡Socket»º³åÇø
¡¡¡¡ÍøÂçͨÐÅЭÒé
¡¡¡¡Socket£¨Ì×½Ó×Ö£©
¡¡¡¡ÍøÂçÉ豸½Ó¿Ú

¡¡¡¡ÍøÂçÄں˶ÔÏó¼°ÆäÏ໥¹Øϵ

¡¡¡¡ÔÚÉÏÊöµÄËĸöºËÐĵÄÍøÂç¶ÔÏóµ±ÖУ¬Socket»º³åÇøÒòÆäÓëÆäËüÈý¸ö¶ÔÏó¾ùÓÐ×ÅÖ±½ÓµÄÒÀÀµ¹Øϵ¶ø³ÉΪ×îºËÐĵÄÍøÂç¶ÔÏó£¬ÊÂʵÉÏLinuxµÄÍøÂçÄÚºËÔ´ÂëÖÐÒ²µÄÈ·ÊÇÔÚ¶ÔÍøÂ绺³åÇøµÄ¹ÜÀíÉÏ»¨·ÑÁË×î¶àµÄ·ÝÁ¿¡£ÎÒÃÇ¿ÉÒÔ½áºÏÍøÂçÖÐÁ½¸ö¶Ëµã¼äÒ»´ÎͨÐŵŤ×÷Á÷³ÌÀ´Àí½âÕâÖÖ»º³åÇøµÄ×÷Ó㺵±·¢ËÍ·½ÓÐÊý¾ÝÒª·¢³ö¶ø½¨Á¢ÆäÓÃÓÚ·¢Ë͵ÄSocketºó£¬ÏàÓ¦µÄSocket»º³åÇø±ã»áÔÚÌ׽Ӳ㽨Á¢ÆðÀ´£¬È»ºóËæ×ÅÊý¾Ý´ÓÓ¦Óýø³Ì×ÔÉ϶øÏÂÏòÎïÀí²ã´«Ê䣬¸÷²ãЭÒé»áÔÚͬÑùÏòÏ´«µÝµÄSocket»º³åÇøÖÐÌí¼Ó¶ÔÓ¦µÄЭÒéÍ·²¿ºÍβ²¿(Header&Tail)£¬×îºóµ±ËùÒª·¢Ë͵ÄÊý¾ÝÔÚÎïÀí²ã×éÖ¯³É±ÈÌØÁ÷ºó£¬Socket»º³åÇøÔڴ˲ãÊͷŶøÏûʧ¡£µ±Êý¾Ý¾­ÓÉÍøÂçͨ·µ½´ï½ÓÊն˺ó£¬ËùÒª½øÐеŤ×÷»ù±¾ÉÏÓë´ËÏà·´£ºSocket»º³åÇøÔÚÎïÀí²ã½¨Á¢£¬²¢¿ªÊ¼ÑØ×Å×Ô϶øÉϵĴÎÐòÒÀ´Î´«µÝµ½½ÓÊÕ·½µÄSocekt²ã£¬ÔÚÕâ¸ö´«µÝµÄ¹ý³ÌÖи÷²ãЭÒéµÄÍ·²¿Óëβ²¿ÔÚ´ÓÊý¾Ý°üÖÐÒƳýµÄͬʱҲ»áÔÚSocekt»º³åÇøÖб»É¾³ýµô£¬×îºóµ±Êý¾Ýµ½´ï½ÓÊÕ·½µÄSocket²ãºó£¬ÕæÕýÒª´«µÝµÄÊý¾Ý½»¸ø½ÓÊն˵ÄÓ¦Óýø³Ì£¬Socket»º³åÇøÔÚÌ×½Ó²ãÏûʧ¡£ÕâЩ¹¤×÷µÄÖ´ÐУ¬°üÀ¨¶Ô×éÖ¯ÕâЩÍøÂ绺³åÇøµÄÁ´±íµÄ²Ù×÷ʵÏÖ£¬¶¼ÓÐÀµÓÚLinuxÍøÂçÄÚºËÌṩµÄÓйØÓÚSocket»º³åÇø·ÖÅä»ØÊÕºÍÁ÷³Ì¿ØÖƵÄһϵÁк¯Êý½Ó¿ÚµÄµ÷Ó᪡ªÕâЩµ÷ÓÿÉÒÔÔÚÍøÂçÉ豸Çý¶¯³ÌÐòµÄһЩ±ê×¼Àý³ÌÖÐÕÒµ½¡£

¡¡¡¡ÁíÒ»¸ö¼«Îª¹Ø¼üµÄ½á¹¹ÊÇdevice£¬ÈÝÒ׿´³öËüÊÇÓëËĸöºËÐÄÍøÂç¶ÔÏóÖеÄÍøÂçÉ豸½Ó¿ÚÃÜÇÐÏà¹ØµÄ£¬ÊÂʵÉÏÕâÒ»½á¹¹Éæ¼°µ½Ò»°ãµÄÉ豸Çý¶¯³ÌÐò±àдµÄÎÊÌâ¡£ÏòLinuxÄÚºË×¢²áÒ»ÖÖеÄÍøÂçÉ豸×îÖ÷ÒªµÄ¹¤×÷¿ÉÒÔ¼òµ¥µØÈÏΪÊÇÍê³ÉÕâÒ»½á¹¹ÖÐËù¶¨ÒåµÄÄÚÈݲ¢½«Æä¹Òµ½ÏµÍ³µÄÍøÂçÉ豸±íµ±ÖÐÈ¥¡£µ±È»£¬Linux¶ÔÄ£¿é»úÖƵÄÖ§³ÖÊÇÆäÖØÒªÓŵãÖ®Ò»£¬Èç¹ûÍøÂçÉ豸Çý¶¯ÊÇÓÃÄ£¿éµÄÐÎʽ´æÔÚ¶ø²»ÊDZàÒëµ½Äں˱¾Éíµ±ÖУ¬Ôò»¹ÐèÒª×öһЩÓëÄ£¿éµÄ×¢²á¡¢³õʼ»¯£¬Ð¶ÔصÈÏà¹ØµÄ¹¤×÷£¬Õⲿ·ÖÄÚÈݱ¾Éí¿ÉÒÔ˵µÄÒѾ­²»ÉÙÁË£¬Áôµ½Ï´ÎÌÖÂÛ°É¡£µ«²»µÃ²»Ìáµ½µÄÊÇÔÚÕâ¸ö½á¹¹ÖаüÀ¨ÁËËùÓÐÔÚ¸ÃÍøÂçÉ豸ÉϽøÐÐÊý¾ÝµÄ·¢ËÍÓë½ÓÊÕ´ÓFSµÄ²ãÃæËùÐèÒªµÄ±ê×¼²Ù×÷Àý³Ì¼¯ºÏ£¬²»ÄܺöÊÓµÄÒ»µãÊÇÍøÂçÉ豸±¾Éí¶ÔLinux¶øÑÔÒ²Êǵ±×÷ÎļþÀ´´¦ÀíµÄ£¬ÎÒÃÇËùÊìϤµÄfile½á¹¹ÖÐfile_operations*Ö¸Õ뽫ÐèÒªÖ¸ÏòÕâÒ»²Ù×÷¼¯¡ª¡ªÍøÂçÊý¾ÝµÄ·¢ËÍÓë½ÓÊÕ±¾ÉíÒ²¾ÍÊǶÔÍøÂçÉ豸ÎļþµÄ¶Áд²Ù×÷¡£

¡¡¡¡ÉÏÃæÆäʵÒѾ­Éæ¼°µ½ÁËLinuxµÄÌ×½Ó×Ö²ã´ÎÎÊÌ⣬¶Ô´ËÎÒ¾õµÃÓбØÒªÀí½âµÄÊÇÔÚÎÒÃǽøÐÐÍøÂçÓ¦Óñà³ÌʱËùÊìÖªµÄSocketʵ¼ÊÉÏÊÇ´¦ÓÚÕâÒ»²ã´Î×îÉÏÃæµÄBSDSocket²ã£¬ÕâÒ»²ã¿ÉÒÔÈÏΪÊÇÒ»¸öͳһµÄ³éÏóÌ׽Ӳ㣬ËüÆÁ±ÎÁËÏÂÃæµÄµØÖ·×åÌ×½Ó²ãËùÇ£Éæµ½µÄ²»Í¬µØÖ·×åÔÚÑ°Ö··½Ê½£¬Í¨ÐÅЭÒé·½ÃæµÄ²îÒì¡£±ÈÈçÎÒÃÇ×îΪÊìϤµÄTCP/IP¶ÔÓ¦ÓÚINETµØÖ·×壬ÕâÒ»²ã´ÎÏàÓ¦µØ¾ÍÊÇINET²ã¡£ÔÚÕâ¸ö²ã´ÎÄ£Ð͵Ä×îÏÂÃæÊÇЭÒé²ã£¬¾ßÌå¶øÑÔÒ²¾ÍÊÇÉϲãµØÖ·×åËù°üº¬µÄһЩÍøÂçͨÐÅЭÒ飬ÈçTCP¡¢UDP¡£ÍøÂçÓ¦ÓóÌÐòÖе÷ÓõÄBSDSocketµÄ²Ù×÷ÊÇÒÔµØÖ·×åÔÚÄÚºËÖÐËù×¢²áµÄЭÒé²Ù×÷¼¯Ìṩ֧³ÅΪ»ù´¡µÄ£¬ÄÚºËÖÐpopsÏòÁ¿¸÷ÏîÖеÄproto_ops½á¹¹Ö¸ÕëËùÖ¸ÏòµÄ½á¹¹Öаüº¬ÁËÕâЩЭÒé²Ù×÷Àý³ÌµÄ¶¨Òå¡£

¡¡¡¡ÒÔÉϽö½öÊÇÔÚѧϰLinuxÄÚºËÖеÄһЩ¸öÈËÀí½â£¬ÏàÐűíÊö´íÎó¿Ï¶¨»áÓУ¬ºÜÏ£ÍûÄܵõ½´ó¼ÒµÄÖ¸µã£¬Ò²ÆÚ´ýÄܺ͸÷λһÆðÌÖÂÛѧϰ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ