linux¶àÏß³Ìѧϰ(ËÄ)——ÐźÅÁ¿Ï߳̿ØÖÆ
ÔÚÉÏһƪÎÄÕÂÖУ¬½²ÊöÁËÏß³ÌÖл¥³âËøµÄʹÓ㬴ﵽ¶Ô¹²Ïí×ÊÔ´»¥³âʹÓᣳýÁËʹÓû¥³âËø£¬ÐźÅÁ¿£¬Ò²¾ÍÊDzÙ×÷ϵͳÖÐËùÌáµ½µÄPVÔÓÄÜ´ïµ½»¥³âºÍͬ²½µÄЧ¹û£¬Õâ¾ÍÊǽñÌìÎÒÃÇËùÒª½²ÊöµÄÐźÅÁ¿Ï߳̿ØÖÆ¡£
PVÔÓïÊǶÔÕûÊý¼ÆÊýÆ÷ÐźÅÁ¿semµÄ²Ù×÷£¬Ò»´ÎP²Ù×÷¿Éʹsem¼õÒ»£¬¶øÒ»´ÎV²Ù×÷¿ÉÊÇsem¼ÓÒ»¡£½ø³Ì£¨»òỊ̈߳©¸ù¾ÝÐźÅÁ¿µÄÖµÀ´ÅжÏÊÇ·ñ¶Ô¹«¹²×ÊÔ´¾ßÓзÃÎÊȨÏÞ¡£µ±ÐźÅÁ¿µÄÖµ´óÓÚÁã»òµÈÓÚÁãµÄʱºò£¬¸Ã½ø³Ì£¨»òỊ̈߳©¾ßÓжԹ«¹²×ÊÔ´·ÃÎʵÄȨÏÞ£¬·ñÔò£¬µ±ÐźÅÁ¿µÄֵСÓÚʱ£¬¸Ã½ø³Ì£¨»òỊ̈߳©¾Í»á±»×èÈû£¬Ö±µ½ÐźÅÁ¿µÄÖµ´óÓÚ»òµÈÓÚÒ»¡£
1¡¢ÔÚLINUXÖУ¬ÊµÏÖÁËPOSIXµÄÎÞÃûÐźÅÁ¿£¬Ö÷ÒªÓÃÓÚÏ̼߳äµÄ»¥³âͬ²½£¬ÏÂÃ潫¼òµ¥½éÉÜһЩº¯Êý½Ó¿Ú£º
£¨1£©¡¢sem_init
¹¦ÄÜ£º ÓÃÓÚ´´½¨Ò»¸öÐźÅÁ¿£¬²¢³õʼ»¯ÐźÅÁ¿µÄÖµ¡£
Í·Îļþ£º <semaphore.h>
º¯ÊýÔÐÍ£º int sem_init (sem_t* sem, int pshared, unsigned int value);
º¯Êý´«ÈëÖµ£º sem:ÐźÅÁ¿¡£
pshared:¾ö¶¨ÐźÅÁ¿ÄÜ·ñÔÚ¼¸¸ö½ø³Ì¼ä¹²Ïí¡£ÓÉÓÚÄ¿Ç°LINUX»¹Ã»ÓÐʵÏÖ½ø
³Ì¼ä¹²ÏíÐÅÏ¢Á¿£¬ËùÒÔÕâ¸öÖµÖ»ÄÜÈ¡0¡£
º¯Êý·µ»ØÖµ£º 0£º³É¹¦¡£
-1£ºÊ§°Ü¡£
£¨2£©ÆäËûº¯Êý¡£
int sem_wait (sem_t* sem);
int sem_trywait (sem_t* sem);
int sem_post (sem_t* sem);
int sem_getvalue (sem_t* sem);
int sem_destroy (sem_t* sem);
¹¦ÄÜ£ºsem_waitºÍsem_trywaitÏ൱ÓÚP²Ù×÷£¬ËüÃǶ¼Äܽ«ÐźÅÁ¿µÄÖµ¼õÒ»£¬Á½ÕßµÄÇø±ðÔÚ
ÓÚÈôÐźÅÁ¿µÄֵСÓÚÁãʱ£¬sem_wait½«»á×èÈû½ø³Ì£¬¶øsem_trywaitÔò»áÁ¢¼´·µ»Ø¡£
sem_postÏ൱ÓÚV²Ù×÷£¬Ëü½«ÐźÅÁ¿µÄÖµ¼
Ïà¹ØÎĵµ£º
.tar
½â°ü£º tar xvf FileName.tar
´ò°ü£ºtar cvf FileName.tar DirName
£¨×¢£ºtarÊÇ´ò°ü£¬²»ÊÇѹËõ£¡£©
---------------------------------------------
.gz
½âѹ1£ºgunzip FileName.gz
½âѹ2£ºgzip -d FileName.gz
ѹËõ£ºgzip FileName
.tar.gz
½âѹ£ºtar zxvf FileName.tar.gz
ѹËõ£ºtar zcvf FileName ......
LinuxÌṩÁËÄÚ´æÓ³É亯Êýmmap, Ëü°ÑÎļþÄÚÈÝÓ³Éäµ½Ò»¶ÎÄÚ´æÉÏ(׼ȷ˵ÊÇÐéÄâÄÚ´æÉÏ), ͨ¹ý¶ÔÕâ¶ÎÄÚ´æµÄ¶ÁÈ¡ºÍÐÞ¸Ä, ʵÏÖ¶ÔÎļþµÄ¶ÁÈ¡ºÍÐÞ¸Ä, ÏÈÀ´¿´Ò»ÏÂmmapµÄº¯ÊýÉùÃ÷: Í·Îļþ: ÔÐÍ: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offsize); ·µ» ......
Ò»°ãÇé¿öÏ£¬½ø³Ì²»ÄÜ´æȡϵͳÄں˵ģ¬Ö»ÓÐϵͳµ÷ÓÃÊÇÒ»¸öÀýÍ⣬ÔÚintel½á¹¹µÄ¼ÆËã»úÖУ¬ÊÇͨ¹ýÖжÏ0x80ʵÏÖµÄ
½ø³Ì¿ÉÒÔ¿ÉÒÔÌøתµ½ÄÚºËÖеÄλÖÃÊÇsystem_call¡£Ôڴ˼ì²éϵͳµ÷Óúţ¬Ëü¸æËßÄں˽ø³ÌÇëÇóºÎÖÖ·þÎñ£¬È»ºó²éÕÒϵͳµ÷Óñísys_call_table£¬ÕÒµ½Ï£Íûµ÷ÓõÄÄں˵ØÖ·º¯Êý£¬µ÷Óô˺¯Êý£¬È»ºó·µ»Ø¡£
&nbs ......
Ò»¡¢´ÓÄÄÀïµ½ÄÄÀï
±¾ÎÄÖ¼ÔÚÃèÊölinuxÖÐÄÚºËÈçºÎµ÷ÓÃÆô¶¯£¬È»ºóÈçºÎ´ÓimgµÄÎļþϵͳÇл»µ½Ó²Å̵Ĺý³Ì¡£
ÃèÊöÆðÓÚ£ºlinux-2.6.11/init/main.cÖк¯Êý static int init(void * unused)
ÃèÊöÖ¹ÓÚ£º/etc/rc.d/rc.sysinitÎļþµÄ±»µ÷ÓÃ
¶þ¡¢ÃèдÁ÷³Ì
ÔÚlinux´úÂëlinux-2.6.11/init/main.cÖÐinitÕâ¸öº¯Êý±»µ÷ÓÃʱ£¬³ ......
ÔÚÇ°ÃæµÄÎÄÕÂÖÐÌá¼°µ½£¬Ò»¸ö½ø³ÌÖеĶà¸öÏß³ÌÊǹ²Ïíͬһ¶Î×ÊÔ´µÄ£¬ÓÉÓÚÏ̶߳Ô×ÊÔ´µÄ¾ºÕùÒý³öÁËËø¡£ÆäÖÐmutexÊÇÒ»ÖÖ¼òµ¥µÄ¼ÓËø·½·¨£¬Õâ¸ö»¥³âËøÖ»ÓÐÁ½ÖÖ״̬£¬ÄǾÍÊÇÉÏËøºÍ½âËø£¬¿ÉÒÔ°Ñ»¥³âËø¿´×÷ÊÇijÖÖÒâÒåÉϵÄÈ«¾Ö±äÁ¿¡£ÔÚijһʱ¿Ì£¬Ö»ÄÜÓÐÒ»¸öÏß³ÌÈ¡µÃÕâ¸ö»¥³âÉϵÄËø£¬ÓµÓÐÉÏËø״̬µÄÏ߳̿ÉÒÔ¶Ô¹²Ïí×ÊÔ´½øÐвÙ×÷£¬¶ ......