±à¼ÍƼö: |
±¾ÎÄÀ´×Ôjianshu
£¬±¾ÎÄÖ÷Òª½éÉÜÁ˽ø³Ì¼äͨÐŵĸÅÄîÒÔ¼°½ø³Ì¼äͨÐŵÄ7ÖÖ·½Ê½µÈ£¬Ï£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£ |
|
Ò»¡¢½ø³Ì¼äͨÐŵĸÅÄî
ÿ¸ö½ø³Ì¸÷×ÔÓв»Í¬µÄÓû§µØÖ·¿Õ¼ä£¬ÈκÎÒ»¸ö½ø³ÌµÄÈ«¾Ö±äÁ¿ÔÚÁíÒ»¸ö½ø³ÌÖж¼¿´²»µ½£¬ËùÒÔ½ø³ÌÖ®¼äÒª½»»»Êý¾Ý±ØÐëͨ¹ýÄںˣ¬ÔÚÄÚºËÖпª±ÙÒ»¿é»º³åÇø£¬½ø³Ì1°ÑÊý¾Ý´ÓÓû§¿Õ¼ä¿½µ½Äں˻º³åÇø£¬½ø³Ì2ÔÙ´ÓÄں˻º³åÇø°ÑÊý¾Ý¶Á×ߣ¬ÄÚºËÌṩµÄÕâÖÖ»úÖÆ³ÆÎª½ø³Ì¼äͨÐÅ£¨IPC£¬InterProcess
Communication£©

½ø³Ì¼äͨÐÅÄ£ÐÍ
¶þ¡¢½ø³Ì¼äͨÐŵÄ7ÖÖ·½Ê½
µÚÒ»Àࣺ´«Í³µÄUnixͨÐÅ»úÖÆ
1. ¹ÜµÀ/ÄäÃû¹ÜµÀ(pipe)
¹ÜµÀÊǰëË«¹¤µÄ£¬Êý¾ÝÖ»ÄÜÏòÒ»¸ö·½ÏòÁ÷¶¯£»ÐèҪ˫·½Í¨ÐÅʱ£¬ÐèÒª½¨Á¢ÆðÁ½¸ö¹ÜµÀ¡£
Ö»ÄÜÓÃÓÚ¸¸×Ó½ø³Ì»òÕßÐֵܽø³ÌÖ®¼ä(¾ßÓÐÇ×Ôµ¹ØÏµµÄ½ø³Ì);
µ¥¶À¹¹³ÉÒ»ÖÖ¶ÀÁ¢µÄÎļþϵͳ£º¹ÜµÀ¶ÔÓڹܵÀÁ½¶ËµÄ½ø³Ì¶øÑÔ£¬¾ÍÊÇÒ»¸öÎļþ£¬µ«Ëü²»ÊÇÆÕͨµÄÎļþ£¬Ëü²»ÊôÓÚijÖÖÎļþϵͳ£¬¶øÊÇ×ÔÁ¢ÃÅ»§£¬µ¥¶À¹¹³ÉÒ»ÖÖÎļþϵͳ£¬²¢ÇÒÖ»´æÔÚÓëÄÚ´æÖС£
Êý¾ÝµÄ¶Á³öºÍдÈ룺һ¸ö½ø³ÌÏò¹ÜµÀÖÐдµÄÄÚÈݱ»¹ÜµÀÁíÒ»¶ËµÄ½ø³Ì¶Á³ö¡£Ð´ÈëµÄÄÚÈÝÿ´Î¶¼Ìí¼ÓÔڹܵÀ»º³åÇøµÄĩ⣬²¢ÇÒÿ´Î¶¼ÊÇ´Ó»º³åÇøµÄÍ·²¿¶Á³öÊý¾Ý¡£

½ø³Ì¼ä¹ÜµÀͨÐÅÄ£ÐÍ
¹ÜµÀµÄʵÖÊ£º
¹ÜµÀµÄʵÖÊÊÇÒ»¸öÄں˻º³åÇø£¬½ø³ÌÒÔÏȽøÏȳöµÄ·½Ê½´Ó»º³åÇø´æÈ¡Êý¾Ý£¬¹ÜµÀÒ»¶ËµÄ½ø³Ì˳ÐòµÄ½«Êý¾ÝдÈ뻺³åÇø£¬ÁíÒ»¶ËµÄ½ø³ÌÔò˳ÐòµÄ¶Á³öÊý¾Ý¡£
¸Ã»º³åÇø¿ÉÒÔ¿´×öÊÇÒ»¸öÑ»·¶ÓÁУ¬¶ÁºÍдµÄλÖö¼ÊÇ×Ô¶¯Ôö³¤µÄ£¬²»ÄÜËæÒâ¸Ä±ä£¬Ò»¸öÊý¾ÝÖ»Äܱ»¶ÁÒ»´Î£¬¶Á³öÀ´ÒÔºóÔÚ»º³åÇø¾Í²»¸´´æÔÚÁË¡£
µ±»º³åÇø¶Á¿Õ»òÕßдÂúʱ£¬ÓÐÒ»¶¨µÄ¹æÔò¿ØÖÆÏàÓ¦µÄ¶Á½ø³Ì»òÕßд½ø³Ì½øÈëµÈ´ý¶ÓÁУ¬µ±¿ÕµÄ»º³åÇøÓÐÐÂÊý¾ÝдÈë»òÕßÂúµÄ»º³åÇøÓÐÊý¾Ý¶Á³öÀ´Ê±£¬¾Í»½Ðѵȴý¶ÓÁÐÖеĽø³Ì¼ÌÐø¶Áд¡£
¹ÜµÀµÄ¾ÖÏÞ£º
¹ÜµÀµÄÖ÷Òª¾ÖÏÞÐÔÕýÌåÏÖÔÚËüµÄÌØµãÉÏ£º
Ö»Ö§³Öµ¥ÏòÊý¾ÝÁ÷£»
Ö»ÄÜÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµµÄ½ø³ÌÖ®¼ä£»
ûÓÐÃû×Ö£»
¹ÜµÀµÄ»º³åÇøÊÇÓÐÏ޵썹ܵÀÖÆ´æÔÚÓÚÄÚ´æÖУ¬ÔڹܵÀ´´½¨Ê±£¬Îª»º³åÇø·ÖÅäÒ»¸öÒ³Ãæ´óС£©£»
¹ÜµÀËù´«Ë͵ÄÊÇÎÞ¸ñʽ×Ö½ÚÁ÷£¬Õâ¾ÍÒªÇó¹ÜµÀµÄ¶Á³ö·½ºÍдÈë·½±ØÐëÊÂÏÈÔ¼¶¨ºÃÊý¾ÝµÄ¸ñʽ£¬±ÈÈç¶àÉÙ×Ö½ÚËã×÷Ò»¸öÏûÏ¢£¨»òÃüÁî¡¢»ò¼Ç¼£©µÈµÈ£»
2. ÓÐÃû¹ÜµÀ(FIFO)
ÄäÃû¹ÜµÀ£¬ÓÉÓÚûÓÐÃû×Ö£¬Ö»ÄÜÓÃÓÚÇ×Ôµ¹ØÏµµÄ½ø³Ì¼äͨÐÅ¡£ÎªÁ˿˷þÕâ¸öȱµã£¬Ìá³öÁËÓÐÃû¹ÜµÀ(FIFO)¡£
ÓÐÃû¹ÜµÀ²»Í¬ÓÚÄäÃû¹ÜµÀÖ®´¦ÔÚÓÚËüÌṩÁËÒ»¸ö·¾¶ÃûÓëÖ®¹ØÁª£¬ÒÔÓÐÃû¹ÜµÀµÄÎļþÐÎʽ´æÔÚÓÚÎļþϵͳÖУ¬ÕâÑù£¬¼´Ê¹ÓëÓÐÃû¹ÜµÀµÄ´´½¨½ø³Ì²»´æÔÚÇ×Ôµ¹ØÏµµÄ½ø³Ì£¬Ö»Òª¿ÉÒÔ·ÃÎʸ÷¾¶£¬¾ÍÄܹ»±Ë´Ëͨ¹ýÓÐÃû¹ÜµÀÏ໥ͨÐÅ£¬Òò´Ë£¬Í¨¹ýÓÐÃû¹ÜµÀ²»Ïà¹ØµÄ½ø³ÌÒ²Äܽ»»»Êý¾Ý¡£ÖµµÄ×¢ÒâµÄÊÇ£¬ÓÐÃû¹ÜµÀÑϸñ×ñÑÏȽøÏȳö(first
in first out),¶ÔÄäÃû¹ÜµÀ¼°ÓÐÃû¹ÜµÀµÄ¶Á×ÜÊÇ´Ó¿ªÊ¼´¦·µ»ØÊý¾Ý£¬¶ÔËüÃǵÄдÔò°ÑÊý¾ÝÌí¼Óµ½Ä©Î²¡£ËüÃDz»Ö§³ÖÖîÈçlseek()µÈÎļþ¶¨Î»²Ù×÷¡£ÓÐÃû¹ÜµÀµÄÃû×Ö´æÔÚÓÚÎļþϵͳÖУ¬ÄÚÈÝ´æ·ÅÔÚÄÚ´æÖС£
ÄäÃû¹ÜµÀºÍÓÐÃû¹ÜµÀ×ܽ᣺
£¨1£©¹ÜµÀÊÇÌØÊâÀàÐ͵ÄÎļþ£¬ÔÚÂú×ãÏÈÈëÏȳöµÄÔÔòÌõ¼þÏ¿ÉÒÔ½øÐжÁд£¬µ«²»ÄܽøÐж¨Î»¶Áд¡£
£¨2£©ÄäÃû¹ÜµÀÊǵ¥ÏòµÄ£¬Ö»ÄÜÔÚÓÐÇ×Ôµ¹ØÏµµÄ½ø³Ì¼äͨÐÅ£»ÓÐÃû¹ÜµÀÒÔ´ÅÅÌÎļþµÄ·½Ê½´æÔÚ£¬¿ÉÒÔʵÏÖ±¾»úÈÎÒâÁ½¸ö½ø³ÌͨÐÅ¡£
£¨3£©ÎÞÃû¹ÜµÀ×èÈûÎÊÌ⣺ÎÞÃû¹ÜµÀÎÞÐèÏÔʾ´ò¿ª£¬´´½¨Ê±Ö±½Ó·µ»ØÎļþÃèÊö·û£¬ÔÚ¶ÁдʱÐèҪȷ¶¨¶Ô·½µÄ´æÔÚ£¬·ñÔò½«Í˳ö¡£Èç¹ûµ±Ç°½ø³ÌÏòÎÞÃû¹ÜµÀµÄÒ»¶ËдÊý¾Ý£¬±ØÐëÈ·¶¨ÁíÒ»¶ËÓÐijһ½ø³Ì¡£Èç¹ûдÈëÎÞÃû¹ÜµÀµÄÊý¾Ý³¬¹ýÆä×î´óÖµ£¬Ð´²Ù×÷½«×èÈû£¬Èç¹û¹ÜµÀÖÐûÓÐÊý¾Ý£¬¶Á²Ù×÷½«×èÈû£¬Èç¹û¹ÜµÀ·¢ÏÖÁíÒ»¶Ë¶Ï¿ª£¬½«×Ô¶¯Í˳ö¡£
£¨4£©ÓÐÃû¹ÜµÀ×èÈûÎÊÌ⣺ÓÐÃû¹ÜµÀÔÚ´ò¿ªÊ±ÐèҪȷʵ¶Ô·½µÄ´æÔÚ£¬·ñÔò½«×èÈû¡£¼´ÒÔ¶Á·½Ê½´ò¿ªÄ³¹ÜµÀ£¬ÔÚ´Ë֮ǰ±ØÐëÒ»¸ö½ø³ÌÒÔд·½Ê½´ò¿ª¹ÜµÀ£¬·ñÔò×èÈû¡£´ËÍ⣬¿ÉÒÔÒÔ¶Áд£¨O_RDWR£©Ä£Ê½´ò¿ªÓÐÃû¹ÜµÀ£¬¼´µ±Ç°½ø³Ì¶Á£¬µ±Ç°½ø³Ìд£¬²»»á×èÈû¡£
3. ÐźÅ(Signal)
ÐźÅÊÇLinuxϵͳÖÐÓÃÓÚ½ø³Ì¼ä»¥ÏàͨÐÅ»òÕß²Ù×÷µÄÒ»ÖÖ»úÖÆ£¬ÐźſÉÒÔÔÚÈκÎʱºò·¢¸øÄ³Ò»½ø³Ì£¬¶øÎÞÐèÖªµÀ¸Ã½ø³ÌµÄ״̬¡£
Èç¹û¸Ã½ø³Ìµ±Ç°²¢Î´´¦ÓÚÖ´ÐÐ״̬£¬Ôò¸ÃÐźžÍÓÐÄں˱£´æÆðÀ´£¬ÖªµÀ¸Ã½ø³Ì»Ø¸´Ö´Ðв¢´«µÝ¸øËüΪֹ¡£
Èç¹ûÒ»¸öÐźű»½ø³ÌÉèÖÃΪ×èÈû£¬Ôò¸ÃÐźŵĴ«µÝ±»ÑÓ³Ù£¬Ö±µ½Æä×èÈû±»È¡ÏûÊDzű»´«µÝ¸ø½ø³Ì¡£LinuxϵͳÖг£ÓÃÐźţº
£¨1£©SIGHUP£ºÓû§´ÓÖÕ¶Ë×¢Ïú£¬ËùÓÐÒÑÆô¶¯½ø³Ì¶¼½«ÊÕµ½¸Ã½ø³Ì¡£ÏµÍ³È±Ê¡×´Ì¬Ï¶ԸÃÐźŵĴ¦ÀíÊÇÖÕÖ¹½ø³Ì¡£
£¨2£©SIGINT£º³ÌÐòÖÕÖ¹Ðźš£³ÌÐòÔËÐйý³ÌÖУ¬°´Ctrl+C¼ü½«²úÉú¸ÃÐźš£
£¨3£©SIGQUIT£º³ÌÐòÍ˳öÐźš£³ÌÐòÔËÐйý³ÌÖУ¬°´Ctrl+\\¼ü½«²úÉú¸ÃÐźš£
£¨4£©SIGBUSºÍSIGSEGV£º½ø³Ì·ÃÎÊ·Ç·¨µØÖ·¡£
£¨5£©SIGFPE£ºÔËËãÖгöÏÖÖÂÃü´íÎó£¬Èç³ýÁã²Ù×÷¡¢Êý¾ÝÒç³öµÈ¡£
£¨6£©SIGKILL£ºÓû§ÖÕÖ¹½ø³ÌÖ´ÐÐÐźš£shellÏÂÖ´ÐÐkill -9·¢Ë͸ÃÐźš£
£¨7£©SIGTERM£º½áÊø½ø³ÌÐźš£shellÏÂÖ´ÐÐkill ½ø³Ìpid·¢Ë͸ÃÐźš£
£¨8£©SIGALRM£º¶¨Ê±Æ÷Ðźš£
£¨9£©SIGCLD£º×Ó½ø³ÌÍ˳öÐźš£Èç¹ûÆä¸¸½ø³ÌûÓкöÂÔ¸ÃÐźÅҲûÓд¦Àí¸ÃÐźţ¬Ôò×Ó½ø³ÌÍ˳öºó½«Ðγɽ©Ê¬½ø³Ì¡£
ÐźÅÀ´Ô´
ÐźÅÊÇÈí¼þ²ã´ÎÉ϶ÔÖжϻúÖÆµÄÒ»ÖÖÄ£Ä⣬ÊÇÒ»ÖÖÒ첽ͨÐÅ·½Ê½£¬£¬ÐźſÉÒÔÔÚÓû§¿Õ¼ä½ø³ÌºÍÄÚºËÖ®¼äÖ±½Ó½»»¥£¬Äں˿ÉÒÔÀûÓÃÐźÅÀ´Í¨ÖªÓû§¿Õ¼äµÄ½ø³Ì·¢ÉúÁËÄÄЩϵͳʼþ£¬ÐźÅʼþÖ÷ÒªÓÐÁ½¸öÀ´Ô´£º
Ó²¼þÀ´Ô´£ºÓû§°´¼üÊäÈëCtrl+CÍ˳ö¡¢Ó²¼þÒì³£ÈçÎÞЧµÄ´æ´¢·ÃÎʵȡ£
Èí¼þÖÕÖ¹£ºÖÕÖ¹½ø³ÌÐźš¢ÆäËû½ø³Ìµ÷ÓÃkillº¯Êý¡¢Èí¼þÒì³£²úÉúÐźš£
ÐźÅÉúÃüÖÜÆÚºÍ´¦ÀíÁ÷³Ì
£¨1£©Ðźű»Ä³¸ö½ø³Ì²úÉú£¬²¢ÉèÖôËÐźŴ«µÝµÄ¶ÔÏó£¨Ò»°ãΪ¶ÔÓ¦½ø³ÌµÄpid£©£¬È»ºó´«µÝ¸ø²Ù×÷ϵͳ£»
£¨2£©²Ù×÷ϵͳ¸ù¾Ý½ÓÊÕ½ø³ÌµÄÉèÖã¨ÊÇ·ñ×èÈû£©¶øÑ¡ÔñÐԵķ¢Ë͸ø½ÓÊÕÕߣ¬Èç¹û½ÓÊÕÕß×èÈû¸ÃÐźţ¨ÇÒ¸ÃÐźÅÊÇ¿ÉÒÔ×èÈûµÄ£©£¬²Ù×÷ϵͳ½«ÔÝʱ±£Áô¸ÃÐźţ¬¶ø²»´«µÝ£¬Ö±µ½¸Ã½ø³Ì½â³ýÁ˶ԴËÐźŵÄ×èÈû£¨Èç¹û¶ÔÓ¦½ø³ÌÒѾÍ˳ö£¬Ôò¶ªÆú´ËÐźţ©£¬Èç¹û¶ÔÓ¦½ø³ÌûÓÐ×èÈû£¬²Ù×÷ϵͳ½«´«µÝ´ËÐźš£
£¨3£©Ä¿µÄ½ø³Ì½ÓÊÕµ½´ËÐźź󣬽«¸ù¾Ýµ±Ç°½ø³Ì¶Ô´ËÐźÅÉèÖõÄÔ¤´¦Àí·½Ê½£¬ÔÝʱÖÕÖ¹µ±Ç°´úÂëµÄÖ´ÐУ¬±£»¤ÉÏÏÂÎÄ£¨Ö÷Òª°üÀ¨ÁÙʱ¼Ä´æÆ÷Êý¾Ý£¬µ±Ç°³ÌÐòλÖÃÒÔ¼°µ±Ç°CPUµÄ״̬£©¡¢×ª¶øÖ´ÐÐÖжϷþÎñ³ÌÐò£¬Ö´ÐÐÍê³ÉºóÔڻظ´µ½ÖжϵÄλÖᣵ±È»£¬¶ÔÓÚÇÀռʽÄںˣ¬ÔÚÖжϷµ»ØÊ±»¹½«Òý·¢Ðµĵ÷¶È¡£

ÐźŵÄÉúÃüÖÜÆÚ
4. ÏûÏ¢(Message)¶ÓÁÐ
ÏûÏ¢¶ÓÁÐÊÇ´æ·ÅÔÚÄÚºËÖеÄÏûÏ¢Á´±í£¬Ã¿¸öÏûÏ¢¶ÓÁÐÓÉÏûÏ¢¶ÓÁбêʶ·û±íʾ¡£
Óë¹ÜµÀ£¨ÎÞÃû¹ÜµÀ£ºÖ»´æÔÚÓÚÄÚ´æÖеÄÎļþ£»ÃüÃû¹ÜµÀ£º´æÔÚÓÚʵ¼ÊµÄ´ÅÅ̽éÖÊ»òÕßÎļþϵͳ£©²»Í¬µÄÊÇÏûÏ¢¶ÓÁдæ·ÅÔÚÄÚºËÖУ¬Ö»ÓÐÔÚÄÚºËÖØÆô(¼´£¬²Ù×÷ÏµÍ³ÖØÆô)»òÕßÏÔʾµØÉ¾³ýÒ»¸öÏûÏ¢¶ÓÁÐʱ£¬¸ÃÏûÏ¢¶ÓÁÐ²Å»á±»ÕæÕýµÄɾ³ý¡£
ÁíÍâÓë¹ÜµÀ²»Í¬µÄÊÇ£¬ÏûÏ¢¶ÓÁÐÔÚij¸ö½ø³ÌÍùÒ»¸ö¶ÓÁÐдÈëÏûϢ֮ǰ£¬²¢²»ÐèÒªÁíÍâij¸ö½ø³ÌÔڸöÓÁÐÉϵȴýÏûÏ¢µÄµ½´ï¡£
ÏûÏ¢¶ÓÁÐÌØµã×ܽ᣺
£¨1£©ÏûÏ¢¶ÓÁÐÊÇÏûÏ¢µÄÁ´±í,¾ßÓÐÌØ¶¨µÄ¸ñʽ,´æ·ÅÔÚÄÚ´æÖв¢ÓÉÏûÏ¢¶ÓÁбêʶ·û±êʶ.
£¨2£©ÏûÏ¢¶ÓÁÐÔÊÐíÒ»¸ö»ò¶à¸ö½ø³ÌÏòËüдÈëÓë¶ÁÈ¡ÏûÏ¢.
£¨3£©¹ÜµÀºÍÏûÏ¢¶ÓÁеÄͨÐÅÊý¾Ý¶¼ÊÇÏȽøÏȳöµÄÔÔò¡£
£¨4£©ÏûÏ¢¶ÓÁпÉÒÔʵÏÖÏûÏ¢µÄËæ»ú²éѯ,ÏûÏ¢²»Ò»¶¨ÒªÒÔÏȽøÏȳöµÄ´ÎÐò¶ÁÈ¡,Ò²¿ÉÒÔ°´ÏûÏ¢µÄÀàÐͶÁÈ¡.±ÈFIFO¸üÓÐÓÅÊÆ¡£
£¨5£©ÏûÏ¢¶ÓÁп˷þÁËÐźųÐÔØÐÅÏ¢Á¿ÉÙ£¬¹ÜµÀÖ»ÄܳÐÔØÎÞ¸ñʽ×Ö ½ÚÁ÷ÒÔ¼°»º³åÇø´óСÊÜÏÞµÈȱ¡£
£¨6£©Ä¿Ç°Ö÷ÒªÓÐÁ½ÖÖÀàÐ͵ÄÏûÏ¢¶ÓÁУºPOSIXÏûÏ¢¶ÓÁÐÒÔ¼°System VÏûÏ¢¶ÓÁУ¬ÏµÍ³VÏûÏ¢¶ÓÁÐĿǰ±»´óÁ¿Ê¹Óá£ÏµÍ³VÏûÏ¢¶ÓÁÐÊÇËæÄں˳ÖÐøµÄ£¬Ö»ÓÐÔÚÄÚºËÖØÆð»òÕßÈ˹¤É¾³ýʱ£¬¸ÃÏûÏ¢¶ÓÁвŻᱻɾ³ý¡£
5. ¹²ÏíÄÚ´æ(share memory)
ʹµÃ¶à¸ö½ø³Ì¿ÉÒÔ¿ÉÒÔÖ±½Ó¶Áдͬһ¿éÄÚ´æ¿Õ¼ä£¬ÊÇ×î¿ìµÄ¿ÉÓÃIPCÐÎʽ¡£ÊÇÕë¶ÔÆäËûͨÐÅ»úÖÆÔËÐÐЧÂʽϵͶøÉè¼ÆµÄ¡£
ΪÁËÔÚ¶à¸ö½ø³Ì¼ä½»»»ÐÅÏ¢£¬ÄÚºËרÃÅÁô³öÁËÒ»¿éÄÚ´æÇø£¬¿ÉÒÔÓÉÐèÒª·ÃÎʵĽø³Ì½«ÆäÓ³Éäµ½×Ô¼ºµÄ˽ÓеØÖ·¿Õ¼ä¡£½ø³Ì¾Í¿ÉÒÔÖ±½Ó¶ÁдÕâÒ»¿éÄÚ´æ¶ø²»ÐèÒª½øÐÐÊý¾ÝµÄ¿½±´£¬´Ó¶ø´ó´óÌá¸ßЧÂÊ¡£
ÓÉÓÚ¶à¸ö½ø³Ì¹²ÏíÒ»¶ÎÄڴ棬Òò´ËÐèÒªÒÀ¿¿Ä³ÖÖͬ²½»úÖÆ£¨ÈçÐźÅÁ¿£©À´´ïµ½½ø³Ì¼äµÄͬ²½¼°»¥³â¡£
ÑÓÉìÔĶÁ£ºLinuxÖ§³ÖµÄÖ÷ÒªÈýÖÖ¹²ÏíÄڴ淽ʽ£ºmmap()ϵͳµ÷Óá¢Posix¹²ÏíÄڴ棬ÒÔ¼°System
V¹²ÏíÄÚ´æÊµ¼ù

¹²ÏíÄÚ´æÔÀíͼ
6. ÐźÅÁ¿(semaphore)
ÐźÅÁ¿ÊÇÒ»¸ö¼ÆÊýÆ÷£¬ÓÃÓÚ¶à½ø³Ì¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐźÅÁ¿µÄÒâͼÔÚÓÚ½ø³Ì¼äͬ²½¡£
ΪÁË»ñµÃ¹²Ïí×ÊÔ´£¬½ø³ÌÐèÒªÖ´ÐÐÏÂÁвÙ×÷£º
£¨1£©´´½¨Ò»¸öÐźÅÁ¿£ºÕâÒªÇóµ÷ÓÃÕßÖ¸¶¨³õʼֵ£¬¶ÔÓÚ¶þÖµÐźÅÁ¿À´Ëµ£¬Ëüͨ³£ÊÇ1£¬Ò²¿ÉÊÇ0¡£
£¨2£©µÈ´ýÒ»¸öÐźÅÁ¿£º¸Ã²Ù×÷»á²âÊÔÕâ¸öÐźÅÁ¿µÄÖµ£¬Èç¹ûСÓÚ0£¬¾Í×èÈû¡£Ò²³ÆÎªP²Ù×÷¡£
£¨3£©¹Ò³öÒ»¸öÐźÅÁ¿£º¸Ã²Ù×÷½«ÐźÅÁ¿µÄÖµ¼Ó1£¬Ò²³ÆÎªV²Ù×÷¡£
ΪÁËÕýÈ·µØÊµÏÖÐźÅÁ¿£¬ÐźÅÁ¿ÖµµÄ²âÊÔ¼°¼õ1²Ù×÷Ó¦µ±ÊÇÔ×Ó²Ù×÷¡£Îª´Ë£¬ÐźÅÁ¿Í¨³£ÊÇÔÚÄÚºËÖÐʵÏֵġ£Linux»·¾³ÖУ¬ÓÐÈýÖÖÀàÐÍ£ºPosix£¨¿ÉÒÆÖ²ÐÔ²Ù×÷ϵͳ½Ó¿Ú£©ÓÐÃûÐźÅÁ¿£¨Ê¹ÓÃPosix
IPCÃû×Ö±êʶ£©¡¢Posix»ùÓÚÄÚ´æµÄÐźÅÁ¿£¨´æ·ÅÔÚ¹²ÏíÄÚ´æÇøÖУ©¡¢System VÐźÅÁ¿£¨ÔÚÄÚºËÖÐά»¤£©¡£ÕâÈýÖÖÐźÅÁ¿¶¼¿ÉÓÃÓÚ½ø³Ì¼ä»òÏ̼߳äµÄͬ²½¡£

Á½¸ö½ø³ÌʹÓÃÒ»¸ö¶þÖµÐźÅÁ¿

Á½¸ö½ø³ÌËùÒÔÓÃÒ»¸öPosixÓÐÃû¶þÖµÐźÅÁ¿

Ò»¸ö½ø³ÌÁ½¸öÏ̹߳²Ïí»ùÓÚÄÚ´æµÄÐźÅÁ¿
ÐźÅÁ¿ÓëÆÕͨÕûÐͱäÁ¿µÄÇø±ð£º
£¨1£©ÐźÅÁ¿ÊǷǸºÕûÐͱäÁ¿£¬³ýÁ˳õʼ»¯Ö®Í⣬ËüÖ»ÄÜͨ¹ýÁ½¸ö±ê×¼Ô×Ó²Ù×÷£ºwait(semap) ,
signal(semap) ; À´½øÐзÃÎÊ£»
£¨2£©²Ù×÷Ò²±»³ÉΪPVÔÓPÀ´Ô´ÓÚºÉÀ¼Óïproberen"²âÊÔ"£¬VÀ´Ô´ÓÚºÉÀ¼Óïverhogen"Ôö¼Ó"£¬P±íʾͨ¹ýµÄÒâ˼£¬V±íʾÊͷŵÄÒâ˼£©£¬¶øÆÕͨÕûÐͱäÁ¿Ôò¿ÉÒÔÔÚÈκÎÓï¾ä¿éÖб»·ÃÎÊ£»ÐźÅÁ¿Ó뻥³âÁ¿Ö®¼äµÄÇø±ð£º
£¨1£©»¥³âÁ¿ÓÃÓÚÏ̵߳Ļ¥³â£¬ÐźÅÁ¿ÓÃÓÚÏ̵߳Äͬ²½¡£ÕâÊÇ»¥³âÁ¿ºÍÐźÅÁ¿µÄ¸ù±¾Çø±ð£¬Ò²¾ÍÊÇ»¥³âºÍͬ²½Ö®¼äµÄÇø±ð¡£
»¥³â£ºÊÇָijһ×ÊԴͬʱֻÔÊÐíÒ»¸ö·ÃÎÊÕß¶ÔÆä½øÐзÃÎÊ£¬¾ßÓÐΨһÐÔºÍÅÅËüÐÔ¡£µ«»¥³âÎÞ·¨ÏÞÖÆ·ÃÎÊÕß¶Ô×ÊÔ´µÄ·ÃÎÊ˳Ðò£¬¼´·ÃÎÊÊÇÎÞÐòµÄ¡£
ͬ²½£ºÊÇÖ¸ÔÚ»¥³âµÄ»ù´¡ÉÏ£¨´ó¶àÊýÇé¿ö£©£¬Í¨¹ýÆäËü»úÖÆÊµÏÖ·ÃÎÊÕß¶Ô×ÊÔ´µÄÓÐÐò·ÃÎÊ¡£
ÔÚ´ó¶àÊýÇé¿öÏ£¬Í¬²½ÒѾʵÏÖÁË»¥³â£¬ÌرðÊÇËùÓÐдÈë×ÊÔ´µÄÇé¿ö±Ø¶¨ÊÇ»¥³âµÄ¡£ÉÙÊýÇé¿öÊÇÖ¸¿ÉÒÔÔÊÐí¶à¸ö·ÃÎÊÕßͬʱ·ÃÎÊ×ÊÔ´
£¨2£©»¥³âÁ¿ÖµÖ»ÄÜΪ0/1£¬ÐźÅÁ¿Öµ¿ÉÒÔΪ·Ç¸ºÕûÊý¡£
Ò²¾ÍÊÇ˵£¬Ò»¸ö»¥³âÁ¿Ö»ÄÜÓÃÓÚÒ»¸ö×ÊÔ´µÄ»¥³â·ÃÎÊ£¬Ëü²»ÄÜʵÏÖ¶à¸ö×ÊÔ´µÄ¶àÏ̻߳¥³âÎÊÌâ¡£ÐźÅÁ¿¿ÉÒÔʵÏÖ¶à¸öͬÀà×ÊÔ´µÄ¶àÏ̻߳¥³âºÍͬ²½¡£µ±ÐźÅÁ¿Îªµ¥ÖµÐźÅÁ¿ÊÇ£¬Ò²¿ÉÒÔÍê³ÉÒ»¸ö×ÊÔ´µÄ»¥³â·ÃÎÊ¡£
£¨3£©»¥³âÁ¿µÄ¼ÓËøºÍ½âËø±ØÐëÓÉͬһÏ̷ֱ߳ð¶ÔӦʹÓã¬ÐźÅÁ¿¿ÉÒÔÓÉÒ»¸öÏß³ÌÊÍ·Å£¬ÁíÒ»¸öÏ̵߳õ½¡£
7. Ì×½Ó×Ö(socket)
Ì×½Ó×ÖÊÇÒ»ÖÖͨÐÅ»úÖÆ£¬Æ¾½èÕâÖÖ»úÖÆ£¬¿Í»§/·þÎñÆ÷£¨¼´Òª½øÐÐͨÐŵĽø³Ì£©ÏµÍ³µÄ¿ª·¢¹¤×÷¼È¿ÉÒÔÔÚ±¾µØµ¥»úÉϽøÐУ¬Ò²¿ÉÒÔ¿çÍøÂç½øÐС£Ò²¾ÍÊÇ˵Ëü¿ÉÒÔÈò»ÔÚͬһ̨¼ÆËã»úµ«Í¨¹ýÍøÂçÁ¬½Ó¼ÆËã»úÉϵĽø³Ì½øÐÐͨÐÅ¡£

SocketÊÇÓ¦ÓòãºÍ´«Êä²ãÖ®¼äµÄÇÅÁº
Ì×½Ó×ÖÊÇÖ§³ÖTCP/IPµÄÍøÂçͨÐŵĻù±¾²Ù×÷µ¥Ôª£¬¿ÉÒÔ¿´×öÊDz»Í¬Ö÷»úÖ®¼äµÄ½ø³Ì½øÐÐË«ÏòͨÐŵĶ˵㣬¼òµ¥µÄ˵¾ÍÊÇͨÐŵÄÁ½·½µÄÒ»ÖÖÔ¼¶¨£¬ÓÃÌ×½Ó×ÖÖеÄÏà¹Øº¯ÊýÀ´Íê³ÉͨÐŹý³Ì¡£
Ì×½Ó×ÖÌØÐÔ
Ì×½Ó×ÖµÄÌØÐÔÓÉ3¸öÊôÐÔÈ·¶¨£¬ËüÃÇ·Ö±ðÊÇ£ºÓò¡¢¶Ë¿ÚºÅ¡¢ÐÒéÀàÐÍ¡£
£¨1£©Ì×½Ó×ÖµÄÓò
ËüÖ¸¶¨Ì×½Ó×ÖͨÐÅÖÐʹÓõÄÍøÂç½éÖÊ£¬×î³£¼ûµÄÌ×½Ó×ÖÓòÓÐÁ½ÖÖ£º
Ò»ÊÇAF_INET£¬ËüÖ¸µÄÊÇInternetÍøÂç¡£µ±¿Í»§Ê¹ÓÃÌ×½Ó×Ö½øÐпçÍøÂçµÄÁ¬½Óʱ£¬Ëü¾ÍÐèÒªÓõ½·þÎñÆ÷¼ÆËã»úµÄIPµØÖ·ºÍ¶Ë¿ÚÀ´Ö¸¶¨Ò»Ì¨ÁªÍø»úÆ÷ÉϵÄij¸öÌØ¶¨·þÎñ£¬ËùÒÔÔÚʹÓÃsocket×÷ΪͨÐŵÄÖյ㣬·þÎñÆ÷Ó¦ÓóÌÐò±ØÐëÔÚ¿ªÊ¼Í¨ÐÅ֮ǰ°ó¶¨Ò»¸ö¶Ë¿Ú£¬·þÎñÆ÷ÔÚÖ¸¶¨µÄ¶Ë¿ÚµÈ´ý¿Í»§µÄÁ¬½Ó¡£
ÁíÒ»¸öÓòAF_UNIX£¬±íʾUNIXÎļþϵͳ£¬Ëü¾ÍÊÇÎļþÊäÈë/Êä³ö£¬¶øËüµÄµØÖ·¾ÍÊÇÎļþÃû¡£
£¨2£©Ì×½Ó×ֵĶ˿ںÅ
ÿһ¸ö»ùÓÚTCP/IPÍøÂçͨѶµÄ³ÌÐò(½ø³Ì)¶¼±»¸³ÓèÁËΨһµÄ¶Ë¿ÚºÍ¶Ë¿ÚºÅ£¬¶Ë¿ÚÊÇÒ»¸öÐÅÏ¢»º³åÇø£¬ÓÃÓÚ±£ÁôSocketÖеÄÊäÈë/Êä³öÐÅÏ¢£¬¶Ë¿ÚºÅÊÇÒ»¸ö16λÎÞ·ûºÅÕûÊý£¬·¶Î§ÊÇ0-65535£¬ÒÔÇø±ðÖ÷»úÉϵÄÿһ¸ö³ÌÐò£¨¶Ë¿ÚºÅ¾ÍÏñ·¿ÎÝÖеķ¿¼äºÅ£©£¬µÍÓÚ256µÄ¶Ë¿ÚºÅ±£Áô¸ø±ê×¼Ó¦ÓóÌÐò£¬±ÈÈçpop3µÄ¶Ë¿ÚºÅ¾ÍÊÇ110£¬Ã¿Ò»¸öÌ×½Ó×Ö¶¼×éºÏ½øÁËIPµØÖ·¡¢¶Ë¿Ú£¬ÕâÑùÐγɵÄÕûÌå¾Í¿ÉÒÔÇø±ðÿһ¸öÌ×½Ó×Ö¡£
£¨3£©Ì×½Ó×ÖÐÒéÀàÐÍ
ÒòÌØÍøÌṩÈýÖÖͨÐÅ»úÖÆ£¬
Ò»ÊÇÁ÷Ì×½Ó×Ö£¬Á÷Ì×½Ó×ÖÔÚÓòÖÐͨ¹ýTCP/IPÁ¬½ÓʵÏÖ£¬Í¬Ê±Ò²ÊÇAF_UNIXÖг£ÓõÄÌ×½Ó×ÖÀàÐÍ¡£Á÷Ì×½Ó×ÖÌṩµÄÊÇÒ»¸öÓÐÐò¡¢¿É¿¿¡¢Ë«Ïò×Ö½ÚÁ÷µÄÁ¬½Ó£¬Òò´Ë·¢Ë͵ÄÊý¾Ý¿ÉÒÔÈ·±£²»»á¶ªÊ§¡¢Öظ´»òÂÒÐòµ½´ï£¬¶øÇÒËü»¹ÓÐÒ»¶¨µÄ³ö´íºóÖØÐ·¢Ë͵ĻúÖÆ¡£
¶þ¸öÊÇÊý¾Ý±¨Ì×½Ó×Ö£¬Ëü²»ÐèÒª½¨Á¢Á¬½ÓºÍά³ÖÒ»¸öÁ¬½Ó£¬ËüÃÇÔÚÓòÖÐͨ³£ÊÇͨ¹ýUDP/IPÐÒéʵÏֵġ£Ëü¶Ô¿ÉÒÔ·¢Ë͵ÄÊý¾ÝµÄ³¤¶ÈÓÐÏÞÖÆ£¬Êý¾Ý±¨×÷Ϊһ¸öµ¥¶ÀµÄÍøÂçÏûÏ¢±»´«Êä,Ëü¿ÉÄܻᶪʧ¡¢¸´ÖÆ»ò´íÂÒµ½´ï£¬UDP²»ÊÇÒ»¸ö¿É¿¿µÄÐÒ飬µ«ÊÇËüµÄËٶȱȽϸߣ¬ÒòΪËü²¢Ò»ÐèÒª×ÜÊÇÒª½¨Á¢ºÍά³ÖÒ»¸öÁ¬½Ó¡£
ÈýÊÇÔʼÌ×½Ó×Ö£¬ÔʼÌ×½Ó×ÖÔÊÐí¶Ô½ÏµÍ²ã´ÎµÄÐÒéÖ±½Ó·ÃÎÊ£¬±ÈÈçIP¡¢ ICMPÐÒ飬Ëü³£ÓÃÓÚ¼ìÑéеÄÐÒéʵÏÖ£¬»òÕß·ÃÎÊÏÖÓзþÎñÖÐÅäÖõÄÐÂÉ豸£¬ÒòΪRAW
SOCKET¿ÉÒÔ×ÔÈçµØ¿ØÖÆWindowsϵĶàÖÖÐÒ飬Äܹ»¶ÔÍøÂçµ×²ãµÄ´«Êä»úÖÆ½øÐпØÖÆ£¬ËùÒÔ¿ÉÒÔÓ¦ÓÃÔʼÌ×½Ó×ÖÀ´²Ù×ÝÍøÂç²ãºÍ´«Êä²ãÓ¦ÓᣱÈÈ磬ÎÒÃÇ¿ÉÒÔͨ¹ýRAW
SOCKETÀ´½ÓÊÕ·¢Ïò±¾»úµÄICMP¡¢IGMPÐÒé°ü£¬»òÕß½ÓÊÕTCP/IPÕ»²»Äܹ»´¦ÀíµÄIP°ü£¬Ò²¿ÉÒÔÓÃÀ´·¢ËÍһЩ×Ô¶¨°üÍ·»ò×Ô¶¨ÐÒéµÄIP°ü¡£ÍøÂç¼àÌý¼¼ÊõºÜ´ó³Ì¶ÈÉÏÒÀÀµÓÚSOCKET_RAW¡£
ÔʼÌ×½Ó×ÖÓë±ê×¼Ì×½Ó×ÖµÄÇø±ðÔÚÓÚ£º
ÔʼÌ×½Ó×Ö¿ÉÒÔ¶ÁдÄÚºËûÓд¦ÀíµÄIPÊý¾Ý°ü£¬¶øÁ÷Ì×½Ó×ÖÖ»ÄܶÁÈ¡TCPÐÒéµÄÊý¾Ý£¬Êý¾Ý±¨Ì×½Ó×ÖÖ»ÄܶÁÈ¡UDPÐÒéµÄÊý¾Ý¡£Òò´Ë£¬Èç¹ûÒª·ÃÎÊÆäËûÐÒé·¢ËÍÊý¾Ý±ØÐëʹÓÃÔʼÌ×½Ó×Ö¡£
Ì×½Ó×ÖͨÐŵĽ¨Á¢

SocketͨÐÅ»ù±¾Á÷³Ì
** ·þÎñÆ÷¶Ë**
£¨1£©Ê×ÏÈ·þÎñÆ÷Ó¦ÓóÌÐòÓÃϵͳµ÷ÓÃsocketÀ´´´½¨Ò»¸öÌ×½Ó×Ö£¬ËüÊÇϵͳ·ÖÅ䏸¸Ã·þÎñÆ÷½ø³ÌµÄÀàËÆÎļþÃèÊö·ûµÄ×ÊÔ´£¬Ëü²»ÄÜÓëÆäËûµÄ½ø³Ì¹²Ïí¡£
£¨2£©È»ºó£¬·þÎñÆ÷½ø³Ì»á¸øÌ×½Ó×ÖÆð¸öÃû×Ö£¬ÎÒÃÇʹÓÃϵͳµ÷ÓÃbindÀ´¸øÌ×½Ó×ÖÃüÃû¡£È»ºó·þÎñÆ÷½ø³Ì¾Í¿ªÊ¼µÈ´ý¿Í»§Á¬½Óµ½Õâ¸öÌ×½Ó×Ö¡£
£¨3£©½ÓÏÂÀ´£¬ÏµÍ³µ÷ÓÃlistenÀ´´´½¨Ò»¸ö¶ÓÁв¢½«ÆäÓÃÓÚ´æ·ÅÀ´×Ô¿Í»§µÄ½øÈëÁ¬½Ó¡£
£¨4£©×îºó£¬·þÎñÆ÷ͨ¹ýϵͳµ÷ÓÃacceptÀ´½ÓÊܿͻ§µÄÁ¬½Ó¡£Ëü»á´´½¨Ò»¸öÓëÔÓеÄÃüÃûÌ×½Ó²»Í¬µÄÐÂÌ×½Ó×Ö£¬Õâ¸öÌ×½Ó×ÖÖ»ÓÃÓÚÓëÕâ¸öÌØ¶¨¿Í»§¶Ë½øÐÐͨÐÅ£¬¶øÃüÃûÌ×½Ó×Ö£¨¼´ÔÏȵÄÌ×½Ó×Ö£©Ôò±»±£ÁôÏÂÀ´¼ÌÐø´¦ÀíÀ´×ÔÆäËû¿Í»§µÄÁ¬½Ó£¨½¨Á¢¿Í»§¶ËºÍ·þÎñ¶ËµÄÓÃÓÚͨÐŵÄÁ÷£¬½øÐÐͨÐÅ£©¡£
¿Í»§¶Ë
£¨1£©¿Í»§Ó¦ÓóÌÐòÊ×Ïȵ÷ÓÃsocketÀ´´´½¨Ò»¸öδÃüÃûµÄÌ×½Ó×Ö£¬È»ºó½«·þÎñÆ÷µÄÃüÃûÌ×½Ó×Ö×÷Ϊһ¸öµØÖ·À´µ÷ÓÃconnectÓë·þÎñÆ÷½¨Á¢Á¬½Ó¡£
£¨2£©Ò»µ©Á¬½Ó½¨Á¢£¬ÎÒÃǾͿÉÒÔÏñʹÓõײãµÄÎļþÃèÊö·ûÄÇÑùÓÃÌ×½Ó×ÖÀ´ÊµÏÖË«ÏòÊý¾ÝµÄͨÐÅ£¨Í¨¹ýÁ÷½øÐÐÊý¾Ý´«Ê䣩¡£
|