Ò׽ؽØͼÈí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ : linux

linux mmapÇý¶¯ÊµÏÖ

ÔÚʵÏÖÇý¶¯³ÌÐòµÄmmapº¯Êýʱ£¬Òª×¢ÒâÓ³ÉäµØÖ·µÄת»»ÎÊÌ⣬¼û´úÂë¡£
¶¨ÒåÒ»¸öÉ豸½á¹¹Ì壺
struct leedriver
{
struct cdev cdev;
unsigned char mem[MEMSIZE];
};
ÕâÀïÃæÕâ¸öMEMSIZE£¬×îС¶¼ÒªÊÇ4096£¬ÒòΪÄÚ´æÓ³ÉäÊÇÒÔҳΪµ¥Î»µÄ¡£
ÔÚʵÏÖsimple_remap_mmapº¯Êýʱ£¬´úÂëÈçÏÂ
static int simple_remap_mmap(struct file *filp, struct vm_area_struct *vma)
{
vma->vm_pgoff = ((u32)virt_to_phys(leedriverp->mem)) >> PAGE_SHIFT;
printk("vma->vm_pgoff = %lx\n",vma->vm_pgoff);
if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
vma->vm_ops = &simple_remap_vm_ops;
simple_vma_open(vma);
return 0;
}

×¢Ò⺯Êý¿ªÍ·µÄvma->vm_pgoff = ((u32)virt_to_phys(leedriverp->mem)) >> PAGE_SHIFT;
leedriverp->memÊǸöÄÚºËÐéÄâµØÖ·£¬Ó¦¸Ãͨ¹ývirt_to_physת»»³ÉÎïÀíµØÖ·£¬ÔÙ½øÐÐ×óÒƲÙ×÷£¬¾ÍOKÁË¡£
Ö®ºó¶¨ÒåÒ»ÏÂvm_ops
static struct vm_operations_struct simple_remap_vm ......

linuxϵĵ÷ÊÔ¹¤¾ß


linuxϵĵ÷ÊÔ¹¤¾ß
   Ëæ×ÅXPµÄÁ÷ÐУ¬ÈËÃÇÔ½À´Ô½×¢ÖØÈí¼þµÄÇ°ÆÚÉè¼Æ¡¢ºóÆÚµÄʵÏÖ£¬ÒÔ¼°¹á´©ÓÚÆäÖеIJâÊÔ¹¤×÷£¬¾­¹ýÕâ¸ö¹ý³Ì³öÀ´µÄ×ÔÈ»ÊǸßÖÊÁ¿µÄÈí¼þ¡£ÉõÖÁÓÐÈËÉù³ÆXP »áÌÔÌ­µ÷ÊÔÆ÷£¡Õ⵱ȻÊÇÓÐÒ»¶¨µÀÀíµÄ£¬È»¶ø¾ÍÄ¿Ç°µÄÏÖʵÀ´¿´£¬Õ⻹ÊÇÒ»ÖÖÀíÏë¡£ÔÚÈÕ³£¹¤×÷ÖУ¬µ÷ÊÔ¹¤¾ß»¹ÊDZز»¿ÉÉٵġ£ÔÚLinuxÏ£¬µ÷ÊÔ¹¤¾ß²¢·ÇÖ»ÓÐ gdb£¬»¹ÓкܶàÆäËüµ÷ÊÔ¹¤¾ß£¬ËüÃǶ¼¸÷ÓÐËù³¤£¬²àÖØ·½ÃæÒ²ÓÐËù²»Í¬¡£±¾ÎĽéÉܼ¸ÖÖ±ÊÕß³£Óõĵ÷ÊÔ¹¤¾ß£º
 
1. mtrace
ÔÚlinuxÏ¿ª·¢Ó¦ÓóÌÐò£¬ÓÃC/C++ÓïÑԵľӶࡣÄÚ´æй¶ºÍÄÚ´æÔ½½çµÈÄÚ´æ´íÎó£¬ÎÞÒÉÊÇÆäÖÐ×îÍ·ÌÛµÄÎÊÌâÖ®Ò»¡£glibcΪ½â¾öÄÚ´æ´íÎóÌṩÁËÁ½ÖÖ·½°¸£º
Ò»ÖÖÊÇhookÄÚ´æ¹ÜÀíº¯Êý¡£hookÄÚ´æ¹ÜÀíº¯Êýºó£¬Äã¿ÉÒÔͨ¹ý¼ÇÏÂÄÚ´æ·ÖÅäµÄÀúÊ·¼Ç¼£¬ÔÚ³ÌÐòÖÕֹʱ²é¿´ÊÇ·ñÓÐÄÚ´æй¶£¬ÕâÑù¾Í¿ÉÒÔÕÒ³öÄÚ´æй¶µÄµØ·½ÁË¡£ÄãÒ²¿ÉÒÔͨ¹ýÔÚËù·ÖÅäÄÚ´æµÄÊ×βдÈëÌØÊâµÄ±êÖ¾£¬ÔÚÊÍ·ÅÄÚ´æʱ¼ì²é¸Ã±êÖ¾ÊÇ·ñ±»ÆÆ»µÁË£¬ÕâÑù¾Í¿ÉÒÔ´ïµ½¼ì²éÄÚ´æÔ½½çÎÊÌâµÄÄ¿µÄ¡£
ÁíÍâÒ»ÖÖ·½·¨¸ü¼òµ¥£¬glibcÒѾ­ÎªµÚÒ»ÖÖ·½°¸ÌṩÁËĬÈϵÄʵÏÖ£¬ÄãÒª×öµÄÖ»ÊÇÔÚÌض¨µÄλÖõ÷ÓÃmtrace/muntraceÁ½¸öº¯Êý£¬ËüÃǵĺ¯ÊýÔ­ÐÍÈçÏ£º
#include
void mtrace(void);
void mun ......

linuxϵͳÏ°²×°flashplayer

µÚÒ»²½:ÏÂÔØFLASHµÄ²å¼þ
 
http://www.adobe.com/ÔÚÕâ¸öÒ³ÃæÉÏÓкܶà²å¼þ,ÔÚÕâÀïÄãÖ»ÓÃÏÂÔØ
 
ÎļþÃû×Ö:install_flash_player_9_linux.tar.gz
 
 
µÚ¶þ²½:½âѹÎļþ°ü
 
µ±Ç°µÄ¹¤×÷Ŀ¼ÊÇ:USR
 
[root@isitqnx usr]#tar zvxf install_flash_player_7_linux.tar.gz µÃµ½Ò»¸öͬÃûÎļþĿ¼
 
[root@isitqnx usr]#cd? install_flash_player_7_linux.tar.gz
 
´Ëʱµ±Ç°Ä¿Â¼ÊÇinstall_flash_player_7_linux.tar.gz Ìáʾ·ûºÅÊÇ:[root@isitqnx install_flash_player_7_linux]#
 
µÚÈý²½:°²×°
 
·ÖÁ½ÖÖ°²×°·½·¨
 
1: ×î·½±ãµÄ ·½·¨:
 
Ö´ÐиÃĿ¼ÏµĿÉÖ´ÐÐÎļþflashplayer-installer
 
ÊÂÀý:[root@isitqnx install_flash_player_7_linux]# ./flashplayer-installer
 
½Ó×ÅËü»áÏòÄãÌἸ¸öÎÊÌâ,¶¼ÊÇЩ¹ØÓÚÄãµÄMOZILLA¾ßÌ尲װλÖÃ,ͨ³£µÄ°²×°Î»ÖÃÊÇ:/usr/lib/mozilla-version
 
ÔÚÎҵĻúÆ÷ÖÐÊÇ/usr/lib/mozilla-1.4(Îҵİ汾ºÅÊÇ1.4)
 
ÔڻشðÎÊÌâʱºò,ÕýÈ·ÊäÈëÄãµÄMOZILLAλÖþÍÐÐÁË.È»ºó»Ø´ð"Y",°²×°¾ÍËãÍê³ÉÁË.
 
2:ÊÖ¹¤°²×°,Ò²²»ËãÌ«Âé·³
  ......

fork compare to exec in linux c program

pid_t  pid=fork()
it has 3 situation for the return result pid
0  child
>0 parent process
<0 fork fail
fork create a new process  and it parent live alse when the child process had been created ......

fork compare to exec in linux c program

pid_t  pid=fork()
it has 3 situation for the return result pid
0  child
>0 parent process
<0 fork fail
fork create a new process  and it parent live alse when the child process had been created ......

fork compare to exec in linux c program

pid_t  pid=fork()
it has 3 situation for the return result pid
0  child
>0 parent process
<0 fork fail
fork create a new process  and it parent live alse when the child process had been created ......

fork compare to exec in linux c program

pid_t  pid=fork()
it has 3 situation for the return result pid
0  child
>0 parent process
<0 fork fail
fork create a new process  and it parent live alse when the child process had been created ......

Linux C ʵÏÖÏ̳߳Ø

×î½ü×öµÄһЩ¹¤×÷ÐèÒªÓõ½Ï̳߳ؼ¼Êõ£¬Òò´Ë²Î¿¼ÁËһЩ×ÊÁϺÍÊé¼®£¬È硶0bug c/c++ÉÌÓù¤³ÌÖ®µÀ¡·¡£
Ϊ´ËÔÚlinuxƽ̨ÉÏÓô¿cдÁËÒ»¸öÏ̳߳صÄʵÏÖ¡£
ÔÚ´ËÁгöÁËÔ­´úÂë¡£
Ö÷ÒªÓõ½µÄÊý¾Ý½á¹¹ÓÐ
1.struct  thread_pool_t    // thread pool µÄʵÏÖ´úÂë
2.struct thread_pool_token_t    //ÔÚthread pool ÖÐÓõ½µÄ½á¹¹£¬Ò»¸ö¸ÃÀàÐͱäÁ¿´ú±íÒ»ÌõÏß³Ì
3.struct thread_pool_job_t     //µ±ÏßÇ°³Ì´¦Àí¸ÃÈÎÎñ½«»Øµ÷½á¹¹
Éè¼Æ˼·£º
Ö÷Ï̴߳´½¨Ï̳߳صĿØÖÆỊ̈߳¬
¹ÜÀíÏ߳̽«½øÈëÑ­»·À´×öÒÔÏÂÊÂÇ飺
1.Èç¹ûµ±Ç°¿ÕÏнø³Ì²»×ã²¢ÇÒ×ÜÏß³ÌÊýûÓдﵽÉÏÏÞ£¬½«´´½¨Ò»Ìõ¿ÕÏÐỊ̈߳¬ÖÁµÀ¿ÕÏÐÏ̴߳ﵽ3Ìõ£¨¼ûTHREAD_POOL_MIN_IDLE_SIZE£©
2.²»¶Ï¼ì²é¹¤×÷ÈÎÎñ¶ÓÁУ¬ÓÐÔò°²ÅÅÒ»Ìõ¿ÕÏÐÏ̶߳ԸÃÈÎÎñ½øÐд¦Àí
ÆÕͨÏ̱߳»¹ÜÀíÏ̴߳´½¨ºóÒ²½«½øÈëÑ­»·À´×öÒÔÏÂÊÂÇ飺
1.¼ì²éµ±Ç°assignµÄthread_pool_token_t½á¹¹µÄ״̬£¬Èç¹ûÊÇTREAD_POOL_STATE_BUSYÔòµ÷ÓÃthread_pool_token_tËù×¢²áµÄ»Øµ÷º¯ÊýÀ´´¦ÀíÈÎÎñ¡£
2.Íê³É¸ÃÈÎÎñºó¼ì²âµ±Ç°¿ÕÏнø³Ì¹»²»¹»£¬Èç¹ûÌ«¶àÔòÍ˳ö±¾Ị̈߳¬·ñÔò»á¸ÄдÔËÐÐ״̬ΪTREAD_POOL_STATE_IDLEºó¼ÌÐøÑ­»·
× ......

Linux C ʵÏÖÏ̳߳Ø

×î½ü×öµÄһЩ¹¤×÷ÐèÒªÓõ½Ï̳߳ؼ¼Êõ£¬Òò´Ë²Î¿¼ÁËһЩ×ÊÁϺÍÊé¼®£¬È硶0bug c/c++ÉÌÓù¤³ÌÖ®µÀ¡·¡£
Ϊ´ËÔÚlinuxƽ̨ÉÏÓô¿cдÁËÒ»¸öÏ̳߳صÄʵÏÖ¡£
ÔÚ´ËÁгöÁËÔ­´úÂë¡£
Ö÷ÒªÓõ½µÄÊý¾Ý½á¹¹ÓÐ
1.struct  thread_pool_t    // thread pool µÄʵÏÖ´úÂë
2.struct thread_pool_token_t    //ÔÚthread pool ÖÐÓõ½µÄ½á¹¹£¬Ò»¸ö¸ÃÀàÐͱäÁ¿´ú±íÒ»ÌõÏß³Ì
3.struct thread_pool_job_t     //µ±ÏßÇ°³Ì´¦Àí¸ÃÈÎÎñ½«»Øµ÷½á¹¹
Éè¼Æ˼·£º
Ö÷Ï̴߳´½¨Ï̳߳صĿØÖÆỊ̈߳¬
¹ÜÀíÏ߳̽«½øÈëÑ­»·À´×öÒÔÏÂÊÂÇ飺
1.Èç¹ûµ±Ç°¿ÕÏнø³Ì²»×ã²¢ÇÒ×ÜÏß³ÌÊýûÓдﵽÉÏÏÞ£¬½«´´½¨Ò»Ìõ¿ÕÏÐỊ̈߳¬ÖÁµÀ¿ÕÏÐÏ̴߳ﵽ3Ìõ£¨¼ûTHREAD_POOL_MIN_IDLE_SIZE£©
2.²»¶Ï¼ì²é¹¤×÷ÈÎÎñ¶ÓÁУ¬ÓÐÔò°²ÅÅÒ»Ìõ¿ÕÏÐÏ̶߳ԸÃÈÎÎñ½øÐд¦Àí
ÆÕͨÏ̱߳»¹ÜÀíÏ̴߳´½¨ºóÒ²½«½øÈëÑ­»·À´×öÒÔÏÂÊÂÇ飺
1.¼ì²éµ±Ç°assignµÄthread_pool_token_t½á¹¹µÄ״̬£¬Èç¹ûÊÇTREAD_POOL_STATE_BUSYÔòµ÷ÓÃthread_pool_token_tËù×¢²áµÄ»Øµ÷º¯ÊýÀ´´¦ÀíÈÎÎñ¡£
2.Íê³É¸ÃÈÎÎñºó¼ì²âµ±Ç°¿ÕÏнø³Ì¹»²»¹»£¬Èç¹ûÌ«¶àÔòÍ˳ö±¾Ị̈߳¬·ñÔò»á¸ÄдÔËÐÐ״̬ΪTREAD_POOL_STATE_IDLEºó¼ÌÐøÑ­»·
× ......
×ܼǼÊý:5772; ×ÜÒ³Êý:962; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [38] [39] [40] [41] 42 [43] [44] [45] [46] [47]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ