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

linux Çý¶¯mmap²Ù×÷


Èý¡¢VMAºÍPAGE½á¹¹ ºÍmmapº¯Êý
 
1.page  Ö÷Òª³ÉÔ±
   atomic_t count; 
//Õâ¸öÒ³µÄÒýÓÃÊý. µ±Õâ¸ö count µôµ½ 0, ÕâÒ³±»·µ»Ø¸ø¿ÕÏÐÁбí.
void *virtual; 
//Èç¹ûÒ³±»Ó³É䣬Ôò±íʾÕâÒ³µÄÄÚºËÐéÄâµØÖ·; ·ñÔò, NULL.
unsigned long flags; 
//ÃèÊöҳ״̬µÄÒ»Ì×λ±êÖ¾. ÕâЩ°üÀ¨ PG_locked, Ëüָʾ¸ÃÒ³ÔÚÄÚ´æÖÐÒѱ»¼ÓËø, ÒÔ¼° PG_reserved,
//Ëü·ÀÖ¹ÄÚ´æ¹ÜÀíϵͳʹÓøÃÒ³
 
2.vm_area_struct  Ö÷Òª³ÉÔ±
unsigned long vm_start;//VMA ¿ªÊ¼ÓÚ
unsigned long vm_end; //VMA ½áÊø
struct file *vm_file; 
//Ö¸ÏòºÍÕâ¸öÇø(Èç¹ûÓÐÒ»¸ö)¹ØÁªµÄ struct file ½á¹¹µÄÖ¸Õë.
unsigned long vm_pgoff; 
//ÎļþÖÐÇøµÄÆ«ÒÆ, ÒÔÒ³¼Æ. µ±Ò»¸öÎļþºÍÉ豸±»Ó³Éä, ÕâÊÇÓ³ÉäÔÚÕâ¸öÇøµÄµÚÒ»Ò³µÄÎļþλÖÃ.?????
unsigned long vm_flags; 
// É豸Çý¶¯³£ÓõıêÖ¾ÊÇ VM_IO ºÍ VM_RESERVUED. 
//VM_IO ±êÖ¾Ò»¸ö VMA ×÷ΪÄÚ´æÓ³ÉäµÄ I/O Çø,×èÖ¹Õâ¸öÇø±»°üº¬ÔÚ½ø³ÌºËת´¢£¿£¿£¿ÖÐ. 
//VM_RESERVED ¸æÖªÄÚ´æ¹ÜÀíϵͳ²»ÒªÊÔͼ½»»»³öÕâ¸ö VMA;
struct vm_operations_struct *vm_ops; 
//²Ù×÷
//void (*open)(struct vm_area_struct *vma);  VMA¸Õ¸Õ²úÉúʱ£¬´Ëº¯Êý±»µ÷ÓÃÀ´³õʼ»¯VMA
//void (*close)(struct vm_area_struct *vma);  µ±Ò»¸öÇø±»Ïú»Ù, Äں˵÷ÓÃËüµÄ¹Ø±Õ²Ù×÷
//struct page *(*nopage)(struct vm_area_struct *vma, unsigned long address, int *type); 
//Èç¹û nopage ·½·¨Ã»Óж¨Òå,Äں˷ÖÅäÒ»¸ö¿ÕÒ³.½ø³Ì´æÈ¡²»ÔÚÄÚ´æÖÐÓÐЧ VMA µÄҳʱ,nopage ·½·¨±»µ÷ÓÃ(Èç¹ûËü±»¶¨Òå)
//int (*populate)(struct vm_area_struct *vm, unsigned long address, unsigned long len, pgprot_t prot, unsigned long pgoff, int
nonblock); 
//ÔÚËüÃDZ»Óû§¿Õ¼ä´æÈ¡Ö®Ç°,ÔÊÐíÄÚºË"Ô¤´í"Ò³µ½ÄÚ´æ. Çý¶¯Í¨³£Ã»ÓбØÒªÊµÏÖÕâ¸öÌî³ä·½·¨
void *vm_private_data; 
//Çý¶¯¿ÉÒÔÓÃÀ´´æ´¢ËüµÄ×ÔÉíÐÅÏ¢µÄ³ÉÔ±.
 
3.mmapÓû§¿Õ¼äµ÷ÓÃÓëÄں˿ռäµ÷ÓÃ
void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offset);
//start Ö¸ÏòÓû¶ÔÓ¦µÄÄÚ´æÆðʼµØÖ·£¬Í¨³£ÉèΪNULL£¬´ú±íÈÃϵͳ×Ô¶¯Ñ¡¶¨µØÖ·£¬¶ÔÓ¦³É¹¦ºó¸ÃµØÖ·»á·µ»Ø
//²ÎÊýlength´ú±í½«ÎļþÖжà´óµÄ²¿·Ö¶ÔÓ¦µ½ÄÚ´æ¡£
//²ÎÊýprot´ú±íÓ³ÉäÇøÓòµÄ±£»¤·½Ê½
//fdÎļþÃèÊö·û
//²ÎÊýoff


Ïà¹ØÎĵµ£º

LinuxÓ¦ÓóÌÐò°²×°Óë¹ÜÀí

Ä¿±ê£º
        Á˽âlinuxÓ¦ÓóÌÐòµÄ×é³É²¿·Ö
        ÕÆÎÕʹÓÃRPM¹¤¾ß¹ÜÀíÈí¼þ°üµÄ·½·¨
        ÕÆÎÕÓ¦ÓóÌÐòÔ´´úÂë°üµÄ±àÒë°²×°·½·¨
        ÕÆÎÕͼÐνçÃæÏÂÓ¦ÓóÌÐò¹ÜÀí¹¤¾ßµÄʹÓÃ
1¡¢L ......

ÓÃSource Insight½¨Á¢Ò»¸öLinuxÄں˴úÂ빤³Ì


¾ßÌå²½ÖèÈçÏ£º
£¨Ò»£©´ò¿ªSource Insight£¬µ¥»÷¡¾ÏîÄ¿¡¿°´Å¥£¬µ¯³öÏÂÀ­²Ëµ¥¡£
£¨¶þ£©µ¥»÷¡¾ÐÂÏîÄ¿¡¿°´Å¥£¬µ¯³ö¡¾ÐÂÏîÄ¿¡¿¶Ô»°¿ò£¬ÊäÈëÏîÄ¿ÃûºÍ´æ·Å·¾¶£¬µ¥»÷¡¾È·¶¨¡¿°´Å¥¡£Èçͼ1Ëùʾ¡£
 
ͼ1 ÐÂÏîÄ¿¶Ô»°¿ò
ÎÄÕÂÀ´Ô´£ºhttp://top-e.org/jiaoshi/html/539.html
£¨Èý£©µ¯³ö¡¾Ìí¼Óɾ³ýÎļþ¡¿¶Ô»°¿ò£¬ÔÚÄÚºËÔ´´ú ......

LinuxÖеÄÄÚ´æ·ÖÅäºÍÊÍ·ÅÖ®__free_pages()º¯Êý·ÖÎö

  ¼ÇµÃÎÒÃÇÔÚÉÏÆªÎÄÕÂmem_init()·ÖÎöÖÐÌáµ½__free_page()º¯ÊýÂð£¿ÎÒÃÇÏÖÔÚÀ´ÍêÉÆËü¡£ËüµÄµ÷Óùý³ÌÊÇÕâÑùµÄ£ºmem_init()->free_all_bootmem_node():ÎÒÃÇÖªµÀÕâ¸öº¯ÊýÊÇͳ¼ÆÒ»¹²ÊÍ·ÅÁ˶àÉÙ¿ÕÏÐÒ³¡£->free_all_bootmem_core()¾ÍÊÇÔÚÕâ¸öº¯ÊýÀïÃæÏȺó¶à´Îµ÷ÓÃ__free_pages()º¯Êý¡£Ä¿µÄ¾ÍÊÇΪÁËÊÍ·Åÿ¸öÄÚ´ænodeÀïÃæÎ ......

LinuxϵͳÏÂMySQLÏà¹ØÃüÁî


Ò»¡¢×ܽáһϣº
1.LinuxϵͳÏÂÆô¶¯MySQLµÄÃüÁ
mysqladmin start
/etc/init.d/mysql start (Ç°ÃæÎªmysqlµÄ°²×°Â·¾¶)
2.linuxÏÂÖØÆômysqlµÄÃüÁ
mysqladmin restart
/etc/init.d/mysql restart (Ç°ÃæÎªmysqlµÄ°²×°Â·¾¶)
3.linuxϹرÕmysqlµÄÃüÁ
mysqladmin shutdown
/etc/init.d/mysql   shutd ......

linuxÄÚºËÇé¾°·ÖÎö{ÖÐ¶Ï ÏµÍ³µ÷Óà ÄÚ´æ}


LinuxµÄϵͳµ÷ÓÃÊÇͨ¹ýÖжÏÀ´ÊµÏֵ쬴ÓÓû§Ì¬½øÈëϵͳ̬¡£Óû§Ì¬ºÍϵͳ̬ÓкÜÇåÎúµÄÇø·Ö£¬±£Ö¤Á˰²È«¡£ÏµÍ³µ÷ÓñíÊÇϵͳµ÷ÓõÄÌø×ª±í¡£Ê¹ÓüĴæÆ÷´«µÝ²ÎÊý£¬¶ø²»ÊÇÕ»£¬ÒòΪÓû§Ì¬ÊÇÎÞ·¨·ÃÎÊϵͳջµÄ¡£µØÖ·´íÎóÊÇͨ¹ýÒ³ÃæÒì³£À´´¦ÀíµÄ¡£
LinuxÄں˲¢²»Ö§³ÖÕæÕýÒâÒåÉϵÄỊ̈߳¬
LinuxThreads
ÊÇÓÃÓëÆÕͨ½ø³Ì¾ßÓÐͬÑùÄÚºË ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ