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

LinuxϵͳÏÂÄÚ´æÉêÇëÓ¦Óõķ½·¨Ô­Àí×ܽá

1. µØÖ·¿Õ¼äµÄ¹ÜÀí
¡¡¡¡ÎïÀíµØÖ·¶¼ÊÇÓÐÄں˹ÜÀíµÄ£¬ node-->zone-->mem_map-->page, ËùÓеÄÎïÀíÒ³Ãæ¶¼ÔÚmem_mapÊý×éÖеÄÒ³Ö¡¶ÔÓ¦£¬ È»ºó²»Í¬µÄpageÓзÖΪDMA£¬normal£¬highmemÈý¸özone¡£
¡¡¡¡ÄÚºËÏßÐÔµØÖ·¿Õ¼ä£¬ ʵ¼ÊÉÏÖ»ÊǵͶËÄÚ´æ²ÅÓÐÏßÐÔµØÖ·£¬0---896MB²¿·Ö¡£
¡¡¡¡ÄÚºËÐéÄâµØÖ·£¬ µÍ¶ËÄÚ´æµÄÐéÄâµØÖ·ÓëÏßÐÔµØÖ·ÊÇÒ»ÑùµÄ¡£ ¸ß¶ËÄÚ´æÖ»ÓÐÔÚÓ³ÉäÁËÒÔºó²ÅÓÐÐéÄâµØÖ·
¡¡¡¡Óû§¿Õ¼äµØÖ·£¬ tast_struct ---> mmap --> mm_struct ---> vm_area_struct
¡¡¡¡2.ÄÚ´æµÄÉêÇë»òʹÓÃ
¡¡¡¡ÎïÀíÄÚ´æµÄ·ÖÅ䣬 ÔÚÄÚºËÖÐ×îÖÕ¶¼Òªµ÷ÓÃ__alloc_pages().ËüÊÇ×îºËÐĵķÖÅ亯Êý£¬ÉêÇë´óС×î´ó²»³¬¹ý2µÄMAX_ORDER´ÎÃÝ£¬ÔÚÏÖÔÚºÃÏñ×î´ó¶¨ÒåΪ4MB¡£
¡¡¡¡ÏßÐÔµØÖ·£¬ kmallocºÍget_free_pages,ÏßÐÔµØÖ·£¬ ¶ÔÓ¦µÄÎïÀíÄÚ´æ¾ÍÊǵͶËÄڴ棬kmallocÊÇ»ùÓÚslabµÄ·ÖÅä¼¼Êõ£¬ ×î´ó²»Äܳ¬¹ý128KB¡£
¡¡¡¡ÐéÄâµØÖ·£¬ vmallocÉêÇ룬 ËûÖ»ÊÇÔÚÄÚºËÖн¨Á¢ÀàËÆÓëÓû§¿Õ¼äµÄvm_areaµÄÒ»¸öÐéÄâÄÚ´æ¿Õ¼äµ½vmlistÖУ¬ ×îÖÕµÄÎïÀíÄÚ´æ·ÖÅ仹ÊÇ»ùÓÚȱҳµÄ¡£
¡¡¡¡Óû§¿Õ¼äµÄÐéÄâÄڴ棬 mallocÖ®ÀàµÄ£¬ ×îÖÕÔÚÄÚºËÖж¼ÊÇdo_map()ºÍdo_brk()¡£Êµ¼ÊÉÏÒ²Ö»Êǽ¨Á¢ÁËÒ»¿éÐéÄâ¿Õ¼ä£¬×îÖÕµÄÎïÀíÄڴ滹ÊÇÔÚȱҳÒ쳣ʱ·ÖÅäµÄ¡£
¡¡¡¡3. ÄÚ´æµÄ½»»»ÎÊÌâ
¡¡¡¡ÔÚpage½á¹¹ºÍÓû§²ãµÄvm_area_struct½á¹¹ÖУ¬ ¶¼°üº¬lockedºÍreserved±êÖ¾¡£Í¨¹ýºÏÊʵÄ;¾¶ÉèÖÃÕâЩ±êÖ¾£¬ ¿ÉÒÔÊÇÒ³ÃæËø´æÔÚÎïÀíÄÚ´æÖУ¬ ²»±»½»»»³öÈ¥¡£
¡¡¡¡4. É豸ÄÚ´æ¿ÉÒÔͨ¹ýioremapÓ³Éäµ½ÄÚºËÐéÄâµØÖ·¿Õ¼ä£¬ Ò²¿ÉÒÔͨ¹ýmmap·½·¨Ó³Éäµ½Óû§¿Õ¼ä¡£


Ïà¹ØÎĵµ£º

LinuxÉ豸ģÐÍÖ®input×ÓϵͳÏê½â

Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......

1.3 LinuxµÄ·¢Ðа汾

1.3  LinuxµÄ·¢Ðа汾
Ñϸñ˵À´£¬LinuxÕâ¸ö´Ê²¢²»ÄÜÖ¸´ú±¾ÊéËùÒª½éÉܵÄÕâ¸ö£¨»òÕß˵¼¸¸ö£©²Ù×÷ϵͳ¡£Linuxʵ¼ÊÉÏÖ»¶¨ÒåÁËÒ»¸ö²Ù×÷ϵͳÄںˣ¬Õâ¸öÄÚºËÓÉkernel.org¸ºÔðά»¤¡£²»Í¬µÄÆóÒµºÍ×éÖ¯ÔÚ´Ë»ù´¡ÉÏ¿ª·¢ÁËһϵÁи¨ÖúÈí¼þ£¬´ò°ü·¢²¼×Ô¼ºµÄ“·¢Ðа汾”¡£¸÷ÖÖ·¢Ðа汾¿ÉÒÔ“·Ç³£²»Í¬”£¬È´Êǽ¨Á ......

LinuxÄÚºËͬ²½£¬½ø³Ì£¬Ïß³Ìͬ²½

°üÀ¨ÎÒ×Ô¼ºÔÚÄÚ£¬ºÜ¶àÈ˶ÔÄںˣ¬½ø³Ì£¬Ïß³Ìͬ²½¶¼²»ÊǺÜÇå³þ£¬ÏÂÃæÉÔ΢×ܽáһϣº
 
ÄÚºËͬ²½£º
Ö÷ÒªÊÇ·ÀÖ¹¶àºË´¦ÀíÆ÷ͬʱ·ÃÎÊÐÞ¸Äij¶Î´úÂ룬»òÕßÔÚ¶ÔÉ豸Çý¶¯³ÌÐò½øÐÐÁÙ½çÇø±£»¤¡£Ö÷ÒªÓÐһϼ¸ÖÖ·½Ê½£º
1. Mutex£¨»¥³â£©
Í·Îļþ£º
#include <linux/mutex.h>
³õʼ»¯·½·¨£º
DEFINE_MUTEX(name);»òÕß ......

ÈçºÎÀ´ÅжÏÄãµÄLinuxϵͳ»úÆ÷ÊÇ·ñ±»ºÚ£¿


Ë׳Ɠ½Å±¾Ð¡¹í”µÄ¼Ò»ïÊÇÊôÓÚÄÇÖÖºÜÔã¸âµÄºÚ¿Í£¬ÒòΪ»ù±¾ÉÏËûÃÇÖеÄÐí¶àºÍ´ó¶àÊýÈ˶¼ÊÇÈç´ËµÄûÓм¼ÇÉ¡£¿ÉÒÔÕâÑù˵£¬Èç¹ûÄã°²×°ÁËËùÓÐÕýÈ·µÄ²¹¶¡£¬ÓµÓо­¹ý²âÊԵķÀ»ðǽ£¬²¢ÇÒÔÚ¶à¸ö¼¶±ð¶¼¼¤»îÁËÏȽøµÄÈëÇÖ¼ì²âϵͳ£¬ÄÇôֻÓÐÔÚÒ»ÖÖÇé¿öÏÂÄã²Å»á±»ºÚ£¬ÄǾÍÊÇ£¬ÄãÌ«ÀÁÁËÒÔÖÁûȥ×ö¸Ã×öµÄÊÂÇ飬ÀýÈ磬°²×°BINDµÄ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ