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·½·¨Ó³Éäµ½Óû§¿Õ¼ä¡£
Ïà¹ØÎĵµ£º
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
20.1 LinuxÄÚºËÒÆÖ²Òªµã
LinuxµÄ´úÂëÍêÈ«¿ª·ÅÒÔ¼°ÆäÁ¼ºÃµÄ½á¹¹Éè¼Æ·Ç³£ÊÊÓÚǶÈëʽϵͳ¡£ÒÆÖ²Linuxϵͳ°üÀ¨Äںˡ¢³ÌÐò¿âºÍÓ¦ÓóÌÐò£¬ÆäÖÐ×îÖ÷ÒªµÄ¾ÍÊÇÄÚºËÒÆÖ²¡£ÓÉÓÚLinuxÄں˵Ŀª·ÅÐÔ£¬³öÏÖÁËÐí¶àÕë¶ÔǶÈëʽӲ¼þϵͳµÄÄں˰汾£¬ÆäÖÐÖøÃûµÄ°üÀ¨μcLinux¡¢RT-LinuxµÈ¡£
Linux±¾Éí¶ÔÄÚ´æ¹ÜÀí£¨MMU£©ÓкܺõÄÖ§³Ö¡£Ò ......
1.3 LinuxµÄ·¢Ðа汾
Ñϸñ˵À´£¬LinuxÕâ¸ö´Ê²¢²»ÄÜÖ¸´ú±¾ÊéËùÒª½éÉܵÄÕâ¸ö£¨»òÕß˵¼¸¸ö£©²Ù×÷ϵͳ¡£Linuxʵ¼ÊÉÏÖ»¶¨ÒåÁËÒ»¸ö²Ù×÷ϵͳÄںˣ¬Õâ¸öÄÚºËÓÉkernel.org¸ºÔðά»¤¡£²»Í¬µÄÆóÒµºÍ×éÖ¯ÔÚ´Ë»ù´¡ÉÏ¿ª·¢ÁËһϵÁи¨ÖúÈí¼þ£¬´ò°ü·¢²¼×Ô¼ºµÄ“·¢Ðа汾”¡£¸÷ÖÖ·¢Ðа汾¿ÉÒÔ“·Ç³£²»Í¬”£¬È´Êǽ¨Á ......
1.4 InternetÉϵÄLinux×ÊÔ´
InternetÉÏÓÀÔ¶¶¼²»È±ÉÙLinux×ÊÔ´£¬³ýÁË1.3.1½ÚÁгöµÄ¸÷·¢ÐаæµÄ¹Ù·½ÍøÕ¾Í⣬»¹Óкܶà×éÖ¯ºÍ¸öÈ˽¨Á¢Á˸÷ÖÖLinuxÍøÕ¾ºÍÂÛ̳£¬ÕâЩ×ÊԴΪLinuxÓû§ÌṩÁË´óÁ¿Ö§³Ö¡£¾³£¹â¹ËÕâЩµØ·½²¢¼°Ê±Êµ¼ùÊÇѧϰLinuxµÄ×îºÃ;¾¶¡£±í1.2ºÍ±í1.3·Ö±ðÁгöÁ˹úÍâºÍ¹úÄڵij£ÓÃLinuxÕ¾µã¡£
±í1.2 ³£Ó ......
°üÀ¨ÎÒ×Ô¼ºÔÚÄÚ£¬ºÜ¶àÈ˶ÔÄںˣ¬½ø³Ì£¬Ïß³Ìͬ²½¶¼²»ÊǺÜÇå³þ£¬ÏÂÃæÉÔ΢×ܽáһϣº
ÄÚºËͬ²½£º
Ö÷ÒªÊÇ·ÀÖ¹¶àºË´¦ÀíÆ÷ͬʱ·ÃÎÊÐÞ¸Äij¶Î´úÂ룬»òÕßÔÚ¶ÔÉ豸Çý¶¯³ÌÐò½øÐÐÁÙ½çÇø±£»¤¡£Ö÷ÒªÓÐһϼ¸ÖÖ·½Ê½£º
1. Mutex£¨»¥³â£©
Í·Îļþ£º
#include <linux/mutex.h>
³õʼ»¯·½·¨£º
DEFINE_MUTEX(name);»òÕß ......