1.linux.bz2解ålinux.bz
2.安卓层次结构安卓层
linux.bz2解ålinux.bz
LinuxKernel(Linuxå æ ¸)æä¹å®è£ ï¼1ãä¸è½½æ°å æ ¸æºç ï¼å°å®ç½www.kernel.orgï¼ä¸è½½ææ°çæ¬linuxå æ ¸ï¼ä¿åå°/usr/src/kernelsç®å½ï¼å¤§çº¦MBã
2ã#cd/usr/src/kernels
3ã#tarjvxflinux-2.6..5.tar.bz2
4ãè¿å ¥ç³»ç»åå æ ¸ç®å½ï¼æå ¶ä¸çéèæ件.configå¤å¶å°æ°å æ ¸ç®å½ä¸ã
5ãcdè¿å ¥æ°å æ ¸ç®å½ï¼ç¶åæ§è¡#makeoldconfigæ¤æ¶æææ示åæå车ï¼é项æ示é½é»è®¤ã
6ã#makexconfigæ¤æ¶å¼¹åºä¸ä¸ªå æ ¸é ç½®çªå£ï¼éé¢å ¨æ¯è±æï¼æçä¸æï¼å¹²èå°±ç´æ¥æè¿ä¸ªçªå£å ³æï¼ç»§ç»å¾ä¸åã
7ã#makebzImagemakemodulesmakemodules_installmakeinstall第ä¸æ¥ç¼è¯æ¶é´æ¯è¾é¿ï¼è¦å°åéä¸çï¼è¦çæºå¨æ åµäºã
8ã#uname-ræ¥çå æ ¸çæ¬ï¼å®æä¸é¢æ¥éª¤åå°±å¯ä»¥éå¯ç³»ç»äºï¼å¯å¨æ¶ä¼å¨GRUBèåéåºç°æ°å æ ¸é项äºãæ¤æ¹æ³å®è£ æ°å æ ¸ååæ¶ä¹ä¼ä¿çæ§å æ ¸ï¼å¯å¨æ¶ï¼å¯ä»¥å¨æ°èå æ ¸é´éæ©ï¼ç¸å½çå®ç¨
å¦ä½ç»linuxå®è£ æ°å æ ¸ï¼
ä¸ãè·åå æ ¸æºç
äºã解åå æ ¸æºç
é¦å 以rootå¸å·ç»å½ï¼ç¶åè¿å ¥/usr/srcåç®å½ãå¦æç¨æ·å¨å®è£ Linuxæ¶ï¼å®è£ äºå æ ¸çæºä»£ç ï¼åä¼åç°ä¸ä¸ªlinux-x.y.zçåç®å½ã该ç®å½ä¸åæ¾çå æ ¸x.y.zçæºä»£ç ãæ¤å¤ï¼è¿ä¼åç°ä¸ä¸ªæå该ç®å½çé¾æ¥linuxãå é¤è¯¥è¿æ¥ï¼ç¶åå°æ°å æ ¸çæºæ件æ·è´å°/usr/srcç®å½ä¸ï¼å¹¶è§£å:
#tarzxvfLinux-2.3..tar.gz
æ件éæ¾æååï¼å¨/usr/srcç®å½ä¸ä¼çæä¸ä¸ªlinuxåç®å½ãå ¶ä¸å å«äºå æ ¸2.3.çå ¨é¨æºä»£ç ãå°/usr/include/asmã/usr/inlude/linuxã/usr/include/scsié¾æ¥å°/usr/src/linux/includeç®å½ä¸ç对åºç®å½ä¸ã
#cd/usr/include
#rm-Rfasmlinux
#ln-s/usr/src/linux/include/asm-iasm
#ln-s/usr/src/linux/include/linuxlinux
#ln-s/usr/src/linux/include/scsiscsi
å é¤æºä»£ç ç®å½ä¸æ®çç.oæ件åå ¶å®ä»å±æ件ã
#cd/usr/src/linux
#makemrproper
ä¸.å¢éè¡¥ä¸
ææ¶ä¸éè¦å®å ¨éæ°å®è£ ï¼åªéæå¢éè¡¥ä¸ï¼ç±»ä¼¼å级ï¼å¨å æ ¸æºç æ æ ¹ç®å½è¿è¡:
patch-p1../patch-x.y.z
å.å æ ¸æºç æ ç®å½ï¼
archï¼å å«å硬件ä½ç³»ç»æç¸å ³ç代ç ï¼æ¯ç§å¹³å°å ä¸ä¸ªç¸åºçç®å½ãåä½PCç¸å ³ç代ç åæ¾å¨iç®å½ä¸ï¼å ¶ä¸æ¯è¾éè¦çå æ¬kernelï¼å æ ¸æ ¸å¿é¨åï¼ãmmï¼å å管çï¼ãmath-emuï¼æµ®ç¹åå 仿çï¼ãlibï¼ç¡¬ä»¶ç¸å ³å·¥å ·å½æ°ï¼ãbootï¼å¼å¯¼ç¨åºï¼ãpciï¼PCIæ»çº¿ï¼åpowerï¼CPUç¸å ³ç¶æï¼ã
blockï¼é¨åå设å¤é©±å¨ç¨åºã
cryptoï¼å¸¸ç¨å å¯åæ£åç®æ³ï¼å¦AESãSHAçï¼ï¼è¿æä¸äºå缩åCRCæ ¡éªç®æ³ã
Documentationï¼å ³äºå æ ¸åé¨åçéç¨è§£éå注éã
driversï¼è®¾å¤é©±å¨ç¨åºï¼æ¯ä¸ªä¸åç驱å¨å ç¨ä¸ä¸ªåç®å½ã
fsï¼åç§æ¯æçæ件系ç»ï¼å¦extãfatãntfsçã
includeï¼å¤´æ件ãå ¶ä¸ï¼åç³»ç»ç¸å ³ç头æ件被æ¾ç½®å¨linuxåç®å½ä¸ã
initï¼å æ ¸åå§å代ç ï¼æ³¨æä¸æ¯ç³»ç»å¼å¯¼ä»£ç ï¼ã
ipcï¼è¿ç¨é´éä¿¡ç代ç ã
kernelï¼å æ ¸çææ ¸å¿é¨åï¼å æ¬è¿ç¨è°åº¦ãå®æ¶å¨çï¼åå¹³å°ç¸å ³çä¸é¨å代ç æ¾å¨arch/*/kernelç®å½ä¸ã
libï¼åºæ件代ç ã
mmï¼å å管ç代ç ï¼åå¹³å°ç¸å ³çä¸é¨å代ç æ¾å¨arch/*/mmç®å½ä¸ã
netï¼ç½ç»ç¸å ³ä»£ç ï¼å®ç°äºåç§å¸¸è§çç½ç»åè®®ã
scriptsï¼ç¨äºé ç½®å æ ¸æ件çèæ¬æ件ã
securityï¼ä¸»è¦æ¯ä¸ä¸ªSELinuxç模åã
soundï¼å¸¸ç¨é³é¢è®¾å¤ç驱å¨ç¨åºçã
usrï¼å®ç°äºä¸ä¸ªcpioã
å¨iä½ç³»ä¸ï¼ç³»ç»å¼å¯¼å°ä»arch/i/kernel/head.så¼å§æ§è¡ï¼å¹¶è¿è转移å°init/main.cä¸çmain()å½æ°åå§åå æ ¸ã
äº.é ç½®å æ ¸
#cd/usr/src/linux
å æ ¸é ç½®æ¹æ³æä¸ç§ï¼
ï¼1ï¼å½ä»¤è¡:makeconfig
ï¼2ï¼èå模å¼çé ç½®çé¢:makemenuconfig
(3)Xwindow:makexconfig
Linuxçå æ ¸é ç½®ç¨åºæä¾äºä¸ç³»åé ç½®é项ã对äºæ¯ä¸ä¸ªé ç½®é项ï¼ç¨æ·å¯ä»¥"y"ã"m"æ"n"ãå ¶ä¸"y"表示å°ç¸åºç¹æ§çæ¯ææ设å¤é©±å¨ç¨åºç¼è¯è¿å æ ¸ï¼"m"表示å°ç¸åºç¹æ§çæ¯ææ设å¤é©±å¨ç¨åºç¼è¯æå¯å 载模åï¼å¨éè¦æ¶ï¼å¯ç±ç³»ç»æç¨æ·èªè¡å å ¥å°å æ ¸ä¸å»ï¼"n"表示å æ ¸ä¸æä¾ç¸åºç¹æ§æ驱å¨ç¨åºçæ¯æãç±äºå æ ¸çé ç½®é项é常å¤ï¼æ¬æåªä»ç»ä¸äºæ¯è¾éè¦çé项ã
1ãCodematurityleveloptionsï¼ä»£ç æç度é项ï¼
Promptfordevelopmentand/orincompletecode/drivers(CONFIG_EXPERIMENTAL)å¦æç¨æ·æ³è¦ä½¿ç¨è¿å¤äºæµè¯é¶æ®µç代ç æ驱å¨ï¼å¯ä»¥éæ©âyâãå¦ææ³ç¼è¯åºä¸ä¸ªç¨³å®çå æ ¸ï¼åè¦éæ©ânâã
2ãProcessortypeandfeaturesï¼å¤çå¨ç±»ååç¹è²ï¼
ï¼1ï¼ãProcessorfamily(,内核内核/Cx,/K5/5x/6x,Pentium/K6/TSC,PPro/6xMX)éæ©å¤çå¨ç±»åï¼ç¼ºç为Ppro/6xMXã
ï¼2ï¼ãMaximumPhysicalMemory(1GB,2GB)å æ ¸æ¯æçæ大å åæ°ï¼ç¼ºç为1Gã
ï¼3ï¼ãMathemulation(CONFIG_MATH_EMULATION)åå¤çå¨ä»¿çï¼ç¼ºç为ä¸ä»¿çã
ï¼4ï¼ãMTRR(MemoryTypeRangeRegister)support(CONFIG_MTRR)
éæ©è¯¥é项ï¼ç³»ç»å°çæ/proc/mtrræ件对MTRRè¿è¡ç®¡çï¼ä¾Xserver使ç¨ã
ï¼5ï¼ãSymmetricmulti-processingsupport(CONFIG_SMP)éæ©âyâï¼å æ ¸å°æ¯æ对称å¤å¤çå¨ã
3ãLoadablemodulesupportï¼å¯å 载模åæ¯æï¼
ï¼1ï¼ãEnableloadablemodulesupport(CONFIG_MODULES)éæ©âyâï¼å æ ¸å°æ¯æå 载模åã
ï¼2ï¼ãKernelmoduleloader(CONFIG_KMOD)éæ©âyâï¼å æ ¸å°èªå¨å è½½é£äºå¯å 载模åï¼å¦åéè¦ç¨æ·æå·¥å è½½ã
4ãGeneralsetupï¼ä¸è¬è®¾ç½®ï¼
ï¼1ï¼ãNetworkingsupport(CONFIG_NET)该é项设置æ¯å¦å¨å æ ¸ä¸æä¾ç½ç»æ¯æã
ï¼2ï¼ãPCIsupport(CONFIG_PCI)该é项设置æ¯å¦å¨å æ ¸ä¸æä¾PCIæ¯æã
ï¼3ï¼ãPCIaccessmode(BIOS,Direct,Any)该é项设置Linuxæ¢æµPCI设å¤çæ¹å¼ãéæ©âBIOSâï¼Linuxå°ä½¿ç¨BIOSï¼éæ©âDirectâï¼Linuxå°ä¸éè¿BIOSï¼éæ©âAnyâï¼Linuxå°ç´æ¥æ¢æµPCI设å¤ï¼å¦æ失败ï¼å使ç¨BIOSã
ï¼4ï¼Parallelportsupport(CONFIG_PARPORT)éæ©âyâï¼å æ ¸å°æ¯æå¹³è¡å£ã
5ãPlugandPlayconfigurationï¼å³æå³ç¨è®¾å¤æ¯æï¼
ï¼1ï¼ãPlugandPlaysupport(CONFIG_PNP)éæ©âyâï¼å æ ¸å°èªå¨é ç½®å³æå³ç¨è®¾å¤ã
ï¼2ï¼ãISAPlugandPlaysupport(CONFIG_ISAPNP)éæ©âyâï¼å æ ¸å°èªå¨é ç½®åºäºISAæ»çº¿çå³æå³ç¨è®¾å¤ã
6ãBlockdevicesï¼å设å¤ï¼
ï¼1ï¼ãNormalPCfloppydisksupport(CONFIG_BLK_DEV_FD)éæ©âyâï¼å æ ¸å°æä¾å¯¹è½¯ççæ¯æã
ï¼2ï¼ãEnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport(CONFIG_BLK_DEV_IDE)éæ©âyâï¼å æ ¸å°æä¾å¯¹å¢å¼ºIDE硬çãCDROMåç£å¸¦æºçæ¯æã
7ãNetworkingoptionsï¼ç½ç»é项ï¼
ï¼1ï¼ãPacketsocket(CONFIG_PACKET)éæ©âyâï¼ä¸äºåºç¨ç¨åºå°ä½¿ç¨Packetåè®®ç´æ¥åç½ç»è®¾å¤é讯ï¼èä¸éè¿å æ ¸ä¸çå ¶å®ä¸ä»åè®®ã
ï¼2ï¼ãNetworkfirewalls(CONFIG_FIREWALL)éæ©âyâï¼å æ ¸å°æ¯æé²ç«å¢ã
ï¼3ï¼ãTCP/IPnetworking(CONFIG_INET)éæ©âyâï¼å æ ¸å°æ¯æTCP/IPåè®®ã
ï¼4ï¼TheIPXprotocol(CONFIG_IPX)éæ©âyâï¼å æ ¸å°æ¯æIPXåè®®ã
ï¼5ï¼ãAppletalkDDP(CONFIG_ATALK)éæ©âyâï¼å æ ¸å°æ¯æAppletalkDDPåè®®ã
8ãSCSIsupportï¼SCSIæ¯æï¼
å¦æç¨æ·è¦ä½¿ç¨SCSI设å¤ï¼å¯é ç½®ç¸åºé项ã
9ãNetworkdevicesupportï¼ç½ç»è®¾å¤æ¯æï¼
Networkdevicesupport(CONFIG_NETDEVICES)éæ©âyâï¼å æ ¸å°æä¾å¯¹ç½ç»é©±å¨ç¨åºçæ¯æã
ãEthernet(orMbit)ï¼MæM以太ç½ï¼
å¨è¯¥é¡¹è®¾ç½®ä¸ï¼ç³»ç»æä¾äºè®¸å¤ç½å¡é©±å¨ç¨åºï¼ç¨æ·åªè¦éæ©èªå·±çç½å¡é©±å¨å°±å¯ä»¥äºãæ¤å¤ï¼ç¨æ·è¿å¯ä»¥æ ¹æ®éè¦ï¼å¨å æ ¸ä¸å å ¥å¯¹FDDIãPPPãSLIPåæ 线LANï¼WirelessLANï¼çæ¯æã
ãCharacterdevicesï¼å符设å¤ï¼
ï¼1ï¼ãVirtualterminal(CONFIG_VT)éæ©âyâï¼å æ ¸å°æ¯æèæç»ç«¯ã
ï¼2ï¼ãSupportforconsoleonvirtualterminal(CONFIG_VT_CONSOLE)
éæ©âyâï¼å æ ¸å¯å°ä¸ä¸ªèæç»ç«¯ç¨ä½ç³»ç»æ§å¶å°ã
ï¼3ï¼ãStandard/generic(dumb)serialsupport(CONFIG_SERIAL)
éæ©âyâï¼å æ ¸å°æ¯æ串è¡å£ã
ï¼4ï¼ãSupportforconsoleonserialport(CONFIG_SERIAL_CONSOLE)
éæ©âyâï¼å æ ¸å¯å°ä¸ä¸ªä¸²è¡å£ç¨ä½ç³»ç»æ§å¶å°ã
ãMiceï¼é¼ æ ï¼
PS/2mouse(aka"auxiliarydevice")support(CONFIG_PSMOUSE)å¦æç¨æ·ä½¿ç¨çæ¯PS/2é¼ æ ï¼å该é项åºè¯¥éæ©âyâã
ãFilesystemsï¼æ件系ç»ï¼
ï¼1ï¼ãQuotasupport(CONFIG_QUOTA)éæ©âyâï¼å æ ¸å°æ¯æç£çéé¢ã
ï¼2ï¼ãKernelautomountersupport(CONFIG_AUTOFS_FS)éæ©âyâï¼å æ ¸å°æä¾å¯¹automounterçæ¯æï¼ä½¿ç³»ç»å¨å¯å¨æ¶èªå¨mountè¿ç¨æ件系ç»ã
ï¼3ï¼ãDOSFATfssupport(CONFIG_FAT_FS)éæ©âyâï¼å æ ¸å°æ¯æDOSFATæ件系ç»ã
ï¼4ï¼ãISOCDROMfilesystemsupport(CONFIG_ISO_FS)
éæ©âyâï¼å æ ¸å°æ¯æISOCDROMæ件系ç»ã
ï¼5ï¼ãNTFSfilesystemsupport(readonly)(CONFIG_NTFS_FS)
éæ©âyâï¼ç¨æ·å°±å¯ä»¥ä»¥åªè¯»æ¹å¼è®¿é®NTFSæ件系ç»ã
ï¼6ï¼ã/procfilesystemsupport(CONFIG_PROC_FS)/procæ¯åæ¾Linuxç³»ç»è¿è¡ç¶æçèææ件系ç»ï¼è¯¥é¡¹å¿ é¡»éæ©âyâã
ï¼7ï¼ãSecondextendedfssupport(CONFIG_EXT2_FS)EXT2æ¯Linuxçæ åæ件系ç»ï¼è¯¥é¡¹ä¹å¿ é¡»éæ©âyâã
ãNetworkFileSystemsï¼ç½ç»æ件系ç»ï¼
ï¼1ï¼ãNFSfilesystemsupport(CONFIG_NFS_FS)éæ©âyâï¼å æ ¸å°æ¯æNFSæ件系ç»ã
ï¼2ï¼ãSMBfilesystemsupport(tomountWfWsharesetc.)(CONFIG_SMB_FS)
éæ©âyâï¼å æ ¸å°æ¯æSMBæ件系ç»ã
ï¼3ï¼ãNCPfilesystemsupport(tomountNetWarevolumes)(CONFIG_NCP_FS)
éæ©âyâï¼å æ ¸å°æ¯æNCPæ件系ç»ã
ãPartitionTypesï¼ååºç±»åï¼
该é项æ¯æä¸äºä¸å¤ªå¸¸ç¨çååºç±»åï¼ç¨æ·å¦æéè¦ï¼å¨ç¸åºçé项ä¸éæ©âyâå³å¯ã
ãConsoledriversï¼æ§å¶å°é©±å¨ï¼
VGAtextconsole(CONFIG_VGA_CONSOLE)éæ©âyâï¼ç¨æ·å°±å¯ä»¥å¨æ åçVGAæ¾ç¤ºæ¹å¼ä¸ä½¿ç¨Linuxäºã
ãSoundï¼å£°é³ï¼
Soundcardsupport(CONFIG_SOUND)éæ©âyâï¼å æ ¸å°±å¯æä¾å¯¹å£°å¡çæ¯æã
ãKernelhackingï¼å æ ¸çè§ï¼
MagicSysRqkey(CONFIG_MAGIC_SYSRQ)éæ©âyâï¼ç¨æ·å°±å¯ä»¥å¯¹ç³»ç»è¿è¡é¨åæ§å¶ãä¸è¬æ åµä¸éæ©ânâã
å ãç¼è¯å æ ¸
ï¼ä¸ï¼ã建ç«ç¼è¯æ¶æéçä»å±æ件
#cd/usr/src/linux
#makedep
ï¼äºï¼ãæ¸ é¤å æ ¸ç¼è¯çç®æ æ件
#makeclean
ï¼ä¸ï¼ãç¼è¯å æ ¸
#makezImage
å æ ¸ç¼è¯æååï¼ä¼å¨/usr/src/linux/arch/i/bootç®å½ä¸çæä¸ä¸ªæ°å æ ¸çæ åæ件zImageãå¦æç¼è¯çå æ ¸å¾å¤§çè¯ï¼ç³»ç»ä¼æç¤ºä½ ä½¿ç¨makebzImageå½ä»¤æ¥ç¼è¯ãè¿æ¶ï¼ç¼è¯ç¨åºå°±ä¼çæä¸ä¸ªåå«bzImageçå æ ¸æ åæ件ã
ï¼åï¼ãç¼è¯å¯å 载模å
å¦æç¨æ·å¨é ç½®å æ ¸æ¶è®¾ç½®äºå¯å 载模åï¼åéè¦å¯¹è¿äºæ¨¡åè¿è¡ç¼è¯ï¼ä»¥ä¾¿å°æ¥ä½¿ç¨insmodå½ä»¤è¿è¡å è½½ã
#makemodules
#makemodelus_install
ç¼è¯æååï¼ç³»ç»ä¼å¨/lib/modulesç®å½ä¸çæä¸ä¸ª2.3.åç®å½ï¼éé¢åæ¾çæ°å æ ¸çææå¯å 载模åã
ä¸ãå¯å¨æ°å æ ¸
ï¼ä¸ï¼ãå°æ°å æ ¸åSystem.mapæ件æ·è´å°/bootç®å½ä¸
#cp/usr/src/linux/arch/i/boot/bzImage/boot/vmlinuz-2.3.
#cp/usr/src/linux/System.map/boot/System.map-2.3.
#cd/boot
#rm-fSystem.map
#ln-sSystem.map-2.3.System.map
ï¼äºï¼ãé ç½®/etc/lilo.confæ件ãå¨è¯¥æ件ä¸å å ¥ä¸é¢å è¡ï¼
default=linux-2.3.
image=/boot/vmlinuz-2.3.
label=linux-2.3.
root=/dev/hda1
read-only
ï¼ä¸ï¼ã使æ°é ç½®çæ
#/sbin/lilo
ï¼åï¼ãéæ°å¯å¨ç³»ç»
#/sbin/reboot
æ°å æ ¸å¦æä¸è½æ£å¸¸å¯å¨ï¼ç¨æ·å¯ä»¥å¨LILO:æ示符ä¸å¯å¨æ§å æ ¸ãç¶åæ¥åºæ éåå ï¼éæ°ç¼è¯æ°å æ ¸å³å¯ã
CDlinuxéå¯å¨æ示cantfindoutwherecdlinuxisinstalledï¼
æå·²ç»è§£å³äºæç¨grub4doså¼å¯¼ï¼ç®å½å¦ä¸H:LinuxCDlinuxCDlinux-0.9.7.1.isomenu.lstå¦ä¸ï¼titlefindandbootCDlinux-0.9.7.1.isofallback3find--set-root/Linux/CDlinux/BZIMAGEkernel/Linux/CDlinux/BZIMAGEquietCDL_LANG=zh_CN.UTF-8CDL_GUI=yesCDL_AMOUNT=yesCDL_DIR=/Linux/CDlinuxCDL_IMG=CDlinux-0.9.7.1.isoinitrd/Linux/CDlinux/INITRD注ææCDéçBZIMAGEãINITRD解ååºæ¥æ¾å°CDlinuxç®å½ä¸
安卓层次结构安卓层
Android系统架构分为哪四个层次,每一层所提供的源码基本功能是什么?1.操作系统层(OS)
Android使用Linux2.6作为操作系统,Linux2.6是开源一种标准的技术,Linux也是内核内核一个开放的操作系统。Android对操作系统的源码使用包括核心和驱动程序两部分,Android的开源c 项目源码Linux核心为标准的Linux2.6内核,Android更多的内核内核是需要一些与移动设备相关的驱动程序。
2.各种库(Libraries)和Android运行环境(RunTime)
本层次对应一般嵌入式系统,源码相当于中间件层次。开源Android的内核内核本层次分成两个部分一个是各种库,另一个是源码Android运行环境。
3.应用程序框架(ApplicationFramework)
Android的开源应用程序框架为应用程序层的开发者提供APIs,它实际上是内核内核一个应用程序的框架。
4.应用程序(Application)
Android的源码应用程序主要是用户界面(UserInterface)方面的,通常以JAVA程序编写,开源其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。
安卓框架有哪些?
android应用开发框架是ApplicationFramework.其系统架构由5部分组成,分别是:LinuxKernel、AndroidRuntime、金宝盒源码Libraries、ApplicationFramework、Applications。
第二部分将详细介绍这5个部分。下面自底向上分析各层。Android架构1、LinuxKernelAndroid基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。
LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是webflux 源码分析说各层各尽其职,各层提供固定的SAP(ServiceAccessPoint),专业点可以说是高内聚、低耦合。如果你只是做应用开发,就不需要深入了解LinuxKernel层。
安卓系统英文是什么?
系统Android是基于Linux开放性内核的操作系统,是Google公司在年月5日公布的手机操作系统。早期由原名为"Android"的公司开发,谷歌在年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的要涨停源码智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:华为、中兴、联想等。编辑本段系统架构应用程序Android以Java为编程语言,从接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。js优雅源码View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的Widgets,其实Widget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的widget。至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。中介软件操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是雏形的。年Skia公司被Google收购,年初,SkiaGL源码被公开,目前Skia也是GoogleChrome的图形引擎。Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。硬件抽像层Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework的开发能在不考量驱动程序实现的前提下进行发展。HALstub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数(operations),并由Androidruntime向HAL取得stub的operations,再callback这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即moduleID,就可以取得操作函数。编程语言Android是运行于Linuxkernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNUGPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linuxdriver与Linuxkernel彻底分开。bionic/libc/kernel/并非标准的kernelheaderfiles。Android的kernelheader是利用工具由Linuxkernelheader所产生的,这样做是为了保留常数、数据结构与宏。目前Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagement),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型(DriverModel)等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。编辑本段系统版本很多玩家用户可能会奇怪:“为什么Android会用甜点作为它们系统版本的代号?”这个命名方法开始于Andoird1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照个字母数序:纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢。