linux ÐÂÔöϵͳµ÷ÓÃ
´ËÎÄÓÚ2010-02-26±»ÍƼöµ½CSDNÊ×Ò³
ÈçºÎ±»ÍƼö£¿
×î½üÔÚÑо¿ Linux
Äں˵Äʱ¼ä×Óϵͳ£¬ÎªÏÂһƪ³¤ÎÄ¡¶·þÎñÆ÷³ÌÐòÖеÄÈÕÆÚÓëʱ¼ä¡·×ö×¼±¸£¬ÎÞÒâÖÐ×¢Òâµ½ÁË Linux
ÐÂÔöµÄ¼¸¸öϵͳµ÷ÓõĶԱàд·þÎñÆ÷´úÂëµÄÓ°Ï죬ÏÈ´óּǼÔÚÕâÀï¡£ÕâÆª²©¿ÍÒ²¿ÉËã×÷ǰһƪ¡¶¶àÏß
³Ì·þÎñÆ÷µÄ³£Óñà³ÌÄ£ÐÍ¡·
µÄÒ»¸ö×¢½Å¡£
< type="text/javascript">
1. ·þÎñÆ÷³ÌÐòµÄ·ç¸ñ¿ÉÄÜÔÚ±ä
еĴ´½¨ÎļþÃèÊö·ûµÄ
syscall Ò»°ã¶¼Ö§³Ö¶îÍâµÄ flags ²ÎÊý£¬¿ÉÒÔÖ±½ÓÖ¸¶¨ O_NONBLOCK ºÍ FD_CLOEXEC£¬ÀýÈ磺
accept4 – 2.6.28
eventfd2 – 2.6.27
inotify_init1
– 2.6.27
pipe2 – 2.6.27
signalfd4 – 2.6.27
timerfd_create 2.6.25
ÒÔÉÏ 6 ¸ö
syscalls£¬³ýÁË×îºóÒ»¸öÊÇй¦ÄÜ£¬ÆäÓàµÄ¶¼ÊÇÔöÇ¿ÔÓеĵ÷Ó㬰ÑÊý×ÖβºÅÈ¥µô¾ÍÊÇÔÀ´µÄ syscall¡£
O_NONBLOCK
µÄ¹¦ÄÜÊÇ¿ªÆô“·Ç×èÈûIO”£¬¶øÎļþÃèÊö·ûĬÈÏÊÇ×èÈûµÄ¡£
ÕâЩ´´½¨ÎļþÃèÊö·ûµÄϵͳµ÷ÓÃÄÜÖ±½ÓÉ趨 O_NONBLOCK
Ñ¡Ï»òÐíÄÜ·´Ó³µ±Ç° Linux £¨·þÎñ¶Ë£©¿ª·¢µÄ·çÏò£¬ÄǾÍÊÇÎÒÔÚǰһƪ²©¿Í¡¶¶àÏß
³Ì·þÎñÆ÷µÄ³£Óñà³ÌÄ£ÐÍ¡·
ÀïÍÆ¼öµÄ one loop per thread + (non-blocking IO with IO
multiplexing)¡£´ÓÕâЩÄں˸͝À´¿´£¬non-blocking IO ÒѾÖ÷Á÷µ½ÈÃÄÚºËÔö¼Ó syscall ÒÔ½Úʡһ´Î
fcntl(2) µ÷Óõij̶ÈÁË¡£
ÁíÍ⣬ÒÔÏÂÐÂϵͳµ÷ÓÿÉÒÔÔÚ´´½¨ÎļþÃèÊö·ûʱ¿ªÆô FD_CLOEXEC Ñ¡Ï
dup3 – 2.6.27
epoll_create1 – 2.6.27
FD_CLOEXEC
µÄ¹¦ÄÜÊÇÈóÌÐò fork() ʱ£¬×Ó½ø³Ì»á×Ô¶¯¹Ø±ÕÕâ¸öÎļþÃèÊö·û
£¨¼ûÏÂÃæµÄ¸üÕý
£©¡£
¶øÎļþÃèÊöĬÈÏÊDZ»×Ó½ø³Ì¼Ì³ÐµÄ£¨ÕâÊÇ´«Í³ Unix µÄÒ»ÖÖµäÐÍ IPC£¬±ÈÈçÓà pipe(2) ÔÚ¸¸×Ó½ø³Ì¼äµ¥ÏòͨÐÅ£©¡£
ÒÔÉÏ 8
¸öРsyscalls ¶¼ÔÊÐíÖ±½ÓÖ¸¶¨ FD_CLOEXEC£¬»òÐí˵Ã÷ fork() µÄÖ÷ҪĿµÄÒѾ²»ÔÙÊÇ´´½¨ worker process
²¢Í¨¹ý¹²ÏíµÄÎļþÃèÊö·ûºÍ¸¸½ø³Ì±£³ÖͨÐÅ£¬¶øÊÇÏñ Windows µÄ CreateProcess ÄÇÑù´´½¨“¸É¾»”µÄ½ø³Ì£¬ÆäÓ븸½ø³ÌûÓжàÉٹϸð¡£
ÒÔÉÏÁ½¸ö flags ÔÚÎÒ¿´À´£¬ËµÃ÷ Linux ·þÎñÆ÷¿ª·¢µÄÖ÷Á÷Ä£ÐÍÕýÔÚÓÉ fork() + worker processes
Ä£ÐÍת±äΪÎÒǰÎÄÍÆ¼öµÄ¶àÏß³ÌÄ£ÐÍ¡£fork() µÄʹÓÃÆµ¶È»á´ó´ó½µµÍ£¬½«À´»òÐíÖ»ÓÐרߺÔðÆô¶¯±ðµÄ½ø³ÌµÄ“¿´ÃŹ·³ÌÐò”²Å»áµ÷ÓÃ
fork()£¬¶øÒ»°ãµÄ·þÎñÆ÷³ÌÐò£¨´Ë´¦“·þÎñÆ÷³ÌÐò”µÄ¶¨Òå¼ûÎÒǰһƪÎÄÕ£©²»»áÔÙ fork() ³ö×Ó½
Ïà¹ØÎĵµ£º
ËäȻѧ¹ý
Linux Shell
±à³Ì£¬µ«ÓÉÓÚ±àд
Shell
½Å±¾µÄ»ú»áʵÔÚÊDZȽÏÉÙ
(
ͨ³£ÔÚÏîÄ¿³õÆÚ´î½¨¿ª·¢»·¾³Ê±±àдµÃ±È½Ï
¶àһЩ
)
£¬ËùÒÔÒ»
ЩÓï·¨¾Ã¶ø¾ÃÖ®¾Í»áÍüÁË£¬Ò»¸ö¼òµ¥µÄÓ﷨ȥ·ÊéЧÂÊʵÔÚÊÇÂý£¬ËùÒԾ͸öÈËÕûÀíÁËÒ»¸ö±í¸ñ£¬ÓÉÓÚÎÒÓõıà³ÌÓïÑÔÊÇ
C/C++
£¬ËùÒÔÔÚ±à³ÌµÄʱºòÍùÍùÄÔº£ÀïÃæÊ×
Ïȸ¡ÏÖµÄÊÇÓÃ
C
......
------------------------------------------
±¾ÎÄϵ±¾Õ¾Ô´´,»¶Ó×ªÔØ!
×ªÔØÇë×¢Ã÷³ö´¦:http://ericxiao.cublog.cn/
------------------------------------------
Ò»£ºÇ°ÑÔ
ÔÚ¼üÅÌÇý¶¯´úÂë·ÖÎöµÄ±Ê¼ÇÖУ¬½Ó´¥µ½ÁËinput×Óϵͳ.¼üÅÌÇý¶¯£¬¼üÅÌÇý¶¯½«¼ì²âµ½µÄËùÓа´¼ü¶¼Éϱ¨¸øÁËinput×Óϵ ......
; break;
}
if (type != EV_SYN)
&nbs ......
Ëæ×ÅÓ²¼þ²»¶ÏµÄ·¢Õ¹£¬Î´À´µÄÖÇÄÜÊÖ»ú½«Ô½À´Ô½½Ó½üPCµÄÐÔÄÜ£¬Ò»¸öÇ¿´óµÄÊÖ»ú²Ù×÷ϵͳ½«ÊÇÍÚ¾ò²»¶Ï·ÉÔ¾µÄÊÖ»úÓ²¼þÐÔÄܵĹؼü£¬Ö»ÓÐÇ¿´óµÄ²Ù×÷ϵͳ²ÅÄÜÖ§³Ö¸÷ÖÖ²»¶Ï·¢Õ¹µÄÊÖ»úÓ¦Óã¬ÈçLinuxϵͳ¶ÔjavaµÄÍêÃÀÖ§³ÖÒÔ¼°ÓÅÔ½µÄ¶à½ø³Ìµ÷¶È£¬Ä¦ÍÐÂÞÀºÜÔç¾ÍÍÆ³ö»ùÓÚLinuxϵͳµÄÊÖ»ú£¬Ëæ×ÅGoogleµÄAndroid²Ù×÷ϵͳµÄÍÆ³ö£¬ÁíÒ»¸ö»ùÓÚL ......