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£¬´®ÐÐÏßÂ
Ïà¹ØÎĵµ£º
sudo apt-get install virtualbox
sudo apt-get install ntfs-3g ntfs-config #ntfsдÈëÖ§³Ö£¬×°ÍêºóÔËÐÐntfs-config,°ÑÁ½¸ö¹³´òÉϼ´¿É¡£Â¥Ï·½·¨×÷·Ï
sudo apt-get install googleearth googlizer gtalk#googleÏà¹Ø£¬skyxÓÑÇéÌáʾ:²»ÍƼöÂí¼× gtalk
sudo apt-get install ghex #GNOME ÉϵÄÊ®Áù½øÖÆÎļþ±à¼Æ÷
su ......
×î½üÔÚ×ösamsung
s3c2416
ÔÚlinuxϵÄspiÇý¶¯³ÌÐò£¬²âÊÔÁËÏÂsamsung·¢²¼µÄspiµÄÄÚºËÔ´´úÂ룬ÎÞÂÛÊDzÉÓÃdma»òÕß·Çdmaģʽ¶¼ÎÞ·¨¹¤×÷¡£ÔĶÁ¸ÃÇý¶¯´úÂ룬·¢ÏÖ
ÕâÂëÓ¦¸ÃÊÇÒ»¸öδÍê³ÉµÄ°æ±¾£¬´æÔںܶàµÄbug¡£ÓÚÊÇÔÚÕâ¸ö°æ±¾µÄ»ù´¡ÉϽøÐÐÐ޸ģ¬ÖØÐ´Ò»¸ö¿ÉÓõġ¢Ö§³Öȫ˫¹¤µÄͨѶ ......
ÖÐÎİæÊéÄ¿
¡¶Apache CookbookÖÐÎİ棨µÚ¶þ°æ£©¡· New!
¡¶Linux Networking CookbookÖÐÎİ桷 New!
¡¶Shell½Å±¾Ñ§Ï°Ö¸ÄÏ¡· New!
¡¶×¿ÓгÉЧµÄ³ÌÐòÔ±¡· New!
¡¶´úÂëÖ®ÃÀ¡· New!
¡¶Ç¶ÈëʽӲ¼þÉè¼Æ£¨µÚ¶þ°æ£©¡· New!
¡¶LPI LinuxÈÏ֤ȨÍþÖ¸ÄÏ£¨µÚ¶þ°æ£©¡· New!
¡¶LINUX SERVER HACKS£¨¾í¶þ£©¡· New!
¡¶BSD Hacks¡· ......
Linux Îļþϵͳ¸ÅÊö
×÷Õߣº±±ÄÏÄϱ±
À´×Ô£ºLinuxSir.Org
ÕªÒª£º ±¾ÎÄͨ¹ýÎļþϵͳµÄ¶¨Òå˵Æð£¬È»ºóͨ¹ýÒýÎļòµ¥µÄ½éÉÜÁËÒ»ÏÂÎļþϵͳÀàÐÍ£»¶ÔLinux³£ÓõÄext2¡¢ext3¼°reiserfs ¸ù¾Ý±¾ÈËʹÓþÑéÒ²·º·ºµÄ̸ÁË̸£¬µ«²¢²»ÊÇרҵµÄ¡£ÈçºÎÔĶÁ±¾ÎÄ£¬»¹ÊÇÓÃÂí¿Ë˼ÀíÂÛ¸æËßÎÒÃǵķ½·¨£ºÒ»·ÖΪ¶þ£¬±ß¿´±ßÅú°É£»
Ŀ¼Ë÷Òý
Ò» ......
¡¡2.4 ³£ÓõÄϵͳ֧³Ö
¡¡¡¡2.4.1 ÄÚ´æÉêÇëºÍÊÍ·Å
¡¡¡¡include/linux/kernel.hÀïÉùÃ÷ÁËkmalloc()ºÍkfree()¡£ÓÃÓÚÔÚÄÚºËģʽÏÂÉêÇëºÍÊÍ·ÅÄÚ´æ¡£
¡¡¡¡void *kmalloc(unsigned int len,int priority);
¡¡¡¡void kfree(void *__ptr);
¡¡¡¡ÓëÓû§Ä£Ê½ÏµÄmalloc()²»Í¬£¬kmalloc()Éê ......