SelectÔÚSocket±à³ÌÖл¹ÊDZȽÏÖØÒªµÄ£¬¿ÉÊǶÔÓÚ³õѧSocketµÄÈËÀ´Ëµ¶¼²»Ì«°®ÓÃSelectд³ÌÐò£¬ËûÃÇÖ»ÊÇϰ¹ßдÖîÈç connect¡¢accept¡¢recv»òrecvfromÕâÑùµÄ×èÈû³ÌÐò£¨Ëùν×èÈû·½Ê½block£¬¹ËÃû˼Ò壬¾ÍÊǽø³Ì»òÊÇÏß³ÌÖ´Ðе½ÕâЩº¯Êýʱ±ØÐëµÈ
´ýij¸öʼþµÄ·¢Éú£¬Èç¹ûʼþûÓз¢Éú£¬½ø³Ì»òÏ߳̾ͱ»×èÈû£¬º¯Êý²»ÄÜÁ¢¼´·µ»Ø£©¡£
¿ÉÊÇʹÓÃSelect¾Í¿ÉÒÔÍê³É·Ç×èÈû£¨Ëùν·Ç×èÈû·½Ê½non- block£¬¾ÍÊǽø³Ì»òÏß³ÌÖ´Ðд˺¯Êýʱ²»±Ø·ÇÒªµÈ´ýʼþµÄ·¢Éú£¬Ò»µ©Ö´Ðп϶¨·µ»Ø£¬ÒÔ·µ»ØÖµµÄ²»Í¬À´·´Ó³º¯ÊýµÄÖ´ÐÐÇé¿ö£¬Èç¹ûʼþ·¢ÉúÔòÓë×èÈû·½Ê½Ïàͬ£¬ÈôʼþûÓз¢ÉúÔò·µ»ØÒ»¸ö´úÂëÀ´¸æÖªÊ¼þδ·¢Éú£¬¶ø½ø³Ì»òÏ̼߳ÌÐøÖ´ÐУ¬ËùÒÔЧÂʽϸߣ©·½Ê½¹¤×÷µÄ³ÌÐò£¬ËüÄܹ»¼àÊÓÎÒÃÇÐèÒª¼àÊÓµÄÎļþÃèÊö·ûµÄ±ä»¯Çé¿ö——¶Áд»òÊÇÒì³£¡£
ÏÂÃæÏêϸ½éÉÜһϣ¡
SelectµÄº¯Êý¸ñʽ(ÎÒËù˵µÄÊÇUnixϵͳϵIJ®¿ËÀûsocket±à³Ì£¬ºÍwindowsϵÄÓÐÇø±ð£¬Ò»»á¶ù˵Ã÷)£º
int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);
ÏÈ˵Ã÷Á½¸ö½á¹¹Ì壺
µÚÒ»£¬struct fd_set¿ÉÒÔÀí½âΪһ¸ö¼¯ºÏ£¬Õâ¸ö¼¯ºÏÖдæ·ÅµÄÊÇÎļþÃèÊö·û(filedescriptor)£¬¼´Îļþ ......
SelectÔÚSocket±à³ÌÖл¹ÊDZȽÏÖØÒªµÄ£¬¿ÉÊǶÔÓÚ³õѧSocketµÄÈËÀ´Ëµ¶¼²»Ì«°®ÓÃSelectд³ÌÐò£¬ËûÃÇÖ»ÊÇϰ¹ßдÖîÈç connect¡¢accept¡¢recv»òrecvfromÕâÑùµÄ×èÈû³ÌÐò£¨Ëùν×èÈû·½Ê½block£¬¹ËÃû˼Ò壬¾ÍÊǽø³Ì»òÊÇÏß³ÌÖ´Ðе½ÕâЩº¯Êýʱ±ØÐëµÈ
´ýij¸öʼþµÄ·¢Éú£¬Èç¹ûʼþûÓз¢Éú£¬½ø³Ì»òÏ߳̾ͱ»×èÈû£¬º¯Êý²»ÄÜÁ¢¼´·µ»Ø£©¡£
¿ÉÊÇʹÓÃSelect¾Í¿ÉÒÔÍê³É·Ç×èÈû£¨Ëùν·Ç×èÈû·½Ê½non- block£¬¾ÍÊǽø³Ì»òÏß³ÌÖ´Ðд˺¯Êýʱ²»±Ø·ÇÒªµÈ´ýʼþµÄ·¢Éú£¬Ò»µ©Ö´Ðп϶¨·µ»Ø£¬ÒÔ·µ»ØÖµµÄ²»Í¬À´·´Ó³º¯ÊýµÄÖ´ÐÐÇé¿ö£¬Èç¹ûʼþ·¢ÉúÔòÓë×èÈû·½Ê½Ïàͬ£¬ÈôʼþûÓз¢ÉúÔò·µ»ØÒ»¸ö´úÂëÀ´¸æÖªÊ¼þδ·¢Éú£¬¶ø½ø³Ì»òÏ̼߳ÌÐøÖ´ÐУ¬ËùÒÔЧÂʽϸߣ©·½Ê½¹¤×÷µÄ³ÌÐò£¬ËüÄܹ»¼àÊÓÎÒÃÇÐèÒª¼àÊÓµÄÎļþÃèÊö·ûµÄ±ä»¯Çé¿ö——¶Áд»òÊÇÒì³£¡£
ÏÂÃæÏêϸ½éÉÜһϣ¡
SelectµÄº¯Êý¸ñʽ(ÎÒËù˵µÄÊÇUnixϵͳϵIJ®¿ËÀûsocket±à³Ì£¬ºÍwindowsϵÄÓÐÇø±ð£¬Ò»»á¶ù˵Ã÷)£º
int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);
ÏÈ˵Ã÷Á½¸ö½á¹¹Ì壺
µÚÒ»£¬struct fd_set¿ÉÒÔÀí½âΪһ¸ö¼¯ºÏ£¬Õâ¸ö¼¯ºÏÖдæ·ÅµÄÊÇÎļþÃèÊö·û(filedescriptor)£¬¼´Îļþ ......
ÔÚÅäÖÃÐéÄâ»·¾³µÄʱºò Á¬½Ó·½Ê½Ñ¡ÔñÇŽӷ½Ê½£¬ÔÚlinuxÆäËû°æ±¾µÄϵͳÖнøÈ¥¾Í¿ÉÒÔÖ±½ÓÉÏÍøµÄ£¬µ«ÊÇÔÚredhat9µÄä¯ÀÀÆ÷ϽøÈëÍøÕ¾ÀÏÊÇÌáʾÕÒ²»µ½¡£´ËʱÈç¹ûÄãÊÔÒ»ÏÂifup eth0Äã»á·¢ÏÖÌáʾÈçÏ£º
determining ip information for eth0... failed no link present. check cable
Íø¿¨¼¤»îʧ°Ü¡£
´ËʱÄã¿ÉÒÔ³¢ÊÔÐÞ¸ÄÒ»ÏÂ/etc/sysconfig/network-scripts/ifcfg-eth0Õâ¸öÎļþ£¬ÔÚºóÃæ¼ÓÉÏÕâ¶Î´úÂ룺
check_link_down ()
{
return 1;
}
Èç¹ûÄãÔÚ/etc/sysconfig/networking/devices Ò²´æÔÚifcfg-eth0Õâ¸öÎļþ£¬ÄãÒ²¼ÓÉÏÉÏÃæµÄÄǶδúÂ룬ȻºóÔÙ´ÎÆô¶¯Íø¿¨£¬ÊäÈëifup eth0
Ìáʾ£ºdetermining ip information for eth0...done
´ËʱÄãÔÚÓÃä¯ÀÀÆ÷ÊäÈë¸öÍøÖ· ¾Í»á³öÏÖÄã¾ÃÎ¥µÄ»ÃæÁË ºÇºÇ¡£¡£
......
½øÈë/boot/grub
ÐÞ¸Ägrub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat AS4 (2.6.9-67.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.ELsmp ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-67.ELsmp.img
title Red Hat AS4-up (2.6.9-67.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.EL ro root=LABEL=/ rhgb qui ......
£¨1£©²é¿´Ê±ÖÓÖжϣº
$ cat /proc/interrupts
CPU0
0: 1380471 IO-APIC-edge timer
1: 3626 IO-APIC-edge i8042
7: 0 IO-APIC-edge parport0
8: 3 IO-APIC-edge rtc
9: 1 IO-APIC-level acpi
14: 39229 IO-APIC-edge libata
15: 39999 IO-APIC-edge libata
169: 244640 IO-APIC-level& ......
1.×Ö·ûÉ豸Óë¿éÉ豸IO²Ù×öµÄÇø±ð
1)¿éÉ豸ֻÄÜÒÔ¿éΪµ¥Î»½ÓÊÕÊäÈë·µ»ØÊä³ö,¶ø×Ö·ûÉ豸ÔòÒÔbyteΪµ¥Î».´ó¶àÊýÉ豸ÊÇ×Ö·ûÉ豸,ËûÃDz»ÐèÒª»º³å²¢ÇÒ²»ÒԹ̶¨¿é´óС½øÐвÙ×÷.
2)¿éÉ豸¶ÔÓÚIOÇëÇóÓжÔÓ¦µÄ»º³åÇø,ËùÒÔËûÃÇ¿ÉÒÔÑ¡ÔñÒÔʲô˳Ðò½øÐÐÏìÓ¦.×Ö·ûÉ豸ÎÞÐ뻺³åÇÒ±»Ö±½Ó¶Áд.
3)×Ö·ûÉ豸ֻÄܱ»Ë³Ðò¶Áд,¿éÉ豸¿ÉÒÔËæ»ú·ÃÎÊ.
2.block_device_operations½á¹¹Ìå
block_device_operationsÃèÊöÁ˶ԿéÉ豸µÄ²Ù×÷µÄ¼¯ºÏ
struct block_device_operations {
int (*open) (struct inode *, struct file *);/*´ò¿ª*/
int (*release) (struct inode *, struct file *);/*ÊÍ·Å*/
int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
long (*unlo ......
ÍøÂçÉϺÍÊéÉÏÓи÷ÖÖÅäÖÃJDK»·¾³±äÁ¿µÄ·½·¨£¬µ«ÊÇÈ·ÃèÊö²»Ò»Ö£¬¸ø³õѧÕßÔì³ÉÁËÒ»¶¨µÄÀ§ÄÑ£¨ÏëÆðµ±Ê±µÄÎÒ£©¡£ÒÔÏÂÊÇÎÒ×Ô¼º×ܽáµÄ£¬°Ù·Ö°Ù¿ÉÒÔÓá£
´ËÎÄÏêÊöÁËÈçºÎÔÚwindowsºÍlinuxÏÂÅäÖû·¾³±äÁ¿¡£
Ò»¹²ÐèÒªÅäÖÃ3¸ö±äÁ¿£º
JAVA_HOME£ºÖ÷ÒªÊÇΪÁËÆäËüÁ½¸öʹÓ㬼ò»¯ÅäÖã¬jdk°²×°µÄÍêÕûµÄ·¾¶Ãû£¬Ò»Ö±µ½jdk...Ϊֹ¡£
CLASSPATH£ºjava³ÌÐòÔËÐÐʱҪÓõ½µÄjar°ü£¨Ò²¾ÍÊÇÆäËü³ÌÐòÀïµÄº¯Êý¿âµÄ¸ÅÄ
PATH:ϵͳÉϳÌÐòµÄ·¾¶µÄ¼¯ºÏ£¬ÔÚÃüÁîÐÐÏÂÕÒ¸÷ÖÖ³ÌÐò£¬²»ÓôòÍêÕûµÄ·¾¶Ãû¡£ÎÒÃǰÑjdkµÄ¿ª·¢ºÍÔËÐеÄÃüÁÈçjava,javacµÈ£©µÄ·¾¶£¨ÔÚJAVA_HOMEÏÂÃæµÄbinĿ¼Ï£©·ÅÈëµ½PATHÖУ¬ÕâÑùÎÒÃǾͿÉÒÔÖ±½ÓʹÓÃÃüÁîÁË¡£
windows:
×ÀÃæ-->ÎҵĵçÄÔ(ÓÒ¼ü)-->ÊôÐÔ-->¸ß¼¶-->»·¾³±äÁ¿£º
ÔÚϵͳ±äÁ¿ÏÂн¨
JAVA_HOME=D:\Program Files\Java\jdk1.6.0_10 (ÄãµÄjdk°²×°µÄĿ¼)
CLASSPATH=%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;. £¨Â·¾¶·Ö¸ôΪ·ÖºÅ£©
È»ºóÕÒµ½path±äÁ¿£¬Ñ¡Ôñ±à¼£¬ÔÚpath±äÁ¿µÄ×îÇ°Ãæ¼ÓÉÏ%JAVA_HOME%\bin; (×îºóÓÐÒ»¸ö·ÖºÅ)
´ËʱΠ......