LinuxÍøÂçÇý¶¯³ÌÐò±àд(ËÄ)
¡¡Èý.±àдLinuxÍøÂçÇý¶¯³ÌÐòÖÐÐèҪעÒâµÄÎÊÌâ
¡¡¡¡3.1 ÖжϹ²Ïí
¡¡¡¡LinuxϵͳÔËÐм¸¸öÉ豸¹²Ïíͬһ¸öÖжϡ£ÐèÒª¹²ÏíµÄ»°£¬ÔÚÉêÇëµÄʱºòÖ¸Ã÷¹²Ïí·½Ê½¡£ÏµÍ³ÌṩµÄrequest_irq()µ÷Óõ͍Ò壺
¡¡¡¡¡¡¡¡int request_irq(unsigned int irq,
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡unsigned long irqflags,
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡const char * devname,
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡void *dev_id);
¡¡¡¡Èç¹û¹²ÏíÖжϣ¬irqflagsÉèÖÃSA_SHIRQÊôÐÔ£¬ÕâÑù¾ÍÔÊÐí±ðµÄÉ豸ÉêÇëͬһ¸öÖжϡ£ÐèҪעÒâËùÓÐÓõ½Õâ¸öÖжϵÄÉ豸ÔÚµ÷ÓÃrequest_irq()¶¼±ØÐëÉèÖÃÕâ¸öÊôÐÔ¡£ÏµÍ³Ôڻص÷ÿ¸öÖжϴ¦Àí³ÌÐòʱ£¬¿ÉÒÔÓÃdev_idÕâ¸ö²ÎÊýÕÒµ½ÏàÓ¦µÄÉ豸¡£ÏµÍ³Ôڻص÷ÿ¸öÖжϴ¦Àí³ÌÐòʱ£¬¿ÉÒÔÓÃdev_idÕâ¸ö²ÎÊýÕÒµ½ÏàÓ¦µÄÉ豸¡£Ò»°ãdev_id¾ÍÉèΪdevice½á¹¹±¾Éí¡£ÏµÍ³´¦Àí¹²ÏíÖжÏÊÇÓø÷×ÔµÄdev_id²ÎÊýÒÀ´Îµ÷ÓÃÿһ¸öÖжϴ¦Àí³ÌÐò¡£
¡¡¡¡3.2 Ó²¼þ·¢ËÍæʱµÄ´¦Àí
¡¡¡¡Ö÷CPUµÄ´¦ÀíÄÜÁ¦Ò»°ã±ÈÍøÂç·¢ËÍÒª¿ì£¬ËùÒÔ¾³£»áÓöµ½ÏµÍ³ÓÐÊý¾ÝÒª·¢£¬µ«ÉÏÒ»°üÊý¾ÝÍøÂçÉ豸»¹Ã»·¢ËÍÍê¡£ÒòΪÔÚLinuxÀïÍøÂçÉ豸Çý¶¯³ÌÐòÒ»°ã²»×öÊý¾Ý»º´æ£¬²»ÄÜ·¢Ë͵ÄÊý¾Ý¶¼ÊÇ֪ͨϵͳ·¢ËͲ»³É¹¦£¬ËùÒÔ±ØÐëÒªÓÐÒ»¸ö»úÖÆÔÚÓ²¼þ²»Ã¦Ê±¼°Ê±Í¨ÖªÏµÍ³½Ó×Å·¢ËÍÏÂÃæµÄÊý¾Ý¡£
¡¡¡¡Ò»°ã¶Ô·¢ËÍæµÄ´¦ÀíÔÚÇ°ÃæÉ豸µÄ·¢ËÍ·½·¨(hard_start_xmit)ÀïÒѾÃèÊö¹ý£¬¼´Èç¹û·¢ËÍæ£¬ÖÃtbusyΪ1¡£´¦ÀíÍê·¢ËÍÊý¾Ýºó£¬ÔÚ·¢ËͽáÊøÖжÏÀïÇåtbusy£¬Í¬Ê±ÓÃmark_bh()µ÷ÓÃ֪ͨϵͳ¼ÌÐø·¢ËÍ¡£
¡¡¡¡µ«ÔÚ¾ßÌåʵÏÖÎÒµÄÇý¶¯³ÌÐòʱ·¢ÏÖ£¬ÕâÑùµÄ´¦ÀíϵͳºÃÏó²¢²»Äܼ°Ê±µØÖªµÀÓ²¼þÒѾ¿ÕÏÐÁË£¬¼´ÔÚmark_bh()ÒÔºó£¬ÏµÍ³ÒªµÈÒ»¶Îʱ¼ä²Å»á½Ó×Å·¢ËÍ¡£Ôì³É·¢ËÍЧÂʺܵ͡£2MÏß·ֻÓÐ10%²»µ½µÄʹÓÃÂÊ¡£Äں˰汾Ϊ2.0.35¡£
¡¡¡¡ÎÒ×îºóµÄʵÏÖÊDz»°ÑtbusyÖÃ1£¬ÈÃϵͳʼÖÕÈÏΪӲ¼þ¿ÕÏУ¬µ«ÊDZ¨¸æ·¢ËͲ»³É¹¦¡£ÏµÍ³»áÒ»Ö±³¢ÊÔÖØ·¢¡£ÕâÑù´¦Àí¾ÍÔËÐÐÕý³£ÁË¡£µ«ÊDZéÑÄÚºËÔ´ÂëÖеÄÍøÂçÇý¶¯³ÌÐò£¬ËƺõûÓÐÕâÑù´¦ÀíµÄ¡£²»ÖªµÀÖ¢½áÔÚÄÄÀï¡£
¡¡¡¡3.3 Á÷Á¿¿ØÖÆ(flow control)
¡¡¡¡ÍøÂçÊý¾ÝµÄ·¢ËͺͽÓÊÕ¶¼ÐèÒªÁ÷Á¿¿ØÖÆ¡£ÕâЩ¿ØÖÆÊÇÔÚϵͳÀïʵÏֵ쬲»ÐèÒªÇý¶¯³ÌÐò×ö¹¤×÷¡£Ã¿¸öÉ豸Êý¾Ý½á¹¹Àï¶¼ÓÐÒ»¸ö²ÎÊýdev->tx_queue_len£¬Õâ¸ö²ÎÊý±êÃ÷·¢ËÍʱ×î¶à»º´æµÄÊý¾Ý°ü¡£ÔÚLinuxϵͳÀïÒÔÌ«ÍøÉ豸(10/100Mbps)±êÃ÷·¢ËÍʱ×î¶à»º´æµÄÊý¾Ý°ü¡£ÔÚLinuxϵͳÀïÒÔÌ«ÍøÉ豸(10/100Mbps)tx_queue_lenÒ»°ãÉèÖÃΪ100£¬´®ÐÐÏßÂ
Ïà¹ØÎĵµ£º
ÔÚÌÖÂÛÕâ¸öÎÊÌâ֮ǰ£¬ÎÒÃÇÏÈÀ´¿´¿´Linux×ÀÃæÓöµ½ÁËʲôÀ§ÄÑ¡£
Ŀǰ£¬LinuxÔÚ×ÀÃæÉϵÄÊг¡Õ¼ÓÐÂʾÝÓйط½Ãæ¹À¼ÆÔÚ1%×óÓÒ£¬Õâ¸ö±ÈÀýÉõÖÁ»¹²»ÈçAppleµÄMac OS X£¬È˼ҵÄÊг¡Õ¼ÓÐÂÊÒ²ÓÐ4%ÒÔÉÏ¡£¸ü±ðÌáMS Windows°Ù·ÖÖ®¾ÅÊ®ÒÔÉϵÄÊг¡Õ¼ÓÐÂÊ£¬¿ÉÒÔ˵Linux×ÀÃæËÆºõ¿ÉÒÔ ......
½ñÌìÔÚ°²×°oracle¹ý³ÌÖУ¬²ÎÕÕÍøÉÏÏÂÔØµÄ×ÊÁÏÔÚRHEL5Éϰ²×°oracle£¬Õû¸ö¹ý³Ì±È½Ï˳Àû£¬µ«ÊÇÈ´Óöµ½ÁËÒ»µãÎÊÌ⣬ËäÈ»²»ÊǺÜÑÏÖØ£¬µ«ÊDZϾ¹ÊǸöÎÊÌâÐÄÀﻹÊDz»ºÜÊæ·þ£¬ÔÚ´ËÇë·¹ýµÄ½â¾ö¡£
Ö÷ÒªÎÊÌâÊÇoracleÓû§µÄ»·¾³±äÁ¿£¬ÔÚ°²×°oracle¹ý³ÌÖУ¬ÓÐÒ»²½ÊÇÐèÒªÒÔoracleÓû§µÇ¼£¬È»ºó±à¼ ......
µ¼º½£º[Ê×Ò³]>[linuxÄÚºËѧϰ±Ê¼Ç]
Ŀ¼
[Òþ²Ø]
1 ×Ö·ûÉ豸Çý¶¯ÖªÊ¶½²½â
1.1 ÃèÊö×Ö·ûÉ豸»ù±¾½á¹¹Ìå
1.2 ×÷ÓÃ
1.3 ¸÷×Ö¶ÎÏê½â
1.4 ²Ù×÷
1.5 ʵÀý
1.5.1 ´úÂë
1.5.2 ÔËÐÐ
[±à¼]×Ö·ûÉ豸Çý¶¯ÖªÊ¶½²½â
×÷Õߣº[Å£ÌÎ]
[±à¼]ÃèÊö×Ö·ûÉ豸»ù±¾½á¹¹Ìå
/linux/ ......
linuxÈíÖжϻúÖÆ
ÖжϷþÎñ³ÌÐòÍùÍù¶¼ÊÇÔÚCPU¹ØÖжϵÄÌõ¼þÏÂÖ´Ðеģ¬ÒÔ±ÜÃâÖжÏǶÌ×¶øÊ¹¿ØÖƸ´ÔÓ»¯¡£µ«ÊÇCPU¹ØÖжϵÄʱ¼ä²»ÄÜÌ«³¤£¬·ñÔòÈÝÒ×¶ªÊ§ÖжÏÐźš£Îª´Ë£¬ Linux½«ÖжϷþÎñ³ÌÐòÒ»·ÖΪ¶þ£¬¸÷³Æ×÷“Top Half”ºÍ“Bottom Half”¡£Ç°Õßͨ³£¶Ôʱ¼äÒªÇó½ÏΪÑϸñ£¬ ......
Ò»¡¢bash shellµÄ·ÖÀࣺ
µÇ¼shell:Óû§µÇ¼linuxÖ÷»úʱȡµÃµÄshell.
·ÇµÇ¼shell£ºÓû§µÇ¼linuxÖ÷»úºó£¨È¡µÃÁ˵Ǽshell£©ÓÉÓÚÐèÒªÆô¶¯Ö´ÐеÄshell,È磺ÓÃsuÇл»Óû§ºóÈ¡µÃµÄshell;ÔڵǼshellÖÐ
&nb ......