Linux»·¾³½ø³Ì¼äͨÐÅ£¨Î壩: ¹²ÏíÄڴ棨ÉÏ£©
¹²ÏíÄÚ´æ¿ÉÒÔ˵ÊÇ×îÓÐÓõĽø³Ì¼äͨÐÅ·½Ê½£¬Ò²ÊÇ×î¿ìµÄIPCÐÎʽ¡£Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½½ø³ÌA¡¢B¸÷×ԵĽø³ÌµØÖ·¿Õ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ½½ø³ÌB¶Ô¹²ÏíÄÚ´æÖÐÊý¾ÝµÄ¸üУ¬·´Ö®ÒàÈ»¡£ÓÉÓÚ¶à¸ö½ø³Ì¹²Ïíͬһ¿éÄÚ´æÇøÓò£¬±ØÈ»ÐèҪijÖÖͬ²½»úÖÆ£¬»¥³âËøºÍÐźÅÁ¿¶¼¿ÉÒÔ¡£
²ÉÓù²ÏíÄÚ´æÍ¨ÐŵÄÒ»¸öÏÔ¶øÒ×¼ûµÄºÃ´¦ÊÇЧÂʸߣ¬ÒòΪ½ø³Ì¿ÉÒÔÖ±½Ó¶ÁдÄڴ棬¶ø²»ÐèÒªÈκÎÊý¾ÝµÄ¿½±´¡£¶ÔÓÚÏñ¹ÜµÀºÍÏûÏ¢¶ÓÁеÈͨÐÅ·½Ê½£¬ÔòÐèÒªÔÚÄں˺ÍÓû§¿Õ¼ä½øÐÐËĴεÄÊý¾Ý¿½±´£¬¶ø¹²ÏíÄÚ´æÔòÖ»¿½±´Á½´ÎÊý¾Ý[1]£ºÒ»´Î´ÓÊäÈëÎļþµ½¹²ÏíÄÚ´æÇø£¬ÁíÒ»´Î´Ó¹²ÏíÄÚ´æÇøµ½Êä³öÎļþ¡£Êµ¼ÊÉÏ£¬½ø³ÌÖ®¼äÔÚ¹²ÏíÄÚ´æÊ±£¬²¢²»×ÜÊǶÁдÉÙÁ¿Êý¾Ýºó¾Í½â³ýÓ³É䣬ÓÐеÄͨÐÅʱ£¬ÔÙÖØÐ½¨Á¢¹²ÏíÄÚ´æÇøÓò¡£¶øÊDZ£³Ö¹²ÏíÇøÓò£¬Ö±µ½Í¨ÐÅÍê±ÏΪֹ£¬ÕâÑù£¬Êý¾ÝÄÚÈÝÒ»Ö±±£´æÔÚ¹²ÏíÄÚ´æÖУ¬²¢Ã»ÓÐд»ØÎļþ¡£¹²ÏíÄÚ´æÖеÄÄÚÈÝÍùÍùÊÇÔÚ½â³ýÓ³Éäʱ²Åд»ØÎļþµÄ¡£Òò´Ë£¬²ÉÓù²ÏíÄÚ´æµÄͨÐÅ·½Ê½Ð§ÂÊÊǷdz£¸ßµÄ¡£
LinuxµÄ2.2.xÄÚºËÖ§³Ö¶àÖÖ¹²ÏíÄڴ淽ʽ£¬Èçmmap()ϵͳµ÷Óã¬Posix¹²ÏíÄڴ棬ÒÔ¼°ÏµÍ³V¹²ÏíÄÚ´æ¡£linux·¢Ðа汾ÈçRedhat 8.0Ö§³Ömmap()ϵͳµ÷Óü°ÏµÍ³V¹²ÏíÄڴ棬µ«»¹Ã»ÊµÏÖPosix¹²ÏíÄڴ棬±¾ÎĽ«Ö÷Òª½éÉÜmmap()ϵͳµ÷Óü°ÏµÍ³V¹²ÏíÄÚ´æAPIµÄÔÀí¼°Ó¦Óá£
Ò»¡¢ÄÚºËÔõÑù±£Ö¤¸÷¸ö½ø³ÌѰַµ½Í¬Ò»¸ö¹²ÏíÄÚ´æÇøÓòµÄÄÚ´æÒ³Ãæ
1¡¢page cache¼°swap cacheÖÐÒ³ÃæµÄÇø·Ö£ºÒ»¸ö±»·ÃÎÊÎļþµÄÎïÀíÒ³Ãæ¶¼×¤ÁôÔÚpage cache»òswap cacheÖУ¬Ò»¸öÒ³ÃæµÄËùÓÐÐÅÏ¢ÓÉstruct pageÀ´ÃèÊö¡£struct pageÖÐÓÐÒ»¸öÓòΪָÕëmapping £¬ËüÖ¸ÏòÒ»¸östruct address_spaceÀàÐͽṹ¡£page cache»òswap cacheÖеÄËùÓÐÒ³Ãæ¾ÍÊǸù¾Ýaddress_space½á¹¹ÒÔ¼°Ò»¸öÆ«ÒÆÁ¿À´Çø·ÖµÄ¡£
2¡¢ÎļþÓëaddress_space½á¹¹µÄ¶ÔÓ¦£ºÒ»¸ö¾ßÌåµÄÎļþÔÚ´ò¿ªºó£¬Äں˻áÔÚÄÚ´æÖÐΪ֮½¨Á¢Ò»¸östruct inode½á¹¹£¬ÆäÖеÄi_mappingÓòÖ¸ÏòÒ»¸öaddress_space½á¹¹¡£ÕâÑù£¬Ò»¸öÎļþ¾Í¶ÔÓ¦Ò»¸öaddress_space½á¹¹£¬Ò»¸öaddress_spaceÓëÒ»¸öÆ«ÒÆÁ¿Äܹ»È·¶¨Ò»¸öpage cache »òswap cacheÖеÄÒ»¸öÒ³Ãæ¡£Òò´Ë£¬µ±ÒªÑ°Ö·Ä³¸öÊý¾Ýʱ£¬ºÜÈÝÒ׸ù¾Ý¸ø¶¨µÄÎļþ¼°Êý¾ÝÔÚÎļþÄ򵀮«ÒÆÁ¿¶øÕÒµ½ÏàÓ¦µÄÒ³Ãæ¡£
3¡¢½ø³Ìµ÷ÓÃmmap()ʱ£¬Ö»ÊÇÔÚ½ø³Ì¿Õ¼äÄÚÐÂÔöÁËÒ»¿éÏàÓ¦´óСµÄ»º³åÇø£¬²¢ÉèÖÃÁËÏàÓ¦µÄ·ÃÎʱêʶ£¬µ«²¢Ã»Óн¨Á¢½ø³Ì¿Õ¼äµ½ÎïÀíÒ³ÃæµÄÓ³Éä¡£Òò´Ë£¬µÚÒ»´Î·ÃÎʸÿռäʱ£¬»áÒý·¢Ò»¸öȱҳÒì³£¡£
4¡¢¶ÔÓÚ¹²ÏíÄÚ´æÓ³ÉäÇé¿ö£¬È±Ò³Òì³£´¦Àí³ÌÐòÊ×ÏÈÔÚswap c
Ïà¹ØÎĵµ£º
1,freadÊÇ´ø»º³åµÄ,read²»´ø»º³å.
2,fopenÊDZê×¼cÀﶨÒåµÄ,openÊÇPOSIXÖж¨ÒåµÄ.
3,fread¿ÉÒÔ¶ÁÒ»¸ö½á¹¹.readÔÚlinux/unixÖжÁ¶þ½øÖÆÓëÆÕͨÎļþûÓÐÇø±ð.
4,fopen²»ÄÜÖ¸¶¨Òª´´½¨ÎļþµÄȨÏÞ.open¿ÉÒÔÖ¸¶¨È¨ÏÞ.
5,fopen·µ»ØÖ¸Õë,open·µ»ØÎļþÃèÊö·û(ÕûÊý).
6,linux/unixÖÐÈκÎÉ豸¶¼ÊÇÎļþ,¶¼¿ÉÒÔÓÃopen,read.
Èç¹ ......
Õâ¸öÎÊÌâ˵ÆðÀ´¿É´ó¿ÉС£¬¿É³¤¿É¶Ì£¬»ù±¾¶¼ÊÇ×Ô¼ºÇÐÉíµÄ¾Ñé×ܽᡣ
¸ßүү˵¹ý"¹ýÔçµÄÓÅ»¯ÊÇÍò¶ñÖ®Ô´"£¬×ö¿ª·¢²»¿ÉÄÜÒ»¿ªÊ¼¾ÍÏë×ÅÓÅ»¯£¬Ó¦¸Ã´ÓÈ«¾Ö¿¼Á¿£¬´Ó¸÷¸ö½Ç¶Èȥ˼¿¼£¬È¨ºâÀû±×£¬×ö³öÒ»¸ö
·ûºÏ´ó¾ÖÀûÒæµÄÉè¼Æ£¬ÏÂÀ´ÔÙ¿¼ÂÇÈçºÎÓÅ»¯¡£
ÓÅ»¯ÊÇÔÚÏÖÓÐÒѳÉÐεÄÉè¼Æ¼Ü¹¹Ï£¬×öµÄÐÔÄÜÌáÉý¡£¼ÙÈçÄãÒ»¿ªÊ¼¾ÍÉè¼ÆÒ»¸öµÍÐÔÄÜµÄ ......
Éè¼ÆÒ»¸ölinuxϵÄdeamon½ø³Ì£¬¹Ø¼üÖ»Óм¸¸ö£º
1.forkÁ½´Î¡£
2.forkµÚÒ»´ÎºÍµÚ¶þ´ÎÖ®¼ä³ÉΪ½ø³Ì×éÍ·¡£
3.¸Ä±ä¹¤×÷Ŀ¼¡£
4.ºöÂÔÐźš£
5.ÉèÖöÁдÑÚÂë¡£
Ò»ÏÂÊÇÒ»¸ö´ÓÍøÂçËѼ¯µ½µÄÀý³Ì£¬·Ç³£ºÃµÄÑÝʾÁËÉÏÊöÒªµã£¬´æ´Ë±¸Íü¡£
#include
#include
#include
#include
void main(int argc, char ** argv)
{
tim ......
µ¼¶Á£º
¡¡¡¡1£®Socket¼ò½é
¡¡¡¡SocketÊÇTCP/IPÍøÂçµÄAPI£¬¿ÉÒÔÓÃËüÀ´¿ª·¢ÍøÂçÓ¦ÓóÌÐò£¬SocketÊý¾Ý´«ÊäÊÇÒ»ÖÖÌØÊâµÄI/O£¬SocketÒ²ÊÇÒ»ÖÖÎļþÃèÊö·û
¡¡¡¡2£®SocketµÄ½¨Á¢
¡¡¡¡int socket(int domain£¬ int type£¬ int protocol)
¡¡¡¡º¯Êý·µ»Ø£ºÒ»¸öÕûÐ͵ÄSocketÃèÊö·û£¬¿ÉÒÔÔÚºóÃæµ÷ÓÃËü¡£
¡¡¡¡²ÎÊý˵Ã÷£º
¡¡¡ ......
ÕâÀïÖ¸Äں˵İ汾ºÅµÄÃüÁî»úÖÆ
LinuxÄں˰汾ÓÐÁ½ÖÖ£ºÎȶ¨°æºÍ¿ª·¢°æ£¬Îȶ¨µÄÄں˾ßÓй¤Òµ¼¶µÄÇ¿¶È£¬¿ÉÒԹ㷺µØÓ¦ÓúͲ¿Êð£¬ÐµÄÎȶ¨ÄÚºËÏà¶ÔÓڽϾɵÄÖ»ÊÇÐÞÕýһЩbug»ò¼ÓÈëһЩеÄÇý¶¯³ÌÐò£¬¶ø¿ª·¢°æÄÚºËÓÉÓÚÒªÊÔÑé¸÷ÖÖ½â¾ö·½°¸£¬ËùÒԱ仯ºÜ¿ì¡£
LinuxÄں˵ÄÃüÁî»úÖÆ£º
num.num.num
ÆäÖеÚÒ»¸öÊý×ÖÊÇÖ÷°æ±¾ºÅ£¬µÚ¶þ ......