Table of Contents, Show Frames, No Frames

µÚ°ËÕ É豸Çý¶¯


²Ù×÷ϵͳµÄÄ¿µÄÖ®Ò»¾ÍÊǽ«ÏµÍ³Ó²¼þÉ豸ϸ½Ú´ÓÓû§ÊÓÏßÖÐÒþ²ØÆðÀ´¡£ÀýÈçÐéÄâÎļþϵͳ¶Ô¸÷ÖÖÀàÐÍÒѰ²×°µÄÎļþϵͳÌṩÁËͳһµÄÊÓͼ¶øÆÁ±ÎÁ˾ßÌåµ×²ãϸ½Ú¡£±¾Õ½«ÃèÐðLinuxºËÐĶÔϵͳÖÐÎïÀíÉ豸µÄ¹ÜÀí¡£

CPU²¢²»ÊÇϵͳÖÐΨһµÄÖÇÄÜÉ豸£¬Ã¿¸öÎïÀíÉ豸¶¼ÓµÓÐ×Ô¼ºµÄ¿ØÖÆÆ÷¡£¼üÅÌ¡¢Êó±êºÍ´®ÐпÚÓÉÒ»¸ö¸ß¼¶I/OоƬͳһ¹ÜÀí£¬IDE¿ØÖÆÆ÷¿ØÖÆIDEÓ²Å̶øSCSI¿ØÖÆÆ÷¿ØÖÆSCSIÓ²Å̵ȵȡ£Ã¿¸öÓ²¼þ¿ØÖÆÆ÷¶¼Óи÷×ԵĿØÖƺÍ״̬¼Ä´æÆ÷£¨CSR£©²¢ÇÒ¸÷²»Ïàͬ¡£ÀýÈçAdaptec 2940 SCSI¿ØÖÆÆ÷µÄCSRÓëNCR 810 SCSI¿ØÖÆÆ÷ÍêÈ«²»Ò»Ñù¡£ÕâЩCSR±»ÓÃÀ´Æô¶¯ºÍÍ£Ö¹£¬³õʼ»¯É豸¼°¶ÔÉ豸½øÐÐÕï¶Ï¡£ÔÚLinuxÖйÜÀíÓ²¼þÉ豸¿ØÖÆÆ÷µÄ´úÂ벢ûÓзÅÖÃÔÚÿ¸öÓ¦ÓóÌÐòÖжøÊÇÓÉÄÚºËͳһ¹ÜÀí¡£ÕâЩ´¦ÀíºÍ¹ÜÀíÓ²¼þ¿ØÖÆÆ÷µÄÈí¼þ¾ÍÊÇÉ豸Çý¶¯¡£LinuxºËÐÄÉ豸Çý¶¯ÊÇÒ»×éÔËÐÐÔÚÌØÈ¨¼¶ÉϵÄÄÚ´æ×¤Áôµ×²ãÓ²¼þ´¦Àí¹²Ïí¿â¡£ÕýÊÇËüÃǸºÔð¹ÜÀí¸÷¸öÉ豸¡£

É豸Çý¶¯µÄÒ»¸ö»ù±¾ÌØÕ÷ÊÇÉ豸´¦ÀíµÄ³éÏó¸ÅÄî¡£ËùÓÐÓ²¼þÉ豸¶¼±»¿´³ÉÆÕͨÎļþ£»¿ÉÒÔͨ¹ýºÍ²Ù×ÝÆÕͨÎļþÏàͬµÄ±ê׼ϵͳµ÷ÓÃÀ´´ò¿ª¡¢¹Ø±Õ¡¢¶ÁÈ¡ºÍдÈëÉ豸¡£ÏµÍ³ÖÐÿ¸öÉ豸¶¼ÓÃÒ»ÖÖÌØÊâµÄÉ豸Ïà¹ØÎļþÀ´±íʾ(device special file)£¬ÀýÈçϵͳÖеÚÒ»¸öIDEÓ²Å̱»±íʾ³É/dev/hda¡£¿é£¨´ÅÅÌ£©É豸ºÍ×Ö·ûÉ豸µÄÉ豸Ïà¹ØÎļþ¿ÉÒÔͨ¹ýmknodÃüÁîÀ´´´½¨£¬²¢Ê¹ÓÃÖ÷´ÓÉ豸ºÅÀ´ÃèÐð´ËÉ豸¡£ÍøÂçÉ豸ҲÓÃÉ豸Ïà¹ØÎļþÀ´±íʾ£¬µ«LinuxѰÕҺͳõʼ»¯ÍøÂçÉ豸ʱ²Å½¨Á¢ÕâÖÖÎļþ¡£ÓÉͬһ¸öÉ豸Çý¶¯¿ØÖƵÄËùÓÐÉ豸¾ßÓÐÏàͬµÄÖ÷É豸ºÅ¡£´ÓÉ豸ºÅÔò±»ÓÃÀ´Çø·Ö¾ßÓÐÏàͬÖ÷É豸ºÅÇÒÓÉÏàͬÉ豸Çý¶¯¿ØÖƵIJ»Í¬É豸¡£ ÀýÈçÖ÷IDEÓ²Å̵Äÿ¸ö·ÖÇøµÄ´ÓÉ豸ºÅ¶¼²»Ïàͬ¡£Èç/dev/hda2±íʾÖ÷IDEÓ²Å̵ÄÖ÷É豸ºÅΪ3¶ø´ÓÉ豸ºÅΪ2¡£Linuxͨ¹ýʹÓÃÖ÷´ÓÉ豸ºÅ½«°üº¬ÔÚϵͳµ÷ÓÃÖеģ¨È罫һ¸öÎļþϵͳmountµ½Ò»¸ö¿éÉ豸£©É豸Ïà¹ØÎļþÓ³Éäµ½É豸µÄÉ豸Çý¶¯ÒÔ¼°´óÁ¿ÏµÍ³±í¸ñÖУ¬Èç×Ö·ûÉ豸±í£¬chrdevs¡£

LinuxÖ§³ÖÈýÀàÓ²¼þÉ豸£º×Ö·û¡¢¿é¼°ÍøÂçÉ豸¡£×Ö·ûÉ豸ָÄÇЩÎÞÐ軺³åÖ±½Ó¶ÁдµÄÉ豸£¬ÈçϵͳµÄ´®¿ÚÉ豸/dev/cua0ºÍ/dev/cua1¡£¿éÉ豸Ôò½öÄÜÒÔ¿éΪµ¥Î»¶Áд£¬µäÐ͵Ŀé´óСΪ512»ò1024×Ö½Ú¡£¿éÉ豸µÄ´æÈ¡ÊÇͨ¹ýbuffer cacheÀ´½øÐв¢ÇÒ¿ÉÒÔ½øÐÐËæ»ú·ÃÎÊ£¬¼´²»¹Ü¿éλÓÚÉ豸Öк䦶¼¿ÉÒÔ¶ÔÆä½øÐжÁд¡£¿éÉ豸¿ÉÒÔͨ¹ýÆäÉ豸Ïà¹ØÎļþ½øÐзÃÎÊ£¬µ«¸üΪƽ³£µÄ·ÃÎÊ·½·¨ÊÇͨ¹ýÎļþϵͳ¡£Ö»ÓпéÉ豸²ÅÄÜÖ§³Ö¿É°²×°Îļþϵͳ¡£ÍøÂçÉ豸¿ÉÒÔͨ¹ýBSDÌ×½Ó¿Ú·ÃÎÊ£¬ÎÒÃǽ«ÔÚÍøÂçÒ»ÕÂÖÐÌÖÂÛÍøÂç×Óϵͳ¡£

LinuxºËÐÄÖÐËä´æÔÚÐí¶à²»Í¬µÄÉ豸Çý¶¯µ«ËüÃǾßÓÐһЩ¹²ÐÔ£º

ºËÐÄ´úÂë
É豸Çý¶¯ÊǺËÐĵÄÒ»²¿·Ö£¬ÏóºËÐÄÖÐÆäËü´úÂëÒ»Ñù£¬³ö´í½«µ¼ÖÂϵͳµÄÑÏÖØËðÉË¡£Ò»¸ö±àÐ´Ææ²îµÄÉ豸Çý¶¯ÉõÖÁÄÜʹϵͳ±ÀÀ£²¢µ¼ÖÂÎļþϵͳµÄÆÆ»µºÍÊý¾Ý¶ªÊ§¡£
 
ºËÐĽӿÚ
É豸Çý¶¯±ØÐëΪLinuxºËÐÄ»òÕ߯ä´ÓÊô×ÓϵͳÌṩһ¸ö±ê×¼½Ó¿Ú¡£ÀýÈçÖÕ¶ËÇý¶¯ÎªLinuxºËÐÄÌṩÁËÒ»¸öÎļþI/O½Ó¿Ú¶øSCSIÉ豸Çý¶¯ÎªSCSI×ÓϵͳÌṩÁËÒ»¸öSCSIÉ豸½Ó¿Ú£¬Í¬Ê±´Ë×ÓϵͳΪºËÐÄÌṩÁËÎļþI/OºÍbuffer cache½Ó¿Ú¡£
ºËÐÄ»úÖÆÓë·þÎñ
 

É豸Çý¶¯¿ÉÒÔʹÓñê×¼µÄºËÐÄ·þÎñÈçÄÚ´æ·ÖÅä¡¢ÖжϷ¢Ëͺ͵ȴý¶ÓÁеȵȡ£

 
¶¯Ì¬¿É¼ÓÔØ
¶àÊýLinuxÉ豸Çý¶¯¿ÉÒÔÔÚºËÐÄÄ£¿é·¢³ö¼ÓÔØÇëÇóʱ¼ÓÔØ£¬Í¬Ê±ÔÚ²»ÔÙʹÓÃÊ±Ð¶ÔØ¡£ÕâÑùºËÐÄÄÜÓÐЧµØÀûÓÃϵͳ×ÊÔ´¡£
 
¿ÉÅäÖÃ
LinuxÉ豸Çý¶¯¿ÉÒÔÁ¬½Óµ½ºËÐÄÖС£µ±ºËÐı»±àÒëʱ£¬ÄÄЩºËÐı»Á¬ÈëºËÐÄÊÇ¿ÉÅäÖõġ£
 
¶¯Ì¬ÐÔ
µ±ÏµÍ³Æô¶¯¼°É豸Çý¶¯³õʼ»¯Ê±½«²éÕÒËüËù¿ØÖƵÄÓ²¼þÉ豸¡£Èç¹ûij¸öÉ豸µÄÇý¶¯ÎªÒ»¸ö¿Õ¹ý³Ì²¢²»»áÓÐʲôÎÊÌâ¡£´Ëʱ´ËÉ豸Çý¶¯½ö½öÊÇÒ»¸öÈßÓàµÄ³ÌÐò£¬Ëü³ýÁË»áÕ¼ÓÃÉÙÁ¿ÏµÍ³ÄÚ´æÍâ²»»á¶ÔϵͳÔì³ÉʲôΣº¦¡£

8.1  ÂÖѯÓëÖжÏ

É豸±»Ö´ÐÐij¸öÃüÁîʱ£¬Èç¡°½«¶ÁÈ¡´ÅÍ·ÒÆ¶¯µ½ÈíÅ̵ĵÚ42ÉÈÇøÉÏ¡±£¬É豸Çý¶¯¿ÉÒÔ´ÓÂÖѯ·½Ê½ºÍÖжϷ½Ê½ÖÐÑ¡ÔñÒ»ÖÖÒÔÅжÏÉ豸ÊÇ·ñÒѾ­Íê³É´ËÃüÁî¡£

ÂÖѯ·½Ê½Òâζ×ÅÐèÒª¾­³£¶ÁÈ¡É豸µÄ״̬£¬Ò»Ö±µ½É豸״̬±íÃ÷ÇëÇóÒѾ­Íê³ÉΪֹ¡£Èç¹ûÉ豸Çý¶¯±»Á¬½Ó½øÈëºËÐÄ£¬ÕâʱʹÓÃÂÖѯ·½Ê½½«»á´øÀ´ÔÖÄÑÐÔºó¹û£ººËÐĽ«Ôڴ˹ý³ÌÖÐÎÞËùÊÂÊ£¬Ö±µ½É豸Íê³É´ËÇëÇó¡£µ«ÊÇÂÖѯÉ豸Çý¶¯¿ÉÒÔͨ¹ýʹÓÃϵͳ¶¨Ê±Æ÷£¬Ê¹ºËÐÄÖÜÆÚÐÔµ÷ÓÃÉ豸Çý¶¯ÖеÄij¸öÀý³ÌÀ´¼ì²éÉ豸״̬¡£ ¶¨Ê±Æ÷¹ý³Ì¿ÉÒÔ¼ì²éÃüÁî״̬¼°LinuxÈíÅÌÇý¶¯µÄ¹¤×÷Çé¿ö¡£Ê¹Óö¨Ê±Æ÷ÊÇÂÖѯ·½Ê½ÖÐ×îºÃµÄÒ»ÖÖ£¬µ«¸üÓÐЧµÄ·½·¨ÊÇʹÓÃÖжϡ£

»ùÓÚÖжϵÄÉ豸Çý¶¯»áÔÚËüËù¿ØÖƵÄÓ²¼þÉ豸ÐèÒª·þÎñʱÒý·¢Ò»¸öÓ²¼þÖжϡ£ÈçÒÔÌ«ÍøÉ豸Çý¶¯´ÓÍøÂçÉϽÓÊÕµ½Ò»¸öÒÔÌ«Êý¾Ý±¨Ê±¶¼½«ÒýÆðÖжϡ£LinuxºËÐÄÐèÒª½«À´×ÔÓ²¼þÉ豸µÄÖжϴ«µÝµ½ÏàÓ¦µÄÉ豸Çý¶¯¡£Õâ¸ö¹ý³ÌÓÉÉ豸Çý¶¯ÏòºËÐÄ×¢²áÆäʹÓõÄÖжÏÀ´Ð­ÖúÍê³É¡£´ËÖжϴ¦ÀíÀý³ÌµÄµØÖ·ºÍÖжϺŶ¼½«±»¼Ç¼ÏÂÀ´¡£ÔÚ/proc/interruptsÎļþÖÐÄã¿ÉÒÔ¿´µ½É豸Çý¶¯Ëù¶ÔÓ¦µÄÖжϺż°ÀàÐÍ£º


 0:     727432   timer

 1:      20534   keyboard

 2:          0   cascade

 3:      79691 + serial

 4:      28258 + serial

 5:          1   sound blaster

11:      20868 + aic7xxx

13:          1   math error

14:        247 + ide0

15:        170 + ide1

¶ÔÖжÏ×ÊÔ´µÄÇëÇóÔÚÇý¶¯³õʼ»¯Ê±¾ÍÒѾ­Íê³É¡£×÷ΪIBM PCÌåϵ½á¹¹µÄÒŲú£¬ÏµÍ³ÖÐÓÐЩÖжÏÒѾ­¹Ì¶¨¡£ÀýÈçÈíÅÌ¿ØÖÆÆ÷×ÜÊÇʹÓÃÖжÏ6¡£ÆäËüÖжϣ¬ÈçPCIÉ豸Öжϣ¬ÔÚÆô¶¯Ê±½øÐж¯Ì¬·ÖÅä¡£É豸Çý¶¯±ØÐëÔÚÈ¡µÃ¶Ô´ËÖжϵÄËùÓÐȨ֮ǰÕÒµ½ËüËù¿ØÖÆÉ豸µÄÖжϺţ¨IRQ£©¡£Linuxͨ¹ýÖ§³Ö±ê×¼µÄPCI BIOS»Øµ÷º¯ÊýÀ´È·¶¨ÏµÍ³ÖÐPCIÉ豸µÄÖжÏÐÅÏ¢£¬°üÀ¨ÆäIRQºÅ¡£

ÈçºÎ½«ÖжϷ¢Ë͸øCPU±¾ÉíÈ¡¾öÓÚÌåϵ½á¹¹£¬µ«ÊÇÔÚ¶àÊýÌåϵ½á¹¹ÖУ¬ÖжÏÒÔÒ»ÖÖÌØÊâģʽ·¢ËÍͬʱ»¹½«×èֹϵͳÖÐÆäËüÖжϵIJúÉú¡£É豸Çý¶¯ÔÚÆäÖжϴ¦Àí¹ý³ÌÖÐ×÷µÄÔ½ÉÙÔ½ºÃ£¬ÕâÑùLinuxºËÐĽ«ÄܺܿìµÄ´¦ÀíÍêÖжϲ¢·µ»ØÖжÏǰµÄ״̬ÖС£ÎªÁËÔÚ½ÓÊÕÖжÏʱÍê³É´óÁ¿¹¤×÷£¬É豸Çý¶¯±ØÐëÄܹ»Ê¹ÓúËÐĵĵײ㴦ÀíÀý³Ì»òÕßÈÎÎñ¶ÓÁÐÀ´¶ÔÒÔºóÐèÒªµ÷ÓõÄÄÇЩÀý³Ì½øÐÐÅŶӡ£

8.2  Ö±½ÓÄÚ´æ·ÃÎÊ (DMA)

Êý¾ÝÁ¿±È½ÏÉÙʱ£¬Ê¹ÓÃÖжÏÇý¶¯É豸Çý¶¯³ÌÐòÄÜ˳ÀûµØÔÚÓ²¼þÉ豸ºÍÄÚ´æÖ®¼ä½»»»Êý¾Ý¡£ÀýÈç²¨ÌØÂÊΪ9600µÄmodem¿ÉÒÔÿºÁÃë´«ÊäÒ»¸ö×Ö·û¡£Èç¹ûÓ²¼þÉ豸ÒýÆðÖжϺ͵÷ÓÃÉ豸Çý¶¯ÖжÏËùÏûºÄµÄÖжÏʱÑӱȽϴó£¨Èç2ºÁÃ룩ÔòϵͳµÄ×ÛºÏÊý¾Ý´«ÊäÂÊ»áºÜµÍ¡£Ôò9600²¨ÌØÂÊmodemµÄÊý¾Ý´«ÊäÖ»ÄÜÀûÓÃ0.002%µÄCPU´¦Àíʱ¼ä¡£¸ßËÙÉ豸ÈçÓ²ÅÌ¿ØÖÆÆ÷»òÕßÒÔÌ«ÍøÉ豸Êý¾Ý´«ÊäÂʽ«¸ü¸ß¡£SCSIÉ豸µÄÊý¾Ý´«ÊäÂʿɴﵽÿÃë40M×Ö½Ú¡£

Ö±½ÓÄÚ´æ´æÈ¡£¨DMA£©Êǽâ¾ö´ËÀàÎÊÌâµÄÓÐЧ·½·¨¡£DMA¿ØÖÆÆ÷¿ÉÒÔÔÚ²»ÊÜ´¦ÀíÆ÷¸ÉÔ¤µÄÇé¿öÏÂÔÚÉ豸ºÍϵͳÄÚ´æÖ®¼ä¸ßËÙ´«ÊäÊý¾Ý¡£PC»úµÄISA DMA¿ØÖÆÆ÷ÓÐ8¸öDMAͨµÀ£¬ÆäÖÐÆß¸ö¿ÉÒÔÓÉÉ豸Çý¶¯Ê¹Óá£Ã¿¸öDMAͨµÀ¾ßÓÐÒ»¸ö16λµÄµØÖ·¼Ä´æÆ÷ºÍÒ»¸ö16λµÄ¼ÇÊý¼Ä´æÆ÷¡£ÎªÁ˳õʼ»¯Êý¾Ý´«Ê䣬É豸Çý¶¯½«ÉèÖÃDMAͨµÀµØÖ·ºÍ¼ÇÊý¼Ä´æÆ÷ÒÔÃèÐðÊý¾Ý´«Êä·½ÏòÒÔ¼°¶ÁдÀàÐÍ¡£È»ºó֪ͨÉ豸¿ÉÒÔÔÚÈκÎʱºòÆô¶¯DMA²Ù×÷¡£´«Êä½áÊøÊ±É豸½«ÖжÏPC¡£ÔÚ´«Êä¹ý³ÌÖÐCPU¿ÉÒÔתȥִÐÐÆäËûÈÎÎñ¡£

É豸Çý¶¯Ê¹ÓÃDMAʱ±ØÐëÊ®·ÖСÐÄ¡£Ê×ÏÈDMA¿ØÖÆÆ÷ûÓÐÈκÎÐéÄâÄÚ´æµÄ¸ÅÄËüÖ»´æÈ¡ÏµÍ³ÖеÄÎïÀíÄڴ档ͬʱÓÃ×÷DMA´«Ê仺³åµÄÄÚ´æ¿Õ¼ä±ØÐëÊÇÁ¬ÐøÎïÀíÄÚ´æ¿é¡£ÕâÒâζ×Ų»ÄÜÔÚ½ø³ÌÐéÄâµØÖ·¿Õ¼äÄÚÖ±½ÓʹÓÃDMA¡£µ«ÊÇÄã¿ÉÒÔ½«½ø³ÌµÄÎïÀíÒ³Ãæ¼ÓËøÒÔ·ÀÖ¹ÔÚDMA²Ù×÷¹ý³ÌÖб»½»»»µ½½»»»É豸ÉÏÈ¥¡£ÁíÍâDMA¿ØÖÆÆ÷Ëù´æÈ¡ÎïÀíÄÚ´æÓÐÏÞ¡£DMAͨµÀµØÖ·¼Ä´æÆ÷´ú±íDMAµØÖ·µÄ¸ß16λ¶øÒ³Ãæ¼Ä´æÆ÷¼Ç¼µÄÊÇÆäÓà8λ¡£ËùÒÔDMAÇëÇó±»ÏÞÖÆµ½ÄÚ´æ×îµÍ16M×Ö½ÚÖС£

DMAͨµÀÊǷdz£Õä¹óµÄ×ÊÔ´£¬Ò»¹²²ÅÓÐ7¸ö²¢ÇÒ»¹²»Äܹ»ÔÚÉ豸Çý¶¯¼ä¹²Ïí¡£ÓëÖжÏÒ»Ñù£¬É豸Çý¶¯±ØÐëÕÒµ½ËüÓ¦¸ÃʹÓÃÄǸöDMAͨµÀ¡£ÓÐЩÉ豸ʹÓù̶¨µÄDMAͨµÀ¡£ÀýÈçÈíÅÌÉ豸×ÜʹÓÃDMAͨµÀ2¡£ÓÐʱÉ豸µÄDMAͨµÀ¿ÉÒÔÓÉÌøÏßÀ´ÉèÖã¬Ðí¶àÒÔÌ«ÍøÉ豸ʹÓÃÕâÖÖ¼¼Êõ¡£Éè¼ÆÁé»îµÄÉ豸½«¸æËßϵͳËü½«Ê¹ÓÃÄĸöDMAͨµÀ£¬´ËʱÉ豸Çý¶¯½öÐèÒª´ÓDMAͨµÀÖÐѡȡ¼´¿É¡£

Linuxͨ¹ýdma_chan£¨Ã¿¸öDMAͨµÀÒ»¸ö£©Êý×éÀ´¸ú×ÙDMAͨµÀµÄʹÓÃÇé¿ö¡£dma_chan½á¹¹Öаüº¬ÓÐÁ½¸öÓò£¬Ò»¸öÊÇÖ¸Ïò´ËDMAͨµÀÓµÓÐÕßµÄÖ¸Õ룬ÁíÒ»¸öָʾDMAͨµÀÊÇ·ñÒѾ­±»·ÖÅä³öÈ¥¡£µ±ÇÃÈëcat /proc/dma´òÓ¡³öÀ´µÄ½á¹û¾ÍÊÇdma_chan½á¹¹Êý×é¡£

8.3  ÄÚ´æ

É豸Çý¶¯±ØÐë½÷É÷ʹÓÃÄÚ´æ¡£ÓÉÓÚËüÊôÓÚºËÐÄ,ËùÒÔ²»ÄÜʹÓÃÐéÄâÄڴ档ϵͳ½ÓÊÕµ½ÖжÏÐźÅʱ»òµ÷¶Èµ×²ãÈÎÎñ¶ÓÁд¦Àí¹ý³Ìʱ£¬É豸Çý¶¯½«¿ªÊ¼ÔËÐУ¬¶øµ±Ç°½ø³Ì»á·¢Éú¸Ä±ä¡£É豸Çý¶¯²»ÄÜÒÀÀµÓÚÈκÎÔËÐеÄÌØ¶¨½ø³Ì£¬¼´Ê¹µ±Ç°ÊÇΪ¸Ã½ø³Ì¹¤×÷¡£ÓëºËÐĵįäËü²¿·ÖÒ»Ñù£¬É豸Çý¶¯Ê¹ÓÃÊý¾Ý½á¹¹À´ÃèÐðËüËù¿ØÖƵÄÉ豸¡£ÕâЩ½á¹¹±»É豸Çý¶¯´úÂëÒÔ¾²Ì¬·½Ê½·ÖÅ䣬µ«»áÔö´óºËÐĶøÒýÆð¿Õ¼äµÄÀË·Ñ¡£¶àÊýÉ豸Çý¶¯Ê¹ÓúËÐÄÖзÇÒ³ÃæÄÚ´æÀ´´æ´¢Êý¾Ý¡£

LinuxΪÉ豸Çý¶¯ÌṩÁËÒ»×éºËÐÄÄÚ´æ·ÖÅäÓë»ØÊÕ¹ý³Ì¡£ºËÐÄÄÚ´æÒÔ2µÄ´ÎÃÝ´óСµÄ¿éÀ´·ÖÅä¡£Èç512»ò128×Ö½Ú£¬´Ëʱ¼´Ê¹É豸Çý¶¯µÄÐèÇóСÓÚÕâ¸öÊýÁ¿Ò²»á·ÖÅäÕâô¶à¡£ËùÒÔÉ豸Çý¶¯µÄÄÚ´æ·ÖÅäÇëÇó¿ÉµÃµ½ÒÔ¿é´óСΪ±ß½çµÄÄÚ´æ¡£ÕâÑùºËÐĽøÐпÕÏпé×éºÏ¸ü¼ÓÈÝÒס£

ÇëÇó·ÖÅäºËÐÄÄÚ´æÊ±LinuxÐèÒªÍê³ÉÐí¶à¶îÍâµÄ¹¤×÷¡£Èç¹ûϵͳÖпÕÏÐÄÚ´æÊýÁ¿½ÏÉÙ£¬Ôò¿ÉÄÜÐèÒª¶ªÆúЩÎïÀíÒ³Ãæ»ò½«ÆäдÈë½»»»É豸¡£Ò»°ãÇé¿öÏÂLinux½«¹ÒÆðÇëÇóÕß²¢½«´Ë½ø³Ì·ÅÖõ½µÈ´ý¶ÓÁÐÖÐÖ±µ½ÏµÍ³ÖÐÓÐ×ã¹»µÄÎïÀíÄÚ´æÎªÖ¹¡£²»ÊÇËùÓеÄÉ豸Çý¶¯£¨»òÕßÕæÕýµÄLinuxºËÐÄ´úÂ룩¶¼»á¾­ÀúÕâ¸ö¹ý³Ì£¬ËùÒÔÈç·ÖÅäºËÐÄÄÚ´æµÄÇëÇó²»ÄÜÁ¢¿ÌµÃµ½Âú×ã,Ôò´ËÇëÇó¿ÉÄÜ»áʧ°Ü¡£Èç¹ûÉ豸Çý¶¯Ï£ÍûÔÚ´ËÄÚ´æÖнøÐÐDMA£¬ÄÇôËü±ØÐ뽫´ËÄÚ´æÉèÖÃΪDMAʹÄܵġ£ÕâÒ²ÊÇΪʲôÊÇLinuxºËÐĶø²»ÊÇÉ豸Çý¶¯ÐèÒªÁ˽âϵͳÖеÄDMAʹÄÜÄÚ´æµÄÔ­Òò¡£

8.4  É豸Çý¶¯ÓëºËÐĵĽӿÚ

LinuxºËÐÄÓëÉ豸Çý¶¯Ö®¼ä±ØÐëÓÐÒ»¸öÒÔ±ê×¼·½Ê½½øÐл¥²Ù×÷µÄ½Ó¿Ú¡£Ã¿Ò»ÀàÉ豸Çý¶¯£º×Ö·ûÉ豸¡¢¿éÉ豸 ¼°ÍøÂçÉ豸¶¼ÌṩÁËͨÓýӿÚÒÔ±ãÔÚÐèҪʱΪºËÐÄÌṩ·þÎñ¡£ÕâÖÖͨÓýӿÚʹµÃºËÐÄ¿ÉÒÔÒÔÏàͬµÄ·½Ê½À´¶Ô´ý²»Í¬µÄÉ豸¼°É豸Çý¶¯¡£ÈçSCSIºÍIDEÓ²Å̵ÄÇø±ðºÜ´óµ«Linux¶ÔËüÃÇʹÓÃÏàͬµÄ½Ó¿Ú¡£

Linux¶¯Ì¬ÐÔºÜÇ¿¡£Ã¿´ÎLinuxºËÐÄÆô¶¯Ê±ÈçÓöµ½²»Í¬µÄÎïÀíÉ豸½«ÐèÒª²»Í¬µÄÎïÀíÉ豸Çý¶¯¡£LinuxÔÊÐíͨ¹ýÅäÖýű¾ÔÚºËÐÄÖØ½¨Ê±½«É豸Çý¶¯°üº¬ÔÚÄÚ¡£É豸Çý¶¯ÔÚÆô¶¯³õʼ»¯Ê±¿ÉÄܻᷢÏÖϵͳÖиù±¾Ã»ÓÐÈκÎÓ²¼þÐèÒª¿ØÖÆ¡£ÆäËüÉ豸Çý¶¯¿ÉÒÔÔÚ±ØÒªÊ±×÷ΪºËÐÄÄ£¿é¶¯Ì¬¼ÓÔØµ½¡£ÎªÁË´¦ÀíÉ豸Çý¶¯µÄ¶¯Ì¬ÊôÐÔ£¬É豸Çý¶¯ÔÚ³õʼ»¯Ê±½«Æä×¢²áµ½ºËÐÄÖÐÈ¥¡£Linuxά»¤×ÅÒÑ×¢²áÉ豸Çý¶¯±í×÷ΪºÍÉ豸Çý¶¯µÄ½Ó¿Ú¡£ÕâЩ±íÖаüº¬Ö§³Ö´ËÀàÉ豸Àý³ÌµÄÖ¸ÕëºÍÏà¹ØÐÅÏ¢¡£

8.4.1  ×Ö·ûÉ豸


ͼ8.1 ×Ö·ûÉ豸

×Ö·ûÉ豸ÊÇLinuxÉ豸ÖÐ×î¼òµ¥µÄÒ»ÖÖ¡£Ó¦ÓóÌÐò¿ÉÒԺʹæÈ¡ÎļþÏàͬµÄϵͳµ÷ÓÃÀ´´ò¿ª¡¢¶Áд¼°¹Ø±ÕËü¡£¼´Ê¹´ËÉ豸Êǽ«LinuxϵͳÁ¬½Óµ½ÍøÂçÖеÄPPPºǫ́½ø³ÌµÄmodemÒ²ÊÇÈç´Ë¡£×Ö·ûÉ豸³õʼ»¯Ê±£¬ËüµÄÉ豸Çý¶¯Í¨¹ýÔÚdevice_struct½á¹¹µÄchrdevsÊý×éÖÐÌí¼ÓÒ»¸öÈë¿ÚÀ´½«Æä×¢²áµ½LinuxºË ÐÄÉÏ¡£É豸µÄÖ÷É豸±êÖ¾·ûÓÃÀ´¶Ô´ËÊý×é½øÐÐË÷Òý£¨Èç¶ÔttyÉ豸µÄË÷Òý4£©¡£É豸µÄÖ÷É豸±êÖ¾·ûÊǹ̶¨µÄ¡£

chrdevsÊý×éÿ¸öÈë¿ÚÖеÄdevice_structÊý¾Ý½á¹¹°üº¬Á½¸öÔªËØ£»Ò»¸öÖ¸ÏòÒÑ×¢²áµÄÉ豸Çý¶¯Ãû³Æ£¬ÁíÒ»¸öÔòÊÇÖ¸ÏòÒ»×éÎļþ²Ù×÷Ö¸Õë¡£ËüÃÇÊÇλÓÚ´Ë×Ö·ûÉ豸Çý¶¯ÄÚ²¿µÄÎļþ²Ù×÷Àý³ÌµÄµØÖ·Ö¸Õ룬ÓÃÀ´´¦ÀíÏà¹ØµÄÎļþ²Ù×÷Èç´ò¿ª¡¢¶ÁдÓë¹Ø±Õ¡£/proc/devicesÖÐ×Ö·ûÉ豸µÄÄÚÈÝÀ´×ÔchrdevsÊý×é¡£

µ±´ò¿ª´ú±í×Ö·ûÉ豸µÄ×Ö·ûÌØÊâÎļþʱ£¨Èç/dev/cua0£©£¬ºËÐıØÐë×÷ºÃ×¼±¸ÒÔ±ãµ÷ÓÃÏàÓ¦×Ö·ûÉ豸Çý¶¯µÄÎļþ²Ù×÷Àý³Ì¡£ÓëÆÕͨµÄĿ¼ºÍÎļþÒ»Ñù£¬Ã¿¸ö×Ö·ûÌØÊâÎļþÓÃÒ»¸öVFS½Úµã±íʾ¡£Ã¿¸ö×Ö·ûÌØÊâÎļþʹÓõÄVFS inodeºÍËùÓÐÉè±¸ÌØÊâÎļþÒ»Ñù£¬°üº¬×ÅÉ豸µÄÖ÷´Ó±êÖ¾·û¡£Õâ¸öVFS inodeÓɵײãµÄÎļþϵͳÀ´½¨Á¢£¨±ÈÈçEXT2£©£¬ÆäÐÅÏ¢À´Ô´ÓÚÉ豸Ïà¹ØÎļþÃû³ÆËùÔÚÎļþϵͳ¡£

ÿ¸öVFS inodeºÍÒ»×éÎļþ²Ù×÷Ïà¹ØÁª,ËüÃǸù¾Ýinode´ú±íµÄÎļþϵͳ¶ÔÏó±ä»¯¶ø²»Í¬¡£µ±´´½¨Ò»¸ö´ú±í×Ö·ûÏà¹ØÎļþµÄVFS inodeʱ£¬ÆäÎļþ²Ù×÷±»ÉèÖÃΪȱʡµÄ×Ö·ûÉ豸²Ù×÷¡£

×Ö·ûÉ豸ֻÓÐÒ»¸öÎļþ²Ù×÷:´ò¿ªÎļþ²Ù×÷¡£µ±Ó¦Óôò¿ª×Ö·ûÌØÊâÎļþʱ£¬Í¨ÓÃÎļþ´ò¿ª²Ù×÷ʹÓÃÉ豸µÄÖ÷±êÖ¾·ûÀ´Ë÷Òý´ËchrdevsÊý×飬ÒÔ±ãµÃµ½ÄÇЩÎļþ²Ù×÷º¯ÊýÖ¸Õ롣ͬʱ½¨Á¢ÆðÃèÐð´Ë×Ö·ûÌØÊâÎļþµÄfile½á¹¹,ʹÆäÎļþ²Ù×÷Ö¸ÕëÖ¸Ïò´ËÉ豸Çý¶¯ÖеÄÎļþ²Ù×÷Ö¸Õ뼯ºÏ¡£ÕâÑùËùÓÐÓ¦ÓöÔËü½øÐеÄÎļþ²Ù×÷¶¼±»Ó³Éäµ½´Ë×Ö·ûÉ豸µÄÎļþ²Ù×÷¼¯ºÏÉÏ¡£

8.4.2  ¿éÉ豸

¿éÉ豸Ҳ֧³ÖÒÔÎļþ·½Ê½·ÃÎÊ¡£ÏµÍ³¶Ô¿éÉè±¸ÌØÊâÎļþÌṩÁ˷dz£ÀàËÆÓÚ×Ö·ûÌØÊâÎļþµÄÎļþ²Ù×÷»úÖÆ¡£LinuxÔÚblkdevsÊý×éÖÐά»¤ËùÓÐÒÑ×¢²áµÄ¿éÉ豸¡£ÏóchrdevsÊý×éÒ»Ñù£¬blkdevsҲʹÓÃÉ豸µÄÖ÷É豸ºÅ½øÐÐË÷Òý¡£ÆäÈë¿ÚÒ²ÊÇdevice_struct½á¹¹¡£ºÍ×Ö·ûÉ豸²»Í¬µÄÊÇϵͳÓм¸Àà¿éÉ豸¡£SCSIÉ豸ÊÇÒ»Àà¶øIDEÉ豸ÔòÊÇÁíÍâÒ»Àà¡£ËüÃǽ«ÒÔ¸÷×ÔÀà±ðµÇ¼Çµ½LinuxºËÐÄÖв¢ÎªºËÐÄÌṩÎļþ²Ù×÷¹¦ÄÜ¡£Ä³Àà¿éÉ豸µÄÉ豸Çý¶¯Îª´ËÀàÐÍÉ豸ÌṩÁËÀà±ðÏà¹ØµÄ½Ó¿Ú¡£ÈçSCSIÉ豸Çý¶¯±ØÐëΪSCSI×ÓϵͳÌṩ½Ó¿ÚÒÔ±ãSCSI×ÓϵͳÄÜÓÃËüÀ´ÎªºËÐÄÌṩ¶Ô´ËÉ豸µÄÎļþ²Ù×÷¡£

ºÍÆÕͨÎļþ²Ù×÷½Ó¿ÚÒ»Ñù, ÿ¸ö¿éÉ豸Çý¶¯±ØÐëΪbuffer cacheÌṩ½Ó¿Ú¡£Ã¿¸ö¿éÉ豸Çý¶¯½«Ìî³äÆäÔÚblk_devÊý×éÖеÄblk_dev_struct½á¹¹Èë¿Ú¡£Êý×éµÄË÷ÒýÖµ»¹ÊÇ´ËÉ豸µÄÖ÷É豸ºÅ¡£Õâ¸öblk_dev_struct½á¹¹°üº¬ÇëÇó¹ý³ÌµÄµØÖ·ÒÔ¼°Ö¸ÏòÇëÇóÊý¾Ý½á¹¹Á´±íµÄÖ¸Õ룬ÿ¸ö´ú±íÒ»¸ö´Óbuffer cacheÖÐÀ´ÈÃÉ豸½øÐÐÊý¾Ý¶ÁдµÄÇëÇó¡£


ͼ8.2 buffer cache¿éÉ豸ÇëÇó

ÿµ±buffer cacheÏ£Íû´ÓÒ»¸öÒÑ×¢²áÉ豸ÖжÁдÊý¾Ý¿éʱ,Ëü»á½«request½á¹¹Ìí¼Óµ½Æäblk_dev_structÖС£Í¼8.2±íʾÿ¸öÇëÇóÓÐÖ¸ÏòÒ»¸ö»ò¶à¸öbuffer_hear½á¹¹µÄÖ¸Õ룬ÿ¸öÇëÇó¶Áдһ¿éÊý¾Ý¡£Èçbuffer cache¶Ôbuffer_head½á¹¹ÉÏËø, Ôò½ø³Ì»áµÈ´ýµ½¶Ô´Ë»º³åµÄ¿é²Ù×÷Íê³É¡£Ã¿¸örequest½á¹¹¶¼´Ó¾²Ì¬Á´±íall_requestsÖзÖÅä¡£Èç¹û´ËÇëÇó±»¼ÓÈëµ½¿ÕÇëÇóÁ´±íÖÐ,Ôò½«µ÷ÓÃÇý¶¯ÇëÇóº¯ÊýÒÔÆô¶¯´ËÇëÇó¶ÓÁеĴ¦Àí,·ñÔò¸ÃÉ豸Çý¶¯½«¼òµ¥µØ´¦ÀíÇëÇóÁ´±íÉϵÄrequest ¡£

Ò»µ©É豸Çý¶¯Íê³ÉÁËÇëÇóÔòËü±ØÐ뽫ÿ¸öbuffer_heard½á¹¹´Órequest½á¹¹ÖÐÇå³ý£¬½«ËüÃDZê¼Ç³ÉÒѸüÐÂ״̬²¢½âËøÖ®¡£¶Ôbuffer_headµÄ½âËø½«»½ÐÑËùÓеȴý´Ë¿é²Ù×÷Íê³ÉµÄ˯Ãß½ø³Ì¡£Èç½âÎöÎļþÃû³ÆÊ±,EXT2Îļþϵͳ±ØÐë´Ó°üº¬´ËÎļþϵͳµÄÉ豸ÖжÁÈ¡°üº¬Ï¸öEXT2Ŀ¼Èë¿ÚµÄÊý¾Ý¿é¡£ÔÚbuffer_headÉÏ˯ÃߵĽø³ÌÔÚÉ豸Çý¶¯±»»½ÐѺ󽫰üº¬´ËĿ¼Èë¿Ú¡£requestÊý¾Ý½á¹¹±»±ê¼Ç³É¿ÕÏÐÒԱ㱻ÆäËü¿éÇëÇóʹÓá£

8.5  Ó²ÅÌ

´ÅÅÌÇý¶¯Æ÷ÌṩÁËÒ»¸öÓÀ¾ÃÐÔ´æ´¢Êý¾ÝµÄ·½Ê½£¬½«Êý¾Ý±£´æÔÚÐýתµÄÅÌÆ¬ÉÏ¡£Ð´ÈëÊý¾Ýʱ´ÅÍ·½«´Å»¯ÅÌÆ¬ÉϵÄÒ»¸öС΢Á£¡£ÕâЩÅÌÆ¬±»Á¬½Óµ½Ò»¸öÖÐÖáÉϲ¢ÒÔ3000µ½10£¬000RPM£¨Ã¿·ÖÖÓ¶àÉÙת£©µÄºã¶¨ËÙ¶ÈÐýת¡£¶øÈíÅ̵ÄתËÙ½öΪ360RPM¡£´ÅÅ̵ĶÁ/д´ÅÍ·¸ºÔð¶ÁдÊý¾Ý£¬Ã¿¸öÅÌÆ¬µÄÁ½²à¸÷ÓÐÒ»¸ö´ÅÍ·¡£´ÅÍ·¶Áдʱ²¢²»½Ó´¥ÅÌÆ¬±íÃæ¶øÊǸ¡ÔÚ¾à±íÃæ·Ç³£½üµÄ¿ÕÆøµæÖУ¨°ÙÍò·ÖÖ®Ò»Ó¢´ç£©¡£´ÅÍ·ÓÉÒ»¸öÂí´ïÇý¶¯ÔÚÅÌÆ¬±íÃæÒÆ¶¯¡£ËùÓеĴÅÍ·±»Á¬ÔÚÒ»Æð£¬ËüÃÇͬʱ´©¹ýÅÌÆ¬µÄ±íÃæ¡£

ÅÌÆ¬µÄÿ¸ö±íÃæ¶¼±»»®·Ö³ÉΪ½Ð×ö´ÅµÀµÄÏÁխͬÐÄÔ²¡£0´ÅµÀλÓÚ×îÍâÃæ¶ø×î´ó´ÅµÀλÓÚ×î¿¿½üÖÐÑëÖ÷Öá¡£ÖùÃæÖ¸Ò»×éÏàͬ´ÅµÀºÅµÄ´ÅµÀ¡£ËùÒÔÿ¸öÅÌÆ¬ÉϵĵÚÎå´ÅµÀ×é³ÉÁË´ÅÅ̵ĵÚÎåÖùÃæ¡£ÓÉÓÚÖùÃæºÅÓë´ÅµÀºÅÏàµÈËùÒÔÎÒÃǾ­³£¿ÉÒÔ¿´µ½ÒÔÖùÃæÃèÐðµÄ´ÅÅ̲¼¾Ö¡£Ã¿¸ö´ÅµÀ¿É½øÒ»²½»®·Ö³ÉÉÈÇø¡£ËüÊÇÓ²ÅÌÊý¾Ý¶ÁдµÄ×îСµ¥ÔªÍ¬Ê±Ò²ÊÇ´ÅÅ̵Ŀé´óС¡£Ò»°ãµÄÉÈÇø´óСΪ512×Ö½Ú²¢ÇÒÕâ¸ö´óС¿ÉÒÔ´ÅÅÌÖÆÔì³öÀ´ºó¸ñʽ»¯Ê±ÉèÖá£

Ò»¸ö´ÅÅ̾­³£±»Ãè»æ³ÉÓжàÉÙ¸÷ÖùÃæ¡¢´ÅÍ·ÒÔ¼°ÉÈÇø¡£ÀýÈçϵͳÆô¶¯Ê±Linux½«ÕâÑùÃèÐðÒ»¸öIDEÓ²ÅÌ£º


hdb: Conner Peripherals 540MB - CFS540A, 516MB w/64kB Cache, CHS=1050/16/63

Õâ±íʾ´Ë´ÅÅÌÓÐ1050¸÷ÖùÃæ£¨´ÅµÀ£©£¬16¸ö´ÅÍ·£¨8¸öÅÌÆ¬£©ÇÒÿ´ÅµÀ°üº¬63¸öÉÈÇø¡£ÕâÑùÎÒÃÇ¿ÉÒÔͨ¹ýÉÈÇøÊý¡¢¿éÊýÒÔ¼°512×Ö½ÚÉÈÇø´óС¼ÆËã³ö´ÅÅ̵Ĵ洢ÈÝÁ¿Îª529200×Ö½Ú¡£Õâ¸öÈÝÁ¿ºÍ´ÅÅÌ×ÔÉíÉù³ÆµÄ516M×Ö½Ú²¢²»Ïàͬ£¬ÕâÊÇÒòΪÓÐЩÉÈÇø±»ÓÃÀ´´æ·Å´ÅÅÌ·ÖÇøÐÅÏ¢¡£ÓÐЩ´ÅÅÌ»¹ÄÜ×Ô¶¯Ñ°ÕÒ»µÉÈÇø²¢ÖØÐÂË÷Òý´ÅÅÌÒÔÕý³£Ê¹Óá£

ÎïÀíÓ²Å̿ɽøÒ»²½»®·Ö³É·ÖÇø¡£Ò»¸ö·ÖÇøÊÇÒ»´ó×éÎªÌØÊâÄ¿µÄ¶ø·ÖÅäµÄÉÈÇø¡£¶Ô´ÅÅ̽øÐзÖÇøÊ¹µÃ´ÅÅÌ¿ÉÒÔͬʱ±»¼¸¸ö²Ù×÷ϵͳ»ò²»Í¬Ä¿µÄʹÓá£Ðí¶àLinuxϵͳ¾ßÓÐÈý¸ö·ÖÇø£ºDOSÎļþϵͳ·ÖÇø£¬EXT2Îļþϵͳ·ÖÇøºÍ½»»»·ÖÇø¡£Ó²ÅÌ·ÖÇøÓ÷ÖÇø±íÀ´ÃèÐ𣻱íÖÐÿ¸öÈë¿ÚÓôÅÍ·¡¢ÉÈÇø¼°ÖùÃæºÅÀ´±íʾ·ÖÇøµÄÆðʼÓë½áÊø¡£¶ÔÓÚÓÃDOS¸ñʽ»¯µÄÓ²ÅÌÓÐ4¸öÖ÷·ÖÇø±í¡£µ«²»Ò»¶¨ËùÓеÄËĸöÈë¿Ú¶¼±»Ê¹Óá£fdisk Ö§³Ö3ÖзÖÇøÀàÐÍ£ºÖ÷·ÖÇø¡¢À©Õ¹·ÖÇø¼°Âß¼­·ÖÇø¡£À©Õ¹·ÖÇø²¢²»ÊÇÕæÕýµÄ·ÖÇø£¬ËüÖ»²»¹ý°üº¬Á˼¸¸öÂß¼­·ÖÇø¡£À©Õ¹ºÍÂß¼­·ÖÇøÓÃÀ´´òÆÆËĸöÖ÷·ÖÇøµÄÏÞÖÆ¡£ÒÔÏÂÊÇÒ»¸ö°üº¬Á½¸öÖ÷·ÖÇøµÄfdiskÃüÁîµÄÊä³ö£º


Disk /dev/sda: 64 heads, 32 sectors, 510 cylinders

Units = cylinders of 2048 * 512 bytes



   Device Boot   Begin    Start      End   Blocks   Id  System

/dev/sda1            1        1      478   489456   83  Linux native

/dev/sda2          479      479      510    32768   82  Linux swap



Expert command (m for help): p



Disk /dev/sda: 64 heads, 32 sectors, 510 cylinders



Nr AF  Hd Sec  Cyl  Hd Sec  Cyl   Start    Size ID

 1 00   1   1    0  63  32  477      32  978912 83

 2 00   0   1  478  63  32  509  978944   65536 82

 3 00   0   0    0   0   0    0       0       0 00

 4 00   0   0    0   0   0    0       0       0 00

ÕâЩÄÚÈݱíÃ÷µÚÒ»¸ö·ÖÇø´ÓÖùÃæ£¨»òÕߴŵÀ£©0£¬Í·1ºÍÉÈÇø1¿ªÊ¼Ò»Ö±µ½ÖùÃæ477£¬ÉÈÇø22ºÍÍ·63½áÊø¡£ ÓÉÓÚÿ´ÅµÀÓÐ32¸öÉÈÇøÇÒÓÐ64¸ö¶Áд´ÅÍ·Ôò´Ë·ÖÇøÔÚ´óСÉϵÈÓÚÖùÃæÊý¡£fdiskʹ·ÖÇøÔÚÖùÃæ±ß½çÉÏ¶ÔÆë¡£ Ëü´Ó×îÍâÃæµÄÖùÃæ0¿ªÊ¼²¢ÏòÖмäÀ©Õ¹478¸öÖùÃæ¡£µÚ¶þ¸ö·ÖÇø£º½»»»·ÖÇø´Ó478ºÅÖùÃæ¿ªÊ¼²¢À©Õ¹µ½´ÅÅ̵Ä×îÄÚȦ¡£


ͼ8.3 ´ÅÅÌÁ´±í

ÔÚ³õʼ»¯¹ý³ÌÖÐLinuxÈ¡µÃϵͳÖÐÓ²Å̵ÄÍØÆË½á¹¹Ó³Éä¡£ËüÕÒ³öÓжàÉÙÖÐÓ²ÅÌÒÔ¼°ÊÇʲôÀàÐÍ¡£ÁíÍâLinux »¹ÒªÕÒµ½Ã¿¸öÓ²Å̵ķÖÇø·½Ê½¡£ËùÓÐÕâЩ¶¼ÓÃÓÉgendisk_headÁ´Ö¸ÕëÖ¸ÏòµÄgendisk½á¹¹Á´±íÀ´±íʾ¡£Ã¿¸ö´ÅÅÌ×ÓϵͳÈçIDEÔÚ³õʼ»¯Ê±²úÉú±íʾ´ÅÅ̽ṹµÄgendisk½á¹¹¡£Í¬Ê±Ëü½«×¢²áÆäÎļþ²Ù×÷Àý³Ì²¢½«´ËÈë¿ÚÌí¼Óµ½blk_devÊý¾Ý½á¹¹ÖС£Ã¿¸ögendisk½á¹¹°üº¬Î¨Ò»µÄÖ÷É豸ºÅ£¬ËüÓë¿éÏà¹ØÉ豸µÄÖ÷É豸ºÅÏàͬ¡£ÀýÈçSCSI´ÅÅÌ×Óϵͳ´´½¨ÁËÒ»¸öÖ÷É豸ºÅΪ8µÄgendiskÈë¿Ú£¨"sd"£©£¬ÕâÒ²ÊÇËùÓÐSCSIÓ²ÅÌÉ豸µÄÖ÷É豸ºÅ¡£Í¼8.3¸ø³öÁËÁ½¸ögendiskÈë¿Ú£¬Ò»¸ö±íʾSCSI´ÅÅÌ×Óϵͳ¶øÁíÒ»¸ö±íʾIDE´ÅÅÌ¿ØÖÆÆ÷¡£ide0±íʾÖ÷IDE¿ØÖÆÆ÷¡£

¾¡¹Ü´ÅÅÌ×ÓϵͳÔÚÆä³õʼ»¯¹ý³ÌÖоͽ¨Á¢ÁËgendiskÈë¿Ú, µ«ÊÇÖ»ÓÐLinux×÷·ÖÇø¼ì²éʱ²ÅʹÓá£Ã¿¸ö´ÅÅÌ×Óϵͳͨ¹ýά»¤Ò»×éÊý¾Ý½á¹¹½«ÎïÀíÓ²ÅÌÉϵķÖÇøÓëij¸öÌØÊâÖ÷´ÓÌØÊâÉ豸»¥ÏàÓ³Éä¡£ÎÞÂÛºÎʱͨ¹ý buffer cache»òÎļþ²Ù×÷¶Ô¿éÉ豸µÄ¶Áд¶¼½«±»ºËÐ͍Ïòµ½¶Ô¾ßÓÐij¸öÌØ¶¨Ö÷É豸ºÅµÄÉ豸ÎļþÉÏ£¨Èç /dev/sda2£©¡£¶ø´ÓÉ豸ºÅµÄ¶¨Î»Óɸ÷×ÔÉ豸Çý¶¯»ò×ÓϵͳÀ´Ó³Éä¡£

8.5.1  IDE Ó²ÅÌ

LinuxϵͳÉÏʹÓõÃ×î¹ã·ºµÄÓ²ÅÌÊǼ¯³Éµç×Ó´ÅÅÌ»òÕßIDEÓ²ÅÌ¡£IDEÊÇÒ»¸öÓ²Å̽ӿڶø²»ÊÇÀàËÆSCSIµÄI/O×ÜÏß½Ó¿Ú¡£Ã¿¸öIDE¿ØÖÆÆ÷Ö§³ÖÁ½¸öÓ²ÅÌ£¬Ò»¸öΪÖ÷ÁíÒ»¸öΪ´Ó¡£Ö÷´ÓÓ²ÅÌ¿ÉÒÔͨ¹ýÅÌÉϵÄÌøÏßÀ´ÉèÖá£ÏµÍ³ÖеĵÚÒ»¸öIDE¿ØÖÆÆ÷³ÉΪÖ÷IDE¿ØÖÆÆ÷¶øÁíÒ»¸öΪ´ÓÊô¿ØÖÆÆ÷¡£IDE¿ÉÒÔÒÔÿÃë3.3M×ֽڵĴ«ÊäÂÊ´«ÊäÊý¾ÝÇÒ×î´óÈÝÁ¿Îª538M×Ö½Ú¡£EIDE»òÔöǿʽIDE¿ÉÒÔ½«´ÅÅÌÈÝÁ¿À©Õ¹µ½8.6G×Ö½Ú¶øÊý¾Ý´«ÊäÂÊΪ16.6M×Ö½Ú/Ãë¡£ÓÉÓÚIDEºÍEIDE¶¼±ÈSCSIÓ²Å̱ãÒË, ËùÒÔ´ó¶àÏÖ´úPC»úÔÚ°üº¬Ò»¸ö»ò¼¸¸ö°åÉÏIDE¿ØÖÆÆ÷¡£

LinuxÒÔÆä·¢ÏÖ¿ØÖÆÆ÷µÄ˳ÐòÀ´¶ÔIDEÓ²Å̽øÐÐÃüÃû¡£ÔÚÖ÷¿ØÖÆÆ÷ÖеÄÖ÷ÅÌΪ/dev/hda¶ø´ÓÅÌΪ/dev/hdb¡£/dev/hdcÓÃÀ´±íʾ´ÓÊôIDE¿ØÖÆÆ÷ÖеÄÖ÷ÅÌ¡£IDE×Óϵͳ½«ÏòLinuxºËÐÄ×¢²áIDE¿ØÖÆÆ÷¶ø²»ÊÇIDEÓ²ÅÌ¡£Ö÷IDE¿ØÖÆÆ÷µÄÖ÷±êÖ¾·ûΪ3¶ø´ÓÊôIDE¿ØÖÆÆ÷µÄÖ÷±êÖ¾·ûΪ22¡£Èç¹ûϵͳÖаüº¬Á½¸öIDE¿ØÖÆÆ÷ÔòIDE×ÓϵͳµÄÈë¿ÚÔÚblk_devºÍblkdevsÊý×éµÄµÚ2ºÍµÚ22´¦¡£IDEµÄ¿éÉ豸Îļþ·´Ó¦ÁËÕâÖÖ±àºÅ·½Ê½£¬Ó²ÅÌ /dev/hdaºÍ/dev/hdb¶¼Á¬½Óµ½Ö÷IDE¿ØÖÆÆ÷ÉÏ£¬ÆäÖ÷±êÖ¾·ûΪ3¡£¶ÔIDE×ÓϵͳÉÏÕâЩ¿éÏà¹ØÎļþµÄÎļþ»òÕßbuffer cacheµÄ²Ù×÷¶¼Í¨¹ýºËÐÄʹÓÃÖ÷É豸±êÖ¾·û×÷ΪË÷Òý¶¨Ïòµ½IDE×ÓϵͳÉÏ¡£µ±·¢³öÇëÇóʱ£¬´ËÇëÇóÓÉÄĸöIDEÓ²ÅÌÀ´Íê³ÉÈ¡¾öÓÚIDE×Óϵͳ¡£ÎªÁË×÷µ½ÕâÒ»µãIDE×ÓϵͳʹÓôÓÉ豸±àºÅ¶ÔÓ¦µÄÉè±¸ÌØÊâ±êÖ¾·û£¬ÓÉËü°üº¬µÄÐÅÏ¢À´½«ÇëÇó·¢Ë͵½ÕýÈ·µÄÓ²ÅÌÉÏ¡£Î»ÓÚÖ÷IDE¿ØÖÆÆ÷ÉϵÄIDE´ÓÅÌ/dev/hdbµÄÉ豸±êÖ¾·ûΪ£¨3£¬64£©¡£¶ø´ËÅÌÖеÚÒ»¸ö·ÖÇø£¨/dev/hdb1£©µÄÉ豸±êÖ¾·ûΪ(3£¬65)¡£

8.5.2  ³õʼ»¯IDE×Óϵͳ

IDE´ÅÅÌÓëIBM PC¹ØÏµ·Ç³£ÃÜÇС£ÔÚÕâô¶àÄêÖÐÕâЩÉ豸µÄ½Ó¿Ú·¢ÉúÁ˱仯¡£ÕâʹµÃIDE×ÓϵͳµÄ³õʼ»¯¹ý³Ì±È¿´ÉÏÈ¥Òª¸´Ôӵöࡣ

Linux¿ÉÒÔÖ§³ÖµÄ×î¶àIDE¿ØÖÆÆ÷¸öÊýΪ4¡£Ã¿¸ö¿ØÖÆÆ÷ÓÃide_hwifsÊý×éÖеÄide_hwif_t½á¹¹À´±íʾ¡£Ã¿¸öide_hwif_t½á¹¹°üº¬Á½¸öide_drive_t½á¹¹ÒÔÖ§³ÖÖ÷´ÓIDEÇý¶¯Æ÷¡£ÔÚIDE×ÓϵͳµÄ³õʼ»¯¹ý³ÌÖÐLinuxͨ¹ý·ÃÎÊϵͳCMOSÀ´ÅжÏÊÇ·ñÓйØÓÚÓ²Å̵ÄÐÅÏ¢¡£ÕâÖÖCMOSÓÉµç³Ø¹©µçËùÒÔϵͳ¶ÏµçʱҲ²»»áÒÅʧÆäÖеÄÄÚÈÝ¡£Ëü λÓÚÓÀ²»Í£Ö¹µÄϵͳʵʱʱÖÓÉ豸ÖС£´ËCMOSÄÚ´æµÄλÖÃÓÉϵͳBIOSÀ´ÉèÖã¬Ëü½«Í¨ÖªLinuxϵͳÖÐÓжàÉÙ¸öIDE¿ØÖÆÆ÷ÓëÇý¶¯Æ÷¡£LinuxʹÓÃÕâЩ´ÓBIOSÖз¢ÏֵĴÅÅÌÊý¾ÝÀ´½¨Á¢¶ÔÓ¦´ËÇý¶¯Æ÷µÄide_hwif_t½á¹¹¡£ Ðí¶àÏÖ´úPCϵͳʹÓÃPCIоƬ×éÈçIntel 82430 VXоƬ×齫PCI EIDE¿ØÖÆÆ÷·â×°ÔÚÄÚ¡£IDE×ÓϵͳʹÓÃPCI BIOS»Øµ÷º¯ÊýÀ´¶¨Î»ÏµÍ³ÖÐPCI £¨E£©IDE¿ØÖÆÆ÷¡£È»ºó¶ÔÕâЩоƬ×éµ÷ÓÃPCIÌØ¶¨²éѯÀý³Ì¡£

ÿ´ÎÕÒµ½Ò»¸öIDE½Ó¿Ú»ò¿ØÖÆÆ÷¾ÍÓн¨Á¢Ò»¸öide_hwif_t½á¹¹À´±íʾ¿ØÖÆÆ÷ºÍÓëÖ®ÏàÁ¬µÄÓ²ÅÌ¡£ÔÚ²Ù×÷¹ý³ÌÖÐIDEÇý¶¯Æ÷¶ÔI/OÄÚ´æ¿Õ¼äÖеÄIDEÃüÁî¼Ä´æÆ÷дÈëÃüÁî¡£Ö÷IDE¿ØÖÆÆ÷µÄȱʡ¿ØÖƺÍ״̬¼Ä´æÆ÷ÊÇ0x1F0 - 0x1F7¡£Õâ¸öµØÖ·ÓÉÔçÆÚµÄIBM PC¹æ·¶É趨¡£IDEÇý¶¯Æ÷Ϊÿ¸ö¿ØÖÆÆ÷ÏòLinux×¢²á¿é»º³åcacheºÍVFS½Úµã²¢½«Æä¼ÓÈëµ½blk_devºÍblkdevsÊý×éÖС£IDEÇý¶¯Æ÷ÐèÒªÉêÇëij¸öÖжϡ£Ò»°ãÖ÷IDE¿ØÖÆÆ÷ÖжϺÅΪ14¶ø´ÓÊôIDE¿ØÖÆÆ÷Ϊ15¡£È»¶øÕâЩ¶¼¿ÉÒÔͨ¹ýÃüÁîÐÐÑ¡ÏîÓɺËÐÄÀ´ÖØÔØ¡£IDEÇý¶¯Æ÷ͬʱ»¹½«gendiskÈë¿Ú¼ÓÈëµ½Æô¶¯Ê±·¢ÏÖµÄÿ¸öIDE¿ØÖÆÆ÷µÄgendiskÁ´±íÖÐÈ¥¡£·ÖÇø¼ì²é´úÂëÖªµÀÿ¸öIDE¿ØÖÆÆ÷¿ÉÄܰüº¬Á½¸öIDEÓ²ÅÌ¡£

8.5.3  SCSI Ó²ÅÌ

SCSI£¨Ð¡ÐͼÆËã»úϵͳ½Ó¿Ú£©×ÜÏßÊÇÒ»ÖÖ¸ßЧµÄµã¶ÔµãÊý¾Ý×ÜÏߣ¬Ëü×î¶à¿ÉÒÔÖ§³Ö8¸öÉ豸£¬ÆäÖаüÀ¨¶à¸öÖ÷É豸¡£Ã¿¸öÉ豸ÓÐΨһµÄ±êÖ¾·û²¢¿ÉÒÔͨ¹ýÅÌÉϵÄÌøÏßÀ´ÉèÖá£ÔÚ×ÜÏßÉϵÄÁ½¸öÉ豸¼äÊý¾Ý¿ÉÒÔÒÔͬ²½»òÒì²½·½Ê½£¬ÔÚ32λÊý¾Ý¿í¶ÈÏ´«ÊäÂÊΪ40M×Ö½ÚÀ´½»»»Êý¾Ý¡£SCSI×ÜÏßÉÏ¿ÉÒÔÔÚÉ豸¼äͬʱ´«ÊäÊý¾ÝÓë״̬ÐÅÏ¢¡£initiatorÉ豸ºÍtargetÉ豸¼äµÄÖ´Ðв½Öè×î¶à¿ÉÒÔ°üÀ¨8¸ö²»Í¬µÄ½×¶Î¡£Äã¿ÉÒÔ´Ó×ÜÏßÉÏ5¸öÐźÅÀ´·Ö±æSCSI×ÜÏߵĵ±Ç°½×¶Î¡£Õâ8¸ö½×¶ÎÊÇ£º

BUS FREE
µ±Ç°Ã»ÓÐÉ豸ÔÚ¿ØÖÆ×ÜÏßÇÒ×ÜÏßÉÏÎÞÊÂÎñ·¢Éú¡£
ARBITRATION
Ò»¸öSCSIÉ豸ÊÔͼȡµÃSCSI×ÜÏߵĿØÖÆÈ¨£¬ÕâʱËü½«ÆäSCSI±êÖ¾·û·ÅÖõ½µØÖ·Òý½ÅÉÏ¡£¾ßÓÐ×î¸ßSCSI±êÖ¾·û±àºÅµÄÉ豸½«»ñµÃ×ÜÏß¿ØÖÆÈ¨¡£
SELECTION
µ±É豸ͨ¹ýÖٲóɹ¦µØÈ¡µÃÁ˶ÔSCSI×ÜÏߵĿØÖÆÈ¨ºóËü±ØÐëÏòËü×¼±¸·¢ËÍÃüÁîµÄÄǸöSCSIÉ豸·¢³öÐźš£¾ßÌå×ö·¨Êǽ«Ä¿±êÉ豸µÄSCSI±êÖ¾·û·ÅÖÃÔÚµØÖ·Òý½ÅÉϽøÐÐÉùÃ÷¡£
RESELECTION
ÔÚÒ»¸öÇëÇóµÄ´¦Àí¹ý³ÌÖÐSCSIÉ豸¿ÉÄÜ»á¶Ï¿ªÁ¬½Ó¡£Ä¿±ê£¨target£©É豸½«ÔÙ´ÎÑ¡ÔñÆô¶¯É豸 £¨initiator£©¡£²»ÊÇËùÓеÄSCSIÉ豸¶¼Ö§³Ö´Ë½×¶Î¡£
COMMAND
´Ë½×¶ÎÖÐinitiatorÉ豸½«ÏòtargetÉ豸·¢ËÍ6¡¢10»ò12×Ö½ÚÃüÁî¡£
DATA IN, DATA OUT
´Ë½×¶ÎÖÐÊý¾Ý½«ÔÚinitiatorÉ豸ºÍtargetÉ豸¼ä´«Êä¡£
STATUS
ËùÓÐÃüÁîÍê±Ïºó½«½øÈë´Ë½×¶Î£¬´ËʱÔÊÐítargetÉ豸ÏòinitiatorÉ豸·¢ËÍ״̬ÐÅÏ¢ÒÔָʾ²Ù×÷³É¹¦Óë·ñ¡£
MESSAGE IN, MESSAGE OUT
´Ë½×¶Î¸½¼ÓÐÅÏ¢½«ÔÚinitiatorÉ豸ºÍtargetÉ豸¼ä´«Êä¡£

Linux SCSI×ÓϵͳÓÉÁ½¸ö»ù±¾²¿·Ö×é³É£¬Ã¿¸öÓÉÒ»¸öÊý¾Ý½á¹¹À´±íʾ¡£

host
Ò»¸öSCSI host¼´Ò»¸öÓ²¼þÉ豸£ºSCSI¿ØÖÆÈ¨¡£NCR 810 PCI SCSI¿ØÖÆÈ¨¼´Ò»ÖÖSCSI host¡£ÔÚLinux ϵͳÖпÉÒÔ´æÔÚÏàͬÀàÐ͵Ķà¸öSCSI¿ØÖÆÈ¨£¬Ã¿¸öÓÉÒ»¸öµ¥¶ÀµÄSCSI hostÀ´±íʾ¡£ÕâÒâζ×ÅÒ»¸öSCSIÉ豸Çý¶¯¿ÉÒÔ¿ØÖƶà¸ö¿ØÖÆÈ¨ÊµÀý¡£SCSI host×ÜÊÇSCSIÃüÁîµÄinitiatorÉ豸¡£
Device
ËäÈ»SCSIÖ§³Ö¶àÖÖÀàÐÍÉ豸Èç´Å´ø»ú¡¢CD-ROMµÈµÈ£¬µ«×î³£¼ûµÄSCSIÉ豸ÊÇSCSI´ÅÅÌ¡£SCSIÉ豸×ÜÊÇSCSIÃüÁîµÄtarget¡£ÕâЩÉ豸±ØÐëÇø±ð¶Ô´ý£¬ÀýÈçÏóCD-ROM»òÕß´Å´ø»úÕâÖÖ¿ÉÒÆ¶¯É豸£¬Linux ±ØÐë¼ì²â½éÖÊÊÇ·ñÒѾ­Òƶ¯¡£²»Í¬µÄ´ÅÅÌÀàÐÍÓв»Í¬µÄÖ÷É豸ºÅ£¬ÕâÑùLinux¿ÉÒÔ½«¿éÉ豸ÇëÇó·¢Ë͵½ÕýÈ·µÄSCSIÉ豸¡£

³õʼ»¯SCSI×Óϵͳ

SCSI×ÓϵͳµÄ³õʼ»¯·Ç³£¸´ÔÓ£¬Ëü±ØÐë·´Ó³´¦SCSI×ÜÏß¼°ÆäÉ豸µÄ¶¯Ì¬ÐÔ¡£LinuxÔÚÆô¶¯Ê±³õʼ»¯SCSI×Óϵͳ¡£ Èç¹ûËüÕÒµ½Ò»¸öSCSI¿ØÖÆÆ÷£¨¼´SCSI hosts£©Ôò»áɨÃè´ËSCSI×ÜÏßÀ´ÕÒ³ö×ÜÏßÉϵÄËùÓÐÉ豸¡£È»ºó³õʼ»¯ÕâЩÉ豸²¢Í¨¹ýÆÕͨÎļþºÍbuffer cache¿éÉ豸²Ù×÷ʹLinuxºËÐĵįäËü²¿·ÖÄÜʹÓÃÕâЩÉ豸¡£³õʼ»¯¹ý³Ì·Ö³ÉËĸö½×¶Î£º

Ê×ÏÈLinux½«ÕÒ³öÔÚϵͳºËÐÄÁ¬½Óʱ±»Á¬ÈëºËÐĵÄÄÄÖÖÀàÐ͵ÄSCSIÖ÷»úÊÊÅäÆ÷»ò¿ØÖÆÆ÷ÓÐÓ²¼þÐèÒª¿ØÖÆ¡£Ã¿¸ö ºËÐÄÖеÄSCSI hostÔÚbuiltin_scsi_hostsÊý×éÖÐÓÐÒ»¸öScsi_Host_TemplateÈë¿Ú¡£¶øScsi_Host_Template½á¹¹Öаüº¬Ö´ÐÐÌØ¶¨SCSI host²Ù×÷, Èç¼ì²âÁ¬µ½´ËSCSI hostµÄSCSIÉ豸µÄÀý³ÌµÄÈë¿ÚÖ¸Õë¡£ÕâЩÀý³ÌÔÚSCSI ×Óϵͳ½øÐÐ×ÔÎÒÅäÖÃʱʹÓÃͬʱËüÃÇ»¹ÊÇÖ§³Ö´ËhostÀàÐ͵ÄSCSIÉ豸Çý¶¯µÄÒ»²¿·Ö¡£Ã¿¸ö±»¼ì²âµÄSCSI host£¬ ¼´ÓëÕæÕýSCSIÉ豸Á¬½ÓµÄhost½«Æä×ÔÉíµÄScsi_Host_Template½á¹¹Ìí¼Óµ½»î¶¯SCSI hostsµÄscsi_hosts½á¹¹Á´±íÖÐÈ¥¡£Ã¿¸ö±»¼ì²âhostÀàÐ͵ÄʵÀýÓÃÒ»¸öscsi_hostlistÁ´±íÖеÄScsi_Host½á¹¹À´±íʾ¡£ÀýÈçÒ»¸ö°üº¬Á½¸öNCR810 PCI SCSI¿ØÖÆÆ÷µÄϵͳµÄÁ´±íÖн«ÓÐÁ½¸öScsi_HostÈë¿Ú£¬Ã¿¸ö¿ØÖÆÆ÷¶ÔÓ¦Ò»¸ö¡£Ã¿¸öScsi_Host Ö¸ÏòÒ»¸ö´ú±íÆ÷É豸Çý¶¯µÄScsi_Host_Template¡£


ͼ8.4 SCSIÊý¾Ý½á¹¹

ÏÖÔÚÿ¸öSCSI hostÒѾ­ÕÒµ½£¬SCSI×Óϵͳ±ØÐëÕÒ³öÄÄЩSCSIÉ豸Á¬½ÓÄĸöhostµÄ×ÜÏß¡£SCSIÉ豸µÄ±àºÅÊÇ ´Ó0µ½7£¬¶ÔÓÚÒ»ÌõSCSI×ÜÏßÉÏÁ¬½ÓµÄ¸÷¸öÉ豸£¬ÆäÉ豸±àºÅ»òSCSI±êÖ¾·ûÊÇΨһµÄ¡£SCSI±êÖ¾·û¿ÉÒÔͨ¹ýÉè ±¸ÉϵÄÌøÏßÀ´ÉèÖá£SCSI³õʼ»¯´úÂëͨ¹ýÔÚSCSI×ÜÏßÉÏ·¢ËÍÒ»¸öTEST_UNIT_READYÃüÁîÀ´ÕÒ³öÿ¸öSCSIÉ豸¡£ µ±É豸×÷³öÏàӦʱÆä±êÖ¾·ûͨ¹ýÒ»¸öENQUIRYÃüÁîÀ´¶ÁÈ¡¡£Linux½«´ÓÖеõ½Éú²ú³§É̵ÄÃû³ÆºÍÉ豸ģʽÒÔ¼° ÐÞ¶©°æ±¾ºÅ¡£SCSIÃüÁîÓÉÒ»¸öScsi_Cmnd½á¹¹À´±íʾͬʱÕâЩÃüÁîͨ¹ýµ÷ÓÃScsi_Host_Template½á¹¹ÖеÄÉ豸 Çý¶¯Àý³Ì´«µÝµ½´ËSCSI hostµÄÉ豸Çý¶¯ÖС£±»ÕÒµ½µÄÿ¸öSCSIÉ豸ÓÃÒ»¸öScsi_Device½á¹¹À´±íʾ£¬Ã¿¸öÖ¸Ïò Æä¸¸Scsi_Host½á¹¹¡£ËùÓÐÕâЩScsi_Device½á¹¹±»Ìí¼Óµ½scsi_deviceÁ´±íÖС£Í¼8.4¸ø³öÁËÕâЩÖ÷ÒªÊý¾Ý½á¹¹ ¼äµÄ¹ØÏµ¡£

Ò»¹²ÓÐËÄÖÖSCSIÉ豸ÀàÐÍ£º´ÅÅÌ£¬´Å´ø»ú£¬CD-ROMºÍÆÕͨSCSIÉ豸¡£Ã¿ÖÖÀàÐ͵ÄSCSIÉ豸ÒÔ²»Í¬µÄÖ÷¿éÉ豸 ÀàÐ͵¥¶ÀµÇ¼Çµ½ºËÐÄÖС£Èç¹ûÓжà¸öÀàÐ͵ÄSCSIÉ豸´æÔÚÔòËüÃÇÖ»µÇ¼Ç×ÔÉí¡£Ã¿¸öSCSIÉ豸ÀàÐÍ£¬ÈçSCSI´ÅÅÌ Î¬»¤×ÅÆä×ÔÉíµÄÉ豸ÁÐ±í¡£ËüʹÓÃÕâЩ±í½«ºËÐÄ¿é²Ù×÷£¨file»òÕßbuffer cache£©¶¨Ïòµ½ÕýÈ·µÄÉ豸Çý¶¯»ò SCSI hostÉÏ¡£Ã¿ÖÖSCSIÉ豸ÀàÐÍÓÃÒ»¸öScsi_Device_Template½á¹¹À´±íʾ¡£´Ë½á¹¹Öаüº¬´ËÀàÐÍSCSIÉ豸µÄ ÐÅÏ¢ÒÔ¼°Ö´Ðи÷ÖÖÈÎÎñµÄÀý³ÌµÄÈë¿ÚµØÖ·¡£»»¾ä»°Ëµ£¬Èç¹ûSCSI×ÓϵͳϣÍûÁ¬½ÓÒ»¸öSCSI´ÅÅÌÉ豸Ëü½«µ÷Óà SCSI´ÅÅÌÀàÐÍÁ¬½ÓÀý³Ì¡£Èç¹ûÓжà¸ö¸ÃÖÖÀàÐ͵ÄSCSIÉ豸±»¼ì²âµ½Ôò´ËScsi_Type_Template½á¹¹½«±»Ìí¼Óµ½ scsi_devicelistÁ´±íÖС£

SCSI×ÓϵͳµÄ×îºóÒ»¸ö½×¶ÎÊÇΪÿ¸öÒѵǼǵÄScsi_Device_Template½á¹¹µ÷ÓÃfinishº¯Êý¡£¶ÔÓÚSCSI´ÅÅÌÀàÐÍ É豸Ëü½«Çý¶¯ËùÓÐSCSI´ÅÅ̲¢¼Ç¼Æä´ÅÅ̲¼¾Ö¡£Í¬Ê±»¹½«Ìí¼ÓÒ»¸ö±íʾËùÓÐÁ¬½ÓÔÚÒ»ÆðµÄSCSI´ÅÅ̵Ägendisk ½á¹¹£¬Èçͼ8.3¡£

·¢ËÍ¿éÉ豸ÇëÇó

Ò»µ©SCSI×Óϵͳ³õʼ»¯Íê³ÉÕâЩSCSIÉ豸¾Í¿ÉÒÔʹÓÃÁË¡£Ã¿¸ö»î¶¯µÄSCSIÉ豸ÀàÐͽ«Æä×ÔÉíµÇ¼Çµ½ºËÐÄÒÔ±ã LinuxÕýÈ·¶¨Ïò¿éÉ豸ÇëÇó¡£ÕâЩÇëÇó¿ÉÒÔÊÇͨ¹ýblk_devµÄbuffer cacheÇëÇóÒ²¿ÉÒÔÊÇͨ¹ýblkdevsµÄÎļþ ²Ù×÷¡£ÒÔÒ»¸ö°üº¬¶à¸öEXT2Îļþϵͳ·ÖÇøµÄSCSI´ÅÅÌÇý¶¯Æ÷ΪÀý£¬µ±°²×°ÆäÖÐÒ»¸öEXT2·ÖÇøÊ±ÏµÍ³ÊÇÔõÑù½« ºËÐÄ»º³åÇëÇó¶¨Ïòµ½ÕýÈ·µÄSCSI´ÅÅ̵ÄÄØ£¿

ÿ¸ö¶ÔSCSI´ÅÅÌ·ÖÇøµÄ¿é¶ÁдÇëÇ󽫵¼ÖÂÒ»¸öеÄrequest½á¹¹±»Ìí¼Óµ½¶ÔÓ¦´ËSCSI´ÅÅ̵Äblk_devÊý×éÖÐµÄ current_requestÁ´±íÖС£Èç¹û´ËrequestÕýÔÚ±»´¦ÀíÔòbuffer cacheÎÞÐè×÷Èκι¤×÷£»·ñÔòËü±ØÐë֪ͨSCSI ´ÅÅÌ×Óϵͳȥ´¦ÀíËüµÄÇëÇó¶ÓÁС£ÏµÍ³ÖÐÿ¸öSCSI´ÅÅÌÓÃÒ»¸öScsi_Disk½á¹¹À´±íʾ¡£ÀýÈç/dev/sdb1µÄÖ÷É豸 ºÅΪ8¶ø´ÓÉ豸ºÅΪ17£»ÕâÑù²úÉúÒ»¸öË÷ÒýÖµ1¡£Ã¿¸öScsi_Disk½á¹¹°üº¬Ò»¸öÖ¸Ïò±íʾ´ËÉ豸µÄScsi_Device ½á¹¹¡£ÕâÑù·´¹ýÀ´ÓÖÖ¸ÏòÓµÓÐËüµÄScsi_Host½á¹û¡£Õâ¸öÀ´×Ôbuffer cacheµÄrequest½á¹¹½«±»×ª»»³ÉÒ»¸öÃè ÐðSCSIÃüÁîµÄScsi_Cmd½á¹¹£¬Õâ¸öSCSIÃüÁ·¢Ë͵½´ËSCSIÉ豸ͬʱ±»ÅÅÈë±íʾ´ËÉ豸µÄScsi_Host½á¹¹¡£Ò» µ©ÓÐÊʵ±µÄÊý¾Ý¿éÐèÒª¶Áд£¬ÕâЩÇëÇ󽫱»¶ÀÁ¢µÄSCSIÉ豸Çý¶¯À´´¦Àí¡£

8.6  ÍøÂçÉ豸

ÍøÂçÉ豸£¬¼´LinuxµÄÍøÂç×Óϵͳ£¬ÊÇÒ»¸ö·¢ËÍÓë½ÓÊÕÊý¾Ý°üµÄʵÌå¡£ËüÒ»°ãÊÇÒ»¸öÏóÒÔÌ«Íø¿¨µÄÎïÀíÉ豸¡£ ÓÐÐ©ÍøÂçÉ豸ÈçloopbackÉ豸½ö½öÊÇÒ»¸öÓÃÀ´Ïò×ÔÉí·¢ËÍÊý¾ÝµÄÈí¼þ¡£Ã¿¸öÍøÂçÉ豸¶¼ÓÃÒ»¸ödevice½á¹¹À´ ±íʾ¡£ÍøÂçÉ豸Çý¶¯ÔÚºËÐÄÆô¶¯³õʼ»¯ÍøÂçʱ½«ÕâЩÊÜ¿ØÉ豸µÇ¼Çµ½LinuxÖС£deviceÊý¾Ý½á¹¹Öаüº¬ÓÐÓÐ¹Ø É豸µÄÐÅÏ¢ÒÔ¼°ÓÃÀ´Ö§³Ö¸÷ÖÖÍøÂçЭÒéµÄº¯ÊýµØÖ·Ö¸Õë¡£ÕâЩº¯ÊýÖ÷ÒªÓÃÀ´Ê¹ÓÃÍøÂçÉ豸´«ÊäÊý¾Ý¡£É豸ʹÓà ±ê×¼ÍøÂçÖ§³Ö»úÖÆÀ´½«½ÓÊÕµ½µÄÊý¾Ý´«µÝµ½Êʵ±µÄЭÒé²ã¡£ËùÓд«ÊäÓë½ÓÊÕµ½µÄÍøÂçÊý¾ÝÓÃÒ»¸ösk_buff½á¹¹ À´±íʾ£¬ÕâЩÁé»îµÄÊý¾Ý½á¹¹Ê¹µÃÍøÂçЭÒéÍ·¿ÉÒÔ¸üÈÝÒ×µÄÌí¼ÓÓëɾ³ý¡£ÍøÂçЭÒé²ãÈçºÎʹÓÃÍøÂçÉ豸ÒÔ¼° ÈçºÎʹÓÃsk_buffÀ´½»»»Êý¾Ý½«ÔÚÍøÂçÒ»ÕÂÖÐÏêϸÃèÐð¡£±¾ÕÂÖ»ÌÖÂÛdeviceÊý¾Ý½á¹¹¼°ÈçºÎ·¢ÏÖÓë³õʼ»¯ÍøÂç¡£

deviceÊý¾Ý½á¹¹°üº¬ÒÔÏÂÓйØÍøÂçÉ豸µÄÐÅÏ¢£º

Name
ÓëʹÓÃmknodÃüÁî´´½¨µÄ¿éÉè±¸ÌØÊâÎļþÓë×Ö·ûÉè±¸ÌØÊâÎļþ²»Í¬£¬ÍøÂçÉè±¸ÌØÊâÎļþ½öÔÚÓÚϵͳ ÍøÂçÉ豸·¢ÏÖÓë³õʼ»¯Ê±½¨Á¢¡£ËüÃÇʹÓñê×¼µÄÃüÃû·½·¨£¬Ã¿¸öÃû×Ö´ú±íÒ»ÖÖÀàÐ͵ÄÉ豸¡£¶à¸ö ÏàͬÀàÐÍÉ豸½«´Ó0¿ªÊ¼¼ÇÊý¡£ÕâÑùÒÔÌ«ÍøÉ豸±»ÃüÃûΪ/dev/eth0£¬/dev/eth1,/dev/eth2 µÈµÈ¡£ һЩ³£¼ûµÄÍøÂçÉ豸ÈçÏ£º

/dev/ethN ÒÔÌ«ÍøÉ豸
/dev/slN SLIPÉ豸
/dev/pppN PPP É豸
/dev/lo Loopback É豸

 
Bus Information
ÕâЩÐÅÏ¢±»É豸Çý¶¯ÓÃÀ´¿ØÖÆÉ豸¡£irqºÅ±íʾÉ豸ʹÓõÄÖжϺš£base addressÖ¸ÈκÎÉ豸ÔÚI/O ÄÚ´æÖеĿØÖÆÓë״̬¼Ä´æÆ÷µØÖ·¡£DMAͨµÀÖ¸´ËÍøÂçÉ豸ʹÓõÄDMAͨµÀºÅ¡£ËùÓÐÕâЩÐÅÏ¢ÔÚÉ豸³õ ʼ»¯Ê±ÉèÖá£
 
 
 
Interface Flags
ËüÃÇÃèÐðÁËÍøÂçÉ豸µÄÊôÐÔÓ빦ÄÜ£º

IFF_UP ½Ó¿ÚÒѾ­½¨Á¢²¢ÔËÐÐ
IFF_BROADCAST É豸ÖеĹ㲥µØÖ·ÓÐЧ
IFF_DEBUG É豸µ÷ÊÔ±»Ê¹ÄÜ
IFF_LOOPBACK ÕâÊÇÒ»¸öloopbackÉ豸
IFF_POINTTOPOINT ÕâÊǵ㵽µãÁ¬½Ó£¨SLIPºÍPPP£©
IFF_NOTRAILERS ÎÞÍøÂç×·×ÙÕß
IFF_RUNNING ×ÊÔ´Òѱ»·ÖÅä
IFF_NOARP ²»Ö§³ÖARPЭÒé
IFF_PROMISC É豸´¦ÓÚ»ìÂҵĽÓÊÕģʽ£¬ÎÞÂÛ°üµØÖ·ÔõÑùËü¶¼½«½ÓÊÕ
 
IFF_ALLMULTI ½ÓÊÕËùÓеÄIP¶à²¥Ö¡
IFF_MULTICAST ¿ÉÒÔ½ÓÊÕIP¶à²¥Ö¡

 
Protocol Information
ÿ¸öÉ豸ÃèÐðËü¿ÉÒÔ±»ÍøÂçЭÒé²ãÈçºÎʹÓãº
mtu
Ö¸²»°üÀ¨ÈκÎÁ´Â·²ãÍ·ÔÚÄڵģ¬ÍøÂç¿É´«Ë͵Ä×î´ó°ü´óС¡£Õâ¸öÖµ±»Ð­Òé²ãÓÃÀ´Ñ¡ÔñÊʵ± ´óСµÄ°ü½øÐз¢ËÍ¡£
Family
Õâ¸öfamilyÓò±íʾÉ豸֧³ÖµÄЭÒé×å¡£ËùÓÐLinuxÍøÂçÉ豸µÄ×åÊÇAF_INET£¬»¥ÁªÍøµØÖ·×å¡£
Type
Õâ¸öÓ²¼þ½Ó¿ÚÀàÐÍÃèÐðÍøÂçÉ豸Á¬½ÓµÄ½éÖÊÀàÐÍ¡£LinuxÍøÂçÉ豸¿ÉÒÔÖ§³Ö¶àÖÖ²»Í¬ÀàÐ굀 ½éÖÊ¡£°üÀ¨ÒÔÌ«Íø¡¢X.25£¬ÁîÅÆ»·£¬Slip£¬PPPºÍApple Localtalk¡£
Addresses
½á¹¹Öаüº¬´óÁ¿ÍøÂçÉ豸Ïà¹ØµÄµØÖ·£¬°üÀ¨IPµØÖ·¡£
Packet Queue
Ö¸ÍøÂçÉ豸Éϵȴý´«ÊäµÄsk_buff°ü¶ÓÁС£
Support Functions
ÿ¸öÉ豸֧³ÖÒ»×é±ê×¼µÄÀý³Ì£¬ËüÃDZ»Ð­Òé²ã×÷ΪÉ豸Á´Â·²ãµÄ½Ó¿Ú¶øµ÷Óá£Èç´«Ê佨Á¢ºÍÖ¡´«Êä Àý³ÌÒÔ¼°Ìí¼Ó±ê×¼Ö¡Í·ÒÔ¼°ÊÕ¼¯Í³¼ÆÊý¾ÝµÄÀý³Ì¡£ÕâЩͳ¼ÆÊý¾Ý¿ÉÒÔʹÓÃifconfigÃüÁîÀ´¹Û²ì¡£

8.6.1  ³õʼ»¯ÍøÂçÉ豸

ÍøÂçÉ豸Çý¶¯¿ÉÒÔÏóÆäËüLinuxÉ豸Çý¶¯Ò»Ñù½¨Á¢µ½LinuxºËÐÄÖÐÀ´¡£Ã¿¸öDZÔÚµÄÍøÂçÉ豸ÓÉÒ»¸ö±»dev_base Á´±íÖ¸ÕëÖ¸ÏòµÄÍøÂçÉ豸Á´±íÄÚ²¿µÄdevice½á¹¹±íʾ¡£µ±ÍøÂç²ãÐèҪij¸öÌØ¶¨¹¤×÷Ö´ÐÐʱ¡£Ëü½«µ÷ÓôóÁ¿Íø Âç·þÎñÀý³ÌÖеÄÒ»¸ö£¬ÕâЩÀý³ÌµÄµØÖ·±»±£´æÔÚdevice½á¹¹ÄÚ²¿¡£³õʼ»¯Ê±Ã¿¸ödevice½á¹¹½ö°üº¬Ò»¸ö³õʼ »¯»òÕß¼ì²âÀý³ÌµÄµØÖ·¡£

¶ÔÓÚÍøÂçÉ豸Çý¶¯ÓÐÁ½¸öÎÊÌâÐèÒª½â¾ö¡£Ê×ÏÈÊDz»ÊÇÿ¸öÁ¬½Óµ½ºËÐÄÖеÄÍøÂçÉ豸Çý¶¯¶¼ÓÐÉ豸Ҫ¿ØÖÆ¡£Æä ´ÎËäÈ»µ×²ãµÄÉ豸Çý¶¯åÄÈ»²»Í¬£¬µ«ÏµÍ³ÖеÄÒÔÌ«ÍøÉ豸×ÜÊÇÃüÃûΪ/dev/eth0ºÍ/dev/eth1¡£»ìÏýÍøÂçÉ豸 Õâ¸öÎÊÌâºÜÈÝÒ×½â¾ö¡£µ±Ã¿¸öÍøÂçÉ豸µÄ³õʼ»¯Àý³Ì±»µ÷ÓÃʱ£¬½«µÃµ½Ò»¸öָʾÊÇ·ñ´æÔÚµ±Ç°¿ØÖÆÆ÷ʵÀýµÄ ״̬ÐÅÏ¢¡£Èç¹ûÇý¶¯ÕÒ²»µ½ÈκÎÉ豸£¬ËüÄǸöÓÉdev_baseÖ¸ÏòµÄdeviceÁ´±í½«±»É¾³ý¡£Èç¹ûÇý¶¯ÕÒµ½ÁËÉ豸 ÔòËü½«ÓÃÉ豸Ïà¹ØÐÅÏ¢ÒÔ¼°ÍøÂçÉ豸Çý¶¯ÖÐÖ§³Åº¯ÊýµÄµØÖ·Ö¸ÕëÀ´Ìî³ä´ËdeviceÊý¾Ý½á¹¹¡£

µÚ¶þ¸öÎÊÌ⣬¼´ÎªÒÔÌ«ÍøÉ豸¶¯Ì¬·ÖÅä±ê×¼Ãû³Æ/dev/ethNÉè±¸ÌØÊâÎļþµÄ¹¤×÷µÄ½â¾ö·½·¨Ê®·ÖÇÉÃî¡£ÔÚÉ豸 Á´±íÖÐÓÐ8¸ö±ê×¼Èë¿Ú£»´Óeth0µ½eth7¡£ËüÃÇʹÓÃÏàͬµÄ³õʼ»¯Àý³Ì£¬´Ë³õʼ»¯¹ý³Ì½«ÒÀ´Î³¢ÊÔÕâЩ±»½¨Á¢µ½ ºËÐÄÖеÄÒÔÌ«ÍøÉ豸Çý¶¯Ö±µ½ÕÒµ½Ò»¸öÉ豸¡£µ±Çý¶¯ÕÒµ½ÆäÒÔÌ«ÍøÉ豸ʱËü½«Ìî³ä¶ÔÓ¦µÄethNÉ豸½á¹¹¡£Í¬Ê± ´ËÍøÂçÉ豸Çý¶¯³õʼ»¯Æä¿ØÖƵÄÎïÀíÓ²¼þ²¢ÕÒ³öʹÓõÄIRQºÅÒÔ¼°DMAͨµÀµÈÐÅÏ¢¡£Èç¹ûÇý¶¯ÕÒµ½ÁË´ËÍøÂçÉ豸 µÄ¶à¸öʵÀýËü½«½¨Á¢¶à¸ö/dev/ethN deviceÊý¾Ý½á¹¹¡£Ò»µ©ËùÓÐ8¸ö±ê×¼/dev/ethN±»·ÖÅäÍê±ÏÔò²»»áÔÚ¼ì²â ÆäËüµÄÒÔÌ«ÍøÉ豸¡£


File translated from TEX by TTH, version 1.0.
Top of Chapter, Table of Contents, Show Frames, No Frames
© 1996-1999 David A Rusling copyright notice.