Linux ÄÚ´æ¹ÜÀí ¸ß¶ËÄÚ´æµÄÓ³É䷽ʽ
½âÊÍÒ»:
¸ß¶ËÄÚ´æÊÇÖ¸ÎïÀíµØÖ·´óÓÚ 896M µÄÄÚ´æ¡£
¶ÔÓÚÕâÑùµÄÄڴ棬ÎÞ·¨ÔÚ“ÄÚºËÖ±½ÓÓ³Éä¿Õ¼ä”½øÐÐÓ³Éä¡£
Ϊʲô£¿
ÒòΪ“ÄÚºËÖ±½ÓÓ³Éä¿Õ¼ä”×î¶àÖ»ÄÜ´Ó 3G µ½ 4G£¬Ö»ÄÜÖ±½ÓÓ³Éä 1G ÎïÀíÄڴ棬¶ÔÓÚ´óÓÚ 1G µÄÎïÀíÄڴ棬ÎÞÄÜΪÁ¦¡£
ʵ¼ÊÉÏ£¬“ÄÚºËÖ±½ÓÓ³Éä¿Õ¼ä”Ò²´ï²»µ½ 1G£¬ »¹µÃÁôµãÏßÐÔ¿Õ¼ä¸ø“Äں˶¯Ì¬Ó³Éä¿Õ¼ä” ÄØ¡£
Òò´Ë£¬Linux ¹æ¶¨“ÄÚºËÖ±½ÓÓ³Éä¿Õ¼ä” ×î¶àÓ³Éä 896M ÎïÀíÄÚ´æ¡£
¶Ô Óڸ߶ËÄڴ棬¿ÉÒÔͨ¹ý alloc_page() »òÕ߯äËüº¯Êý»ñµÃ¶ÔÓ¦µÄ page£¬µ«ÊÇÒªÏë·ÃÎÊʵ¼ÊÎïÀíÄڴ棬»¹µÃ°Ñ page
תΪÏßÐÔµØÖ·²ÅÐУ¨ÎªÊ²Ã´£¿ÏëÏë MMU ÊÇÈçºÎ·ÃÎÊÎïÀíÄÚ´æµÄ£©£¬Ò²¾ÍÊÇ˵£¬ÎÒÃÇÐèҪΪ¸ß¶ËÄÚ´æ¶ÔÓ¦µÄ page
ÕÒÒ»¸öÏßÐԿռ䣬Õâ¸ö¹ý³Ì³ÆÎª¸ß¶ËÄÚ´æÓ³Éä¡£
¸ß¶ËÄÚ´æÓ³ÉäÓÐÈýÖÖ·½Ê½£º
1¡¢Ó³Éäµ½“Äں˶¯Ì¬Ó³Éä¿Õ¼ä”
ÕâÖÖ·½Ê½ºÜ¼òµ¥£¬ÒòΪͨ¹ý vmalloc() £¬ÔÚ”Äں˶¯Ì¬Ó³Éä¿Õ¼ä“ÉêÇëÄÚ´æµÄʱºò£¬¾Í¿ÉÄܴӸ߶ËÄÚ´æ»ñµÃÒ³Ãæ£¨²Î¿´ vmalloc µÄʵÏÖ£©£¬Òò´Ë˵¸ß¶ËÄÚ´æÓпÉÄÜÓ³Éäµ½”Äں˶¯Ì¬Ó³Éä¿Õ¼ä“ ÖС£
2¡¢ÓÀ¾ÃÄÚºËÓ³Éä
Èç¹ûÊÇͨ¹ý alloc_page() »ñµÃÁ˸߶ËÄÚ´æ¶ÔÓ¦µÄ page£¬ÈçºÎ¸øËüÕÒ¸öÏßÐԿռ䣿
ÄÚºËרÃÅΪ´ËÁô³öÒ»¿éÏßÐԿռ䣬´Ó
PKMAP_BASE µ½
FIXADDR_START £¬ÓÃÓÚÓ³Éä¸ß¶ËÄÚ´æ¡£ÔÚ
2.4 ÄÚºËÉÏ£¬Õâ¸öµØÖ··¶Î§ÊÇ
4G-8M µ½
4G-4M Ö®¼ä¡£Õâ¸ö¿Õ¼äÆð½Ð“ÄÚºËÓÀ¾ÃÓ³Éä¿Õ¼ä”»òÕß“ÓÀ¾ÃÄÚºËÓ³Éä¿Õ¼ä”
Õâ¸ö¿Õ¼äºÍÆäËü¿Õ¼äʹÓÃͬÑùµÄҳĿ¼±í£¬¶ÔÓÚÄÚºËÀ´Ëµ£¬¾ÍÊÇ
swapper_pg_dir£¬¶ÔÆÕͨ½ø³ÌÀ´Ëµ£¬Í¨¹ý CR3 ¼Ä´æÆ÷Ö¸Ïò¡£
ͨ³£Çé¿öÏ£¬Õâ¸ö¿Õ¼äÊÇ
4M ´óС£¬Òò´Ë½ö½öÐèÒªÒ»¸öÒ³±í¼´¿É£¬ÄÚºËͨ¹ýÀ´ pkmap_page_table ѰÕÒÕâ¸öÒ³±í¡£
ͨ¹ý kmap()£¬ ¿ÉÒÔ°ÑÒ»¸ö page Ó³Éäµ½Õâ¸ö¿Õ¼äÀ´
ÓÉÓÚÕâ¸ö¿Õ¼äÊÇ
4M ´óС£¬×î¶àÄÜͬʱӳÉä
1024 ¸ö
page¡£Òò´Ë£¬¶ÔÓÚ²»Ê¹ÓõĵÄ
page£¬¼°Ó¦¸Ãʱ´ÓÕâ¸ö¿Õ¼äÊͷŵô£¨Ò²¾ÍÊǽâ³ýÓ³Éä¹ØÏµ£©£¬Í¨¹ý
kunmap() £¬¿ÉÒÔ°ÑÒ»¸ö page ¶ÔÓ¦µÄÏßÐÔµØÖ·´ÓÕâ¸ö¿Õ¼äÊͷųöÀ´¡£
3¡¢ÁÙʱӳÉä
ÄÚºËÔÚ
FIXADDR_START µ½
FIXADDR_TOP Ö®¼ä±£ÁôÁËһЩÏßÐÔ¿Õ¼äÓÃÓÚÌØÊâÐèÇó¡£Õâ¸ö¿Õ¼ä³ÆÎª“¹Ì¶¨Ó³Éä¿Õ¼ä”
ÔÚÕâ¸ö¿Õ¼äÖУ¬ÓÐÒ»²¿·ÖÓÃÓڸ߶ËÄÚ´æµÄÁÙʱӳÉä¡£
Õâ¿é¿Õ¼ä¾ßÓÐÈçÏÂÌØµã£º
1¡¢
ÿ¸ö
CPU Õ¼ÓÃÒ»¿é¿Õ¼ä
2¡¢
ÔÚÿ¸ö
CPU Õ¼ÓõÄÄÇ¿é¿Õ¼äÖУ¬ÓÖ·ÖΪ¶à¸öС
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
Ö±½ÓÔÚÖÕ¶ËÊäÈëtopÃüÁî¾ÍÐÐ
µÚÒ»ÐУ¬ºÜÈÝÒ׿´³öÀ´Á˰É
¼òµ¥ËµÒ»ÏÂload average: * * *
µÚÒ»¸öÊýÊÇ£ºÆ½¾ù£µ·ÖÖÓÒÔÄÚÓжàÉÙ½ø³ÌÔÚ¾ºÕù£Ã£Ð£Õ
µÚ¶þ¸öÊýÊÇ£ºÆ½¾ù£±£°·ÖÖÓÒÔÄÚÓжàÉÙ½ø³ÌÔÚ¾ºÕù£Ã£Ð£Õ
µÚÈý¸öÊýÊÇ£ºÆ½¾ù£±£µ·ÖÖÓÒÔÄÚÓжàÉÙ½ø³ÌÔÚ¾ºÕù£Ã£Ð£Õ
µÚ¶þÐУº
Tasks: *
¶àÉÙ¸öÈÎÎñÊ ......
·þÎñÆ÷¶Ë£º
½¨Á¢socket£¬±¾µØµØÖ·°ó¶¨bind£¬È»ºó½¨Á¢¼àÌý£¬Èç¹ûÓпͻ§¶ËÇëÇóÔòÏìÓ¦Ö®£¬È»ºó½øÐÐÊý¾ÝµÄ·¢ËͺͽÓÊÕ
Ô´´úÂë:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/time.h&g ......
´ó¼ÒÖªµÀLinuxÖд´½¨×Ó½ø³ÌµÄÒ»¸öºÜºÃµÄ·½·¨ÊǺ¯Êýµ÷ÓÃfork,µ«ÊǺܶà³õѧÕß¶ÔforkµÄÀí½âÉÏ¿ÉÄÜÓеãÀ§ÄÑ¡£ÏÂÃæ¾Ù¸öÀý×ÓÀ´¿´¿´forkµÄÓ÷¨°É¡£
Æäʵ£¬´ó¼ÒÓÃforkµÄʱºò¼ÇסforkÊÇ“·Ö²æ”µÄÒâ˼¾ÍºÜºÃÀí½âÁË¡£
  ......