Linux½ø³Ì¼äͨѶ֮ÐźÅÁ¿
	
    
    
	Ò». ʲôÊÇÐźÅÁ¿
ÐźÅÁ¿(Semaphore)-- Ï൱һ¸öÐźŵƣ¬³ÌÐòÀïÊÇÒ»¸ö·Ç¸ºÕûÊý£¬±íʾ״̬. 
¿ÉÒÔÓÃÀ´±£»¤Á½¸ö»ò¶à¸ö¹Ø¼ü´úÂë¶Î£¬ÕâЩ¹Ø¼ü´úÂë¶Î²»Äܲ¢·¢µ÷Óá£ÔÚ½øÈëÒ»¸ö¹Ø¼ü´úÂë¶Î֮ǰ£¬Ï̱߳ØÐë»ñȡһ¸öÐźÅÁ¿¡£
Èç¹û¹Ø¼ü´úÂë¶ÎÖÐûÓÐÈκÎỊ̈߳¬ÄÇôÏ̻߳áÁ¢¼´½øÈë¸Ã¿òͼÖеÄÄǸö²¿·Ö¡£Ò»µ©¸Ã¹Ø¼ü´úÂë¶ÎÍê³ÉÁË£¬ÄÇô¸ÃÏ̱߳ØÐëÊÍ·ÅÐźÅÁ¿¡£
ÆäËüÏë½øÈë¸Ã¹Ø¼ü´úÂë¶ÎµÄÏ̱߳ØÐëµÈ´ýÖ±µ½µÚÒ»¸öÏß³ÌÊÍ·ÅÐźÅÁ¿¡£ÎªÁËÍê³ÉÕâ¸ö¹ý³Ì£¬ÐèÒª´´½¨Ò»¸öÐźÅÁ¿£¬
È»ºó½«Acquire Semaphore ÒÔ¼°Release Semaphore ·Ö±ð·ÅÖÃÔÚÿ¸ö¹Ø¼ü´úÂë¶ÎµÄÊ×Ä©¶Ë¡£È·ÈÏÕâЩÐźÅÁ¿ÒýÓõÄÊdzõʼ´´½¨µÄÐźÅÁ¿¡£ 
ÐźÅÁ¿£ºÒ»¸öÕûÊý£» 
´óÓÚ»òµÈÓÚ0ʱ´ú±í¿É¹©²¢·¢½ø³ÌʹÓõÄ×ÊԴʵÌåÊý£» 
СÓÚ0ʱ´ú±íÕýÔڵȴýʹÓÃÁÙ½çÇøµÄ½ø³ÌÊý£» 
ÓÃÓÚ»¥³âµÄÐźÅÁ¿³õʼֵӦ´óÓÚ0£» 
Ö»ÄÜͨ¹ýP¡¢VÔÓï²Ù×÷¶ø¸Ä±ä£» 
ÐźÅÁ¿ÔªËØ×é³É£º 
1¡¢±íʾÐźÅÁ¿ÔªËصÄÖµ£» 
2¡¢×îºó²Ù×÷ÐźÅÁ¿ÔªËصĽø³ÌID 
3¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµ+1µÄ½ø³ÌÊý£» 
4¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµÎª0µÄ½ø³ÌÊý£» 
¶þ¡¢Ö÷Òªº¯Êý 
1.1 ´´½¨ÐźÅÁ¿ 
int semget( 
key_t key,  //±êʶÐźÅÁ¿µÄ¹Ø¼ü×Ö£¬ÓÐÈýÖÖ·½·¨£º1¡¢Ê¹ÓÃIPC——PRIVATEÈÃϵͳ²úÉú£¬ 2¡¢Ìôѡһ¸öËæ»úÊý£¬3¡¢Ê¹ÓÃftok´ÓÎļþ·¾¶ÃûÖвúÉú
int nSemes, //ÐźÅÁ¿¼¯ÖÐÔªËØ¸öÊý 
int flag    //IPC_CREAT£»IPC_EXCL Ö»ÓÐÔÚÐźÅÁ¿¼¯²»´æÔÚʱ´´½¨ 
) 
³É¹¦£º·µ»ØÐźÅÁ¿¾ä±ú 
ʧ°Ü£º·µ»Ø-1 
1.2 ʹÓÃftokº¯Êý¸ù¾ÝÎļþ·¾¶Ãû²úÉúÒ»¸ö¹Ø¼ü×Ö 
key_t ftok(const char *pathname,int proj_id); 
·¾¶Ãû³Æ±ØÐëÓÐÏàӦȨÏÞ 
1.3 ¿ØÖÆÐźÅÁ¿ 
int semctl( 
int semid, //ÐźÅÁ¿¼¯µÄ¾ä±ú 
int semnum, //ÐźÅÁ¿¼¯µÄÔªËØÊý 
int cmd, //ÃüÁî 
/*union senum arg */... // 
) 
³É¹¦£º·µ»ØÏàÓ¦µÄÖµ 
ʧ°Ü£º·µ»Ø-1 
ÃüÁîÏêϸ˵Ã÷: 
cmd: IPC_RMID ɾ³ýÒ»¸öÐźÅÁ¿ 
IPC_EXCL Ö»ÓÐÔÚÐźÅÁ¿¼¯²»´æÔÚʱ´´½¨ 
IPC_SET ÉèÖÃÐźÅÁ¿µÄÐí¿ÉȨ 
SETVAL ÉèÖÃÖ¸¶¨ÐźÅÁ¿µÄÔªËØµÄֵΪ agc.val 
GETVAL »ñµÃÒ»¸öÖ¸¶¨ÐźÅÁ¿µÄÖµ 
GETPID »ñµÃ×îºó²Ù×Ý´ËÔªËØµÄ×îºó½ø³ÌID 
GETNCNT »ñµÃµÈ´ýÔªËØ±äΪ1µÄ½ø³ÌÊý 
GETZCNT »ñµÃµÈ´ýÔªËØ±äΪ0µÄ½ø³ÌÊý 
union senum ¶¨ÒåÈçÏ£º 
union senum{ 
int val; 
struct semid_ds *buf; 
unsigned short * array; 
}agc; 
ÆäÖÐ semid_ds ¶¨ÒåÈçÏ£º 
struct semid_ds{ 
struct ipc_pem sem_pem; /
    
     
	
	
    
    
	Ïà¹ØÎĵµ£º
        
    
    
<Ctrl><Alt><F1>
Çл»µ½µÚÒ»¸öÎı¾ÖÕ¶Ë¡£ÔÚLinuxÏÂÄã¿ÉÒÔÓжà´ïÁù¸ö²»Í¬µÄÖÕ¶Ë¡£Õâ¸öÃüÁîµÄÒâ˼ÊÇ£º“ͬʱ°´×¡<Ctrl>¼üºÍ<Alt>¼ü£¬È»ºó°´<F1>¼ü£¬ÔÙÊÍ·ÅËùÓеļü”¡£
<Ctrl><Alt><Fn> (n=1..6)
Çл»µ½µÚn¸öÎı¾ÖÕ¶Ë¡££¨ÄãÒ²¿ÉÒÔʹÓò»ÊǺܾ³£Óõ½µÄ ......
	
    
        
    
    È·ÇеÄ˵,ÎÒÊÇ´Ó»ªÇåÔ¶¼ûµÄ¹ÙÍøÉϵÃÖªÓиö½ÐǶÈëʽlinux¾ÍÒµÅàѵ°àµÄ¶«Î÷²Å¶ÔlinuxÓÐЩÈÏʶµÄ,¼ÓÖ®×Ô¼ººÍµ¥Æ¬»ú´òÁË2¸ö¶àÔµĽ»µÀÖ®ºó,Ò²²»ÖªÔõôµØ,ÇÞÊҵö¼Ò»ï·¢·èËÆµÄ¿ªÊ¼ÍæFPGA,SOPC,MATLABÖ®ÀàµÄ¶«Î÷,ÎÒ×ÔÈ»²»Ó¦¸ÃÏÐ×Å,»¨ÁËÒ»¶Îʱ¼äÁ˽âDSP,¾õµÃÒªÏÈѧºÃÊý×ÖÐźŴ¦Àí,ÂýÂýÓнӴ¥ARM,È»ºó¶ÔS3C2410µÄ¿ª·¢°åºÜÓÐÐËȤ, ......
	
    
        
    
    linux file lock
linuxµÄÎļþËø·ÖΪÁ½ÖÖ£º
Ò»ÖÖÊÇadvasory lock£¬Ö»Äܱ£Ö¤½ø³ÌÄÚ¶Ôͬһ¸öÎļþËøµÄ»¥³âÓÐЧ£¬µ«ÊǶà¸ö½ø³Ì¿ÉÒÔͬʱ¶ÔÒ»¸öÎļþ¼Ó»¥³âµÄËø£¬ËùÒÔÕâÖÖËøÊǼÓÔÚfile ½á¹¹ÉÏ;Ò»ÖÖÊÇmandatory lock£¬ÕâÖÖËø¿ÉÒÔ±£Ö¤¶à¸ö½ø³ÌÎÞ·¨¶Ôͬһ¸öÎļþ¶¼¼ÓÉÏ»¥³âËø£¬ËùÒÔÕâÖÖËøÊǼÓÔÚinode ½á¹¹Éϵġ£
µ±¼Ómandatroy lockÊ ......
	
    
        
    
    
Linux ÎļþºÍĿ¼µÄÊôÐÔ
×÷Õߣº±±ÄÏÄϱ±
À´×Ô£ºhttp://www.linuxsir.org/main/?q=node/196
ÕªÒª£º±¾ÎĽ²ÊöµÄÊÇÎļþ»òĿ¼µÄÊôÐÔ£¬±ÈÈç½Úµãinode¡¢ÎļþÀàÐÍ¡¢ÎļþȨÏÞ¼°¹éÊô£»»¹¶Ôsetuid¡¢setgid¼°Õ³Ìùλ½øÐÐÁËÒ»°ãÐԵĽ²½â¡£¶Ôln 
¡¢chmod¡¢umask¡¢chown¡¢chgrp ¡¢touch µÄÓ÷¨Ò²½øÐÐÁ˱ȽÏÏêϸµÄ˵Ã÷ºÍ¾ÙÀý£» 
Ŀ¼ ......
	
    
        
    
    
GPIO£¨General Purpose Input/OutputµÄËõд£©¾ÍÊÇоƬµÄÒý½Å£¬Òý½ÅÊǿɱà³ÌµÄ¿É¶ÔÒý½ÅµÄ¹¤×÷ģʽ½øÐÐÉèÖãºÊäÈëģʽ(¼ì²âÊäÈëÐźÅ)£¬Êä³öģʽ(Êä³ö0»ò1)£¬¸ß×è״̬(³£ÓÃÓÚADת»»)£¬»¹ÓнûÖ¹»òÔÊÐíÉÏÄÚ²¿ÏÂÀµç×è(ÉÏÀ£º¹Ü½Åͨ¹ýµç×è½Ó¸ßµçƽ£¬ÏÂÀ£º¹Ü½Åͨ¹ýµç×è½ÓµØ£¬Ò²¿ÉÒÔÍⲿ½ÓÉÏÀ»òÏÂÀµç×è)£¬»¹ÓйܽŸ´Óõȹ¦ÄÜ£¬ ......