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·½·¨Ó³Éäµ½Óû§¿Õ¼ä¡£
Ïà¹ØÎĵµ£º
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
2009
Ä꣬¼´½«¹ýÈ¥¡£»Ø¹ËÍùÊ£¬ÓиС£
½ñÄêµÚËļ¾¶È£¬¸÷´ó
Linux
·¢Ðа棨ÓÈÆäÊÇ×ÀÃæ°æ£©Ïà¼Ì·¢²¼£¬°Ñ
Linux
×ÀÃæÍÆ½øµ½Ò»¸öеÄˮƽ£¬Õ¹ÏÖÁË
L ......
µÚ1Õ Linux¸ÅÊö
ʲôÊÇLinux£¿ÔÚËùÓйØÓÚLinuxµÄÎÊÌâÖУ¬Ã»ÓбÈÕâ¸ö¸ü»ù±¾µÄÁË¡£¼òµ¥µØËµ£¬LinuxÊÇÒ»ÖÖ²Ù×÷ϵͳ£¬¿ÉÒÔ°²×°ÔÚ°üÀ¨·þÎñÆ÷¡¢¸öÈ˵çÄÔ¡¢ÄËÖÁPDA¡¢ÊÖ»ú¡¢´òÓ¡»úµÈ¸÷ÀàÉ豸ÖС£³¢ÊÔÒ»¸öеIJÙ×÷ϵͳÄÑÃâÈÃÈËÐij±ÅìÅÈ£¬Èç¹û¶ÁÕß֮ǰ»¹Ã»ÓнӴ¥¹ýLinuxµÄ»°£¬ÔÚÕýʽ¿ªÊ¼°²×°ºÍʹÓÃLinux֮ǰ£¬Ê×ÏÈÈÃ×Ô¼º·ÅËÉ£ ......
µÚ2Õ Linux°²×°Á˽âÁËLinuxµÄÀúÊ·ºÍ·¢Õ¹¹ý³Ì£¬¶ÁÕß´ó¸ÅÒѾ¼±ÇеØÏëÒª°ÑLinux°²×°µ½×Ô¼ºµÄ¼ÆËã»úÉÏ¡£ÎÞËùη¾åµÄ¶ÁÕß¿ÉÄÜÒѾÔÚÔĶÁ±¾ÕÂ֮ǰ¾Í×ö¹ýÕâÑùµÄ³¢ÊÔ¡£ÎÞÂÛÕâЩ³¢ÊÔ×îÖÕÊdzɹ¦»¹ÊÇʧ°Ü£¬¾Í´ÓÕâÀ↑ʼLinuxÖ®Âðɣ¡ ......
ARGB8888
32λɫ,ARGB8888±íʾARGB¸÷´ú±í8룬A±íʾ͸Ã÷¶È£¬µ±ÎªffʱΪ·Ç͸Ã÷£¬RGB·Ö±ðΪºìÂÌÀ¶£¬ff±íʾ×îŨ¡£
ARGB1555
16λɫ 1 λ±íʾ ͸Ã÷¶È£¬ Ö»ÄÜÏÔʾÁ½ÖÖ״̬£¬Í¸Ã÷ºÍ·Ç͸Ã÷¡£
¡¾Ê²Ã´ÊÇFrameBuffer¡¿
FrameÖ¡£ºÄãËù¿´µ½µÄÆÁÄ»µÄͼÏñ£¬»òÕßÔÚÒ»¸ö´°¿ÚÖеÄͼÏñ£¬¾Í½ÐÒ»Ö¡¡£
Buffer»º³å£ºÒ»¶ÎRAM£¬ÓÃÀ´ÔÝ´æÍ¼ÏñÊý ......