Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

6)Linux³ÌÐòÉè¼ÆÈëÃÅ

6)Linux³ÌÐòÉè¼ÆÈëÃÅ--ÏûÏ¢¹ÜÀí
ǰÑÔ:LinuxϵĽø³ÌͨÐÅ(IPC)
LinuxϵĽø³ÌͨÐÅ(IPC)
POSIXÎÞÃûÐźÅÁ¿
System VÐźÅÁ¿
System VÏûÏ¢¶ÓÁÐ
System V¹²ÏíÄÚ´æ
1¡£POSIXÎÞÃûÐźÅÁ¿ Èç¹ûÄãѧϰ¹ý²Ù×÷ϵͳ,ÄÇô¿Ï¶¨ÊìϤPV²Ù×÷ÁË.PV²Ù×÷ÊÇÔ­×Ó
²Ù×÷.Ò²¾ÍÊDzÙ×÷ÊDz»¿ÉÒÔÖжϵÄ,ÔÚÒ»¶¨µÄʱ¼äÄÚ,Ö»Äܹ»ÓÐÒ»¸ö½ø³ÌµÄ´úÂëÔÚCPUÉÏÃæ
Ö´ÐÐ.ÔÚϵͳµ±ÖÐ,ÓÐʱºòΪÁË˳ÀûµÄʹÓúͱ£»¤¹²Ïí×ÊÔ´,´ó¼ÒÌá³öÁËÐźŵĸÅÄî. ¼ÙÉè
ÎÒÃÇҪʹÓÃһ̨´òÓ¡»ú,Èç¹ûÔÚͬһʱ¿ÌÓÐÁ½¸ö½ø³ÌÔÚÏò´òÓ¡»úÊä³ö,ÄÇô×îÖյĽá¹û»á
ÊÇÊ²Ã´ÄØ.ΪÁË´¦ÀíÕâÖÖÇé¿ö,POSIX±ê×¼Ìá³öÁËÓÐÃûÐźÅÁ¿ºÍÎÞÃûÐźÅÁ¿µÄ¸ÅÄî,ÓÉÓÚLi
nuxֻʵÏÖÁËÎÞÃûÐźÅÁ¿,ÎÒÃÇÔÚÕâÀï¾ÍÖ»ÊǽéÉÜÎÞÃûÐźÅÁ¿ÁË. ÐźÅÁ¿µÄʹÓÃÖ÷ÒªÊÇÓÃ
À´±£»¤¹²Ïí×ÊÔ´,ʹµÄ×ÊÔ´ÔÚÒ»¸öʱ¿ÌÖ»ÓÐÒ»¸ö½ø³ÌËùÓµÓÐ.Ϊ´ËÎÒÃÇ¿ÉÒÔʹÓÃÒ»¸öÐźÅ
µÆ.µ±ÐźŵƵÄֵΪij¸öÖµµÄʱºò,¾Í±íÃ÷´Ëʱ×ÊÔ´²»¿ÉÒÔʹÓÃ.·ñÔò¾Í±í>ʾ¿ÉÒÔʹÓÃ.
ΪÁËÌṩЧÂÊ,ϵͳÌṩÁËÏÂÃæ¼¸¸öº¯Êý
POSIXµÄÎÞÃûÐźÅÁ¿µÄº¯ÊýÓÐÒÔϼ¸¸ö:
#include <semaphore.h>
int sem_init(sem_t *sem,int pshared,unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_getvalue(sem_t *sem);
sem_init´´½¨Ò»¸öÐźŵÆ,²¢³õʼ»¯ÆäֵΪvalue.pshared¾ö¶¨ÁËÐźÅÁ¿ÄÜ·ñÔÚ¼¸¸ö½ø³Ì
¼ä¹²Ïí.ÓÉÓÚĿǰLinux»¹Ã»ÓÐʵÏÖ½ø³Ì¼ä¹²ÏíÐźŵÆ,ËùÒÔÕâ¸öÖµÖ»Äܹ»È¡0. sem_dest
royÊÇÓÃÀ´É¾³ýÐźŵƵÄ.sem_waitµ÷Óý«×èÈû½ø³Ì,Ö±µ½ÐźŵƵÄÖµ´óÓÚ0.Õâ¸öº¯Êý·µ»Ø
µÄʱºò×Ô¶¯µÄ½«ÐźŵƵÄÖµµÄ¼þÒ».sem_postºÍsem_waitÏà·´,Êǽ«ÐźŵƵÄÄÚÈݼÓһͬ
ʱ·¢³öÐźŻ½ÐѵȴýµÄ½ø³Ì..sem_trywaitºÍsem_waitÏàͬ,²»¹ý²»×èÈûµÄ,µ±ÐźŵƵÄÖµ
Ϊ0µÄʱºò·µ»ØEAGAIN,±íʾÒÔºóÖØÊÔ.sem_getvalueµÃµ½ÐźŵƵÄÖµ.
ÓÉÓÚLinux²»Ö§³Ö,ÎÒÃÇûÓа취ÓÃÔ´³ÌÐò½âÊÍÁË.
Õ⼸¸öº¯ÊýµÄʹÓÃÏ൱¼òµ¥µÄ.±ÈÈçÎÒÃÇÓÐÒ»¸ö³ÌÐòÒªÏòÒ»¸öϵͳ´òÓ¡»ú´òÓ¡Á½Ò³.ÎÒÃÇ
Ê×ÏÈ´´½¨Ò»¸öÐźŵÆ,²¢Ê¹Æä³õʼֵΪ1,±íʾÎÒÃÇÓÐÒ»¸ö×ÊÔ´¿ÉÓÃ.È»ºóÒ»¸ö½ø³Ìµ÷ÓÃse
m_waitÓÉÓÚÕâ¸öʱºòÐźŵƵÄֵΪ1,ËùÒÔÕâ¸öº¯Êý·µ»Ø,´òÓ¡»ú¿ªÊ¼´òÓ¡ÁË,ͬʱÐźŵÆ
µÄֵΪ0 ÁË. Èç¹ûµÚ¶þ¸ö½ø³ÌÒª´òÓ¡,µ÷ÓÃsem_waitʱºò,ÓÉÓÚÐźŵƵÄֵΪ0,×ÊÔ´²»¿É
ÓÃ,ÓÚÊDZ»×èÈûÁË.µ±µÚÒ»¸ö½ø³Ì´òÓ¡Íê³ÉÒÔºó,µ÷ÓÃsem_postÐźŵƵÄֵΪ1ÁË,Õâ


Ïà¹ØÎĵµ£º

linuxϵĶ˿ÚɨÃè¼¼Êõ£¡

Õâ¸öÊÇÎÒÔÚÒ»±¾ÊéÉÏ¿´µ½µÄ£¬ÆäÖеÄһЩ´úÂëÎÒÓÐËù¸Ä±ä£¬Ð´¸ø¸÷λºÃÓѹ²Ïíһϣ¡
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h&g ......

LinuxÏÂÈçºÎ°ÑIO¿Õ¼äÓ³Éäµ½Óû§½ø³Ì¿Õ¼ä£¿


ÆäʵÊǸöÂù¼òµ¥µÄÎÊÌâ¡£ÔÚLDD3µÄµÚ15ÕÂÉÏÓÐд£¨¼û“Remapping Specific I/O Regions”ÕâÒ»½Ú£©¡£²»¹ýµ±Ê±×÷ÕßÑ¡ÔñÁËÒ»¸ö´íÎóµÄ×ö·¨£ºÏȰÑÕâ¿éIO¿Õ¼äÓÃioremapÓ³Éäµ½ÁËÄں˿ռ䣬ȻºóÔÚÓû§½ø³Ì·ÃÎʱ»Ó³ÉäµÄµØÖ·Ëù²ú ÉúµÄȱҳÖжÏÀÓÃvmalloc_to_pageµÃµ½page£¬·µ»Ø¸øÓû§½ø³Ì¡£
È»¶ø£¬vmalloc_to_pageû·¨Óà ......

Linux»·¾³½ø³Ì¼äͨÐÅ£¨Î壩——¹²ÏíÄÚ´æ

http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
¹²ÏíÄÚ´æ¿ÉÒÔ˵ÊÇ×îÓÐÓõĽø³Ì¼äͨÐÅ·½Ê½£¬Ò²ÊÇ×î¿ìµÄIPCÐÎʽ¡£Á½¸ö²»Í¬½ø³ÌA¡¢B¹²ÏíÄÚ´æµÄÒâ˼ÊÇ£¬Í¬Ò»¿éÎïÀíÄÚ´æ±»Ó³Éäµ½
½ø³ÌA¡¢B¸÷×ԵĽø³ÌµØÖ·¿Õ¼ä¡£½ø³ÌA¿ÉÒÔ¼´Ê±¿´µ½½ø³ÌB¶Ô¹²ÏíÄÚ´æÖÐÊý¾ÝµÄ¸üУ¬·´Ö®ÒàÈ»¡£ÓÉÓÚ¶à¸ö½ø³Ì¹²Ïíͬһ¿éÄÚ´æÇøÓò£ ......

9)LinuxÏÂC¿ª·¢¹¤¾ß½éÉÜ

9)LinuxÏÂC¿ª·¢¹¤¾ß½éÉÜ
LinuxµÄ·¢ÐаæÖаüº¬Á˺ܶàÈí¼þ¿ª·¢¹¤¾ß. ËüÃÇÖеĺܶàÊÇÓÃÓÚ C ºÍ C++Ó¦ÓóÌÐò¿ª·¢
µÄ. ±¾ÎĽéÉÜÁËÔÚ Linux ÏÂÄÜÓÃÓÚ C Ó¦ÓóÌÐò¿ª·¢ºÍµ÷ÊԵŤ¾ß. ±¾ÎĵÄÖ÷Ö¼ÊǽéÉÜÈç
ºÎÔÚ Linux ÏÂʹÓà C ±àÒëÆ÷ºÍÆäËû C ±à³Ì¹¤¾ß, ¶ø·Ç C ÓïÑÔ±à³ÌµÄ½Ì³Ì.
GNU C ±àÒëÆ÷
GNU C ±àÒëÆ÷(GCC)ÊÇÒ»¸öÈ«¹¦Ä ......

3)Linux³ÌÐòÉè¼ÆÈëÃÅ

3)Linux³ÌÐòÉè¼ÆÈëÃÅ--Îļþ²Ù×÷
LinuxÏÂÎļþµÄ²Ù×÷
ǰÑÔ:
ÎÒÃÇÔÚÕâÒ»½Ú½«ÒªÌÖÂÛlinuxÏÂÎļþ²Ù×÷µÄ¸÷¸öº¯Êý.
ÎļþµÄ´´½¨ºÍ¶Áд
ÎļþµÄ¸÷¸öÊôÐÔ
Ŀ¼ÎļþµÄ²Ù×÷
¹ÜµÀÎļþ
----------------------------------------------------------------------------
----
1¡£ÎļþµÄ´´½¨ºÍ¶Áд
ÎÒ¼ÙÉèÄãÒѾ­ÖªµÀÁ˱ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ