LINUX SOCKET AIO ÎÊÌâ
дÁË´úÂ룬ʹÓÃace_proactor, ÔÀ´windowsÅܵ÷dz£Æ¯ÁÁ£¬À´µ½linux¾Íʱ²»Ê±²»¹¤×÷£¬È»ºó¼Óasynce_connectorºó£¬·¢ÏÖÍê³É²»Äܹ¤×÷£¬async_stream_writeºó£¬·¢ÏÖ¿¨ÔÚÄÇÀ¸ù±¾·¢²»³öÈ¥£¬¶à´Î·ÖÎöºó£¬·¢ÏÖ£¬ÔÀ´Ö®Ç°ÓÐaio_readûÓÐÍê³É£¬aio_writeµÄÇëÇó¾ÍblockÄÇÀïÁË£¬writeÕâ¸ö²Ù×÷¾¹È»Ò»¶¨ÒªµÈÇ°µÄaio_readÍê³ÉÖ®ºó£¬²Å¿ÉÒÔÖ´ÐС£ Ö¤¾ÝÈçÏÂ:
1.¿¨×¡µÄaio_write »á³ÉÉÏÍê³É£¬Èç¹ûsocket±»¶Ô·½¹Ø±Õ¡£
2.ÔÚaio_read֮ǰÉèÖÃsocketµÄģʽΪnonblocking, һʱwrite²Ù×÷³öÏÖ£¬aio_read ÂíÉÏÍê³É£¬²¢·µ»Ø´íÎóÂë EAGAIN£¬È»ºóaio_writeµÄÇëÇóÒ²¸øÍê³ÉÁË¡£
3.socketµÄģʽÔÚaceºÍIBMÓйصÄaioÎĵµÖиøÇ¿µ÷£¬must be ing blocking mode.
Ìì°¡£¡
³¢ÊÔÁËÔÚaio_write֮ǰÈç¹ûÓжÁ²Ù×÷£¬Ê¹ÓÃaio_cancel½øÐÐcancel²Ù×÷£¬²»ÐУ¬ÓÚÊÇÉèÖÃÁËnonblockingģʽȻºó¶øcancel£¬»¹ÊÇûÓÐÈκη´Ó¦¡£
¿´À´LINUXµÄAIOʵÏÖÕæÊǹ»Àõģ¬¶ÔÓÚSOCKET²Ù×÷µÄʵÏÖÍêȫʧ°Ü£¡
¼ÙÉèÒÔÏÂÇéÐΣº
1.server ¹ã²¥Êý¾Ý¸ø¿Í»§¶Ë£¨µ÷ÓÃaio_write)£¬²¢ÇÒ·¢ËÍÁËÒ»ÌõÆÚÍûµÃµ½¿Í»§¶ËÏìÓ¦µÄÖ¸Áî(aio_read)£¬½á¹û¿Í»§¶Ë³¤ÆÚûÓÐÏìÓ¦£¬ÕâʱÎÒÏëÔÙ·¢Ò»Ìõ֪ͨÊý¾Ý¸ø¿Í»§¶Ë(µ÷ÓÃaio_write)£¬Õâ¸ö·¢Ë͵ÄÇëÇó¾Í¸øÄÚºËÀïblockסÔÚÄÇÀһֱ·¢²»³öÈ¥£¬ÒòΪËüÒªµÈÇ°ÃæÒ»¸öaio_readÍê³É, Ö±µ½¿Í»§¶ËÏìÓ¦ÁË»òÕßÊǶÏÏßÁË£¬ÕâµÚ¶þ¸öaio_write²Å»áÍê³É¡£
ÓôÃÆ°É¡£²¢ÇÒÄãÎÞ·¨È¡ÏûÕâÖÖ״̬£¬Õâ¸ösocket ¾ÍÍ£ÔÚÄÇÀïÁË¡£¡£¡£¡£
¶ÔÓÚserver¶ËÕâ¸ö»¹ºÃ¡£
Èç¹ûÄãµÄserver¶ËÓÖÐèÒªºÍÆäËüserver×÷ÁªÏµµÄʱºò£¬Äã¾ÍÂé·³ÁË£¬ÍêÈ«²»¿ÉÔ¤²â¡£
Ïà¹ØÎĵµ£º
1.2ÏÖ´úµÄAPIC
APICËäºÅ³ÆÏÖ´ú£¬µ«Ò²³öÏÖ10¼¸ÄêÁË£¬PC»úÊг¡×ÜÊǺÜÍí²ÅÄܽӴ¥µ½Ðµļ¼Êõ£¬Ç°Ãæ˵ÁË£¬ÎÒµÄT42ÓõĻ¹ÊÇPICÄØ¡£APICÏà½ÏÓÚPICÀ´Ëµ£¬×î´óµÄÓŵãÊÇÄÜÊÊÓÃÓÚMPƽ̨£¬µ±È»£¬¹Ü½Å¶àÊÇËüÁíÒ»¸öÓŵ㡣APICÓÉÁ½²¿·Ö×é³É£¬Ò»¸ö³ÆΪLAPIC£¨Local APIC£¬±¾µØ¸ß¼¶ÖжϿØÖÆÆ÷£©£¬Ò»¸ö³ÆΪIOAPIC£¨I/O APCI£¬I/O¸ß¼¶ÖжϿØÖÆ ......
ǶÈëʽLinuxÆô¶¯·ÖΪÁ½¸ö²¿·Ö£¬ÏµÍ³Òýµ¼ÓëLinuxÆô¶¯¡£ÏµÍ³Òýµ¼½«Íê³ÉLinux×°ÈëÄÚ´æÇ°£¬³õʼ»¯CPUºÍÏà¹ØI/OÉ豸£¬²¢½«Linuxµ÷ÈëÄÚ´æµÄ¹¤×÷¡£ÏµÍ³Òýµ¼Ö÷ÒªÓÉBootLoaderʵÏÖ¡£ÔÚBootLoader½«LinuxÄں˵÷ÈëÄÚ´æÖ®ºó£¬½«È¨Á¦½»¸øLinuxKernel£¬½øÈëLinuxµÄÆô¶¯²¿·Ö¡£ÒÔÏÂÏêϸ·ÖÎöÆô¶¯µÄ¹ý³ÌÓëʹÓõÄÎļþ¡£
Ò»¡¢ÏµÍ³Òýµ¼ÓëBootLoa ......
½ñÌ쿽±´ÁËÐéÄâ»úÔÚÁíÍâһ̨µçÄÔÉÏʹÓ㬷¢ÏÖMACµØÖ·³åÍ»£¬ÓÚÊÇÈ¥ÍøÉÏÕÒÐ޸ķ½·¨¡£¿É°´ÕÕËù˵µÄ£¬ÎÒ²¢Ã»ÓкÜ˳ÀûÐ޸ijɹ¦¡£
ÏÂÃæÎÒ½«¹ý³Ìд³öÀ´£¬ÀïÃæÓÐЩµØ·½ÐèҪעÒâһϡ£
ÏÂÃæÊÇÎÒ´ÓÍøÉÏËÑË÷µ½´ó²¿·ÖµÄ×ö·¨ÈçÏ£¬ºìÉ«²¿·ÖÊÇÎÒ×¢Ê͵ģ¬ÐèҪעÒâµÄµØ·½£º
VMwareÐéÄâ»úÖÐÐÞ¸ÄLinux MACµØÖ·µÄ·½·¨£º
1¡¢ÐÞ¸ÄÐéÄâ»úµÄ*.v ......
Linux
ÏÂÉèÖö˿ÚȨÏÞµÄϵͳµ÷ÓÃÓÐÁ½¸ö£º
ioperm
ºÍ
iopl
¡£
Ò»¡¢
ioperm
ºÍ
iopl
½éÉÜ¡£
1.ioperm
¹¦ÄÜÃèÊö£º
Ϊµ÷Óýø³ÌÉèÖÃ
I/O
¶Ë¿Ú·ÃÎÊȨÄÜ¡£
ioperm
µÄʹÓÃÐèÒª¾ßÓг¬¼¶Óû§µÄȨÏÞ£¬Ö»ÓеͶ˵Ä
[0-0x3ff] I/O
¶Ë¿Ú¿É±»ÉèÖã¬ÒªÏëÖ¸¶¨¸ü¶à¶Ë¿ÚµÄȨÄÜ£¬¿ÉʹÓÃ
iopl
º¯Êý¡£ÕâÒ»µ÷ÓÃÖ»¿ÉÓÃÓ ......
package: download from:
Èí¼þ¼¯³É¿ª·¢»·¾³£¨´úÂë±à¼¡¢ä¯ÀÀ¡¢±àÒë¡¢µ÷ÊÔ£©
Emacs http://www.gnu.org/software/emacs/
Source-Navigator 5.2b2 http://sourceforge.net/projects/sourcenav
Anjuta http://anjuta.sourceforge.net(¿ÉÓÃyum°²×°)
´úÂëË÷Òý¹¤¾ß
Cscope http://cscope.sourceforge.net/
KScope http:/ ......