Ò룺Android ±» Linux kernel ÉçȺ¿ª³ý
ÔÎÄ£ºAndroid and the Linux kernel community
ÔÚ Linux kernel 2.6.33 °æ±¾£¬Android ³ÌʽÂ룬ÒѾ±»ÒƳý¡£ºÜ¶àÈË¿ªÊ¼Ñ¯ÎÊÎÒµ½µ×·¢ÉúÁËʲôÊ£¿Android ÏÂÒ»²½ÓÖ¸ÃÔõô°ì£¿ËùÒÔ£¬ÒÔϾÍÊÇÎÒ¶ÔÕâÕû¼þÊÂÇéµÄÒâ¼û……
Ê×ÏÈ£¬ÎÒҪ˵£¬ÎÒÊǺÜϲ»¶ Android ÊÖ»úƽ̨¡£Ö±µ½ÉÏÖÜ£¬ÎÒ»¹ÊÇÿÌ죬ʹÓÃÎÒÂòµÄ developer G1£¬ËüÍêÃÀµÄÔË×÷£¬ÈÃÉíΪÓû§µÄÎҷdz£»¶Ï²¡£
´Ó¼¼ÊõµÄ½Ç¶È£¬ÎÒÒ²¶Ô Android ¸Ðµ½¸ßÐË¡£讓È˾ªÏ²£¬Google ÔËÓà Linux kernel£¬´¿´â¾ÍÓô«Í³µÄ Linux ϵͳ£¬´´Ôì³öÒ»¸ö¾ßÒÆÖ²ÐÔ£¬¶øÇÒ¿É¿¿µÄÊÖ»úƽ̨¡£Õâ¸öƽ̨ÊÇÕâÃ´ÌØ±ð£¬ÄãÉõÖÁ¿ÉÒÔÔÚÊÖ»úÉÏ£¬»»ÉÏÒ»¸ö Linux ×÷ҵϵͳµÄ image µµ£¬Á½ÖÖ°æ±¾¶¼¿ÉÔË×÷Õý³££¬ÍêÈ«²»ÐèÈκÎÐ޸ġ£
Android ͬʱҲ½â¾öÁËÊÕ»úÖÆÔìÉÌ£¬¶àÄêÒÔÀ´µÄһЩÎÊÌ⣺һ¸öÃâ·Ñ°æ±¾µÄ Java£¬¼°Ò»¸öͳһµÄÓ¦ÓóÌʽÖнé²ã£¬ÈóÌʽÈËÔ±Õë¶ÔËü¿ª·¢³öÈíÌ壬¿ÉÒÔÔÚËùÓÐ Android µÄÊÖ»úÉÏ¡£ÒòΪÕâÑù£¬ËùÓÐÏÖÓеēLinux ÊÖ»úÁªÃË”£¬²»ÊÇÒѾȺÌåÃðÍö£¬ÐÒ´æµÄÓ¦¸ÃÒ²»áºÜ¿ì¾ÍĬĬµÄÏûʧ¡£
ÕâÓÐÄÄÀï²»¶Ô£¿
·¢ÉúʲôÊ£¬Èà Android ³ÌʽÂ룬´Ó Linux ºËÐÄɾ³ý£¿¼òµ¥Ëµ£¬Ã»ÓÐÈ˹ØÐÄ Android ³ÌʽÂëÁË£¬ËùÒÔ¾ÍɾÁ˰ɡ£¾ÍÏñÎÒÒÔǰËùÉùÃ÷µÄ£¬ºËÐijÌʽÂ룬·ÖÖ§°æ±¾£¬±ØÐëŬÁ¦Õû²¢½øÖ÷Òª°æ±¾£¬²»È»¾Í»á±»É¾³ý¡£
µ«ÊǹØÓÚÕâµã£¬Óиü´óµÄÎÊÌâ´æÔÚ¡£
Android ºËÐijÌʽÂ룬²¢·ÇÖ»ÊÇÔÚ drivers/staging/android ×ÓĿ¼Ï£¬µÄ¼¸¸ö¹ÖÒìÇý¶¯³Ìʽ¶øÒÑ¡£ÎªÁËÄÜÈà Android ÔË×÷£¬ÄãÐèÒªÓÃËûÃÇÐÂÔöµÄ lock type£¬²¢ÇÒÓÃËûÃǵݲȫģʽ£¬¸ú Linux ÄÚºËÁ¬½áÉÏ¡£
ΪÁËҪд Android ÉÏʹÓÃµÄ Çý¶¯³Ìʽ£¬ÄãÐèÒªÕýÈ·µÄÕûºÏÐ嵀 lock£¬ÓÐʱ»¹Òª¸ú¹ÖÒìµÄ°²È«Ä£Ê½´ò½»µÀ¡£¶ÔÁË£¬»¹ÓÐÒ»¸öÍêÈ«²»Í¬ÏÔʾ frame buffer ¼Ü¹¹¡£
ÕâÒâνÈκÎΪ Android ƽ̨дµÄÇý¶¯³Ìʽ£¬ÒòΪ¸ú Google Äں˷ÖÖ§ÓÐÏàÒÀÐÔ£¬ËùÒԾͲ»ÄÜÕû²¢½øÖ÷ÒªÄں˷ÖÖ§£¬×îÖÕÒ²²»Äܽø kernel.org ·ÖÖ§¡£
¾ÍÒòΪÕâÑù£¬Google ÒѾÔì³ÉÐí¶àµÄÇý¶¯³Ìʽ£¬ÓëÆ½Ì¨Ïà¹ØµÄ³ÌʽÂ룬²»ÄÜÕû½øÖ÷ÒªÄں˷ÖÖ§¡£ÊµÖÊÉÏ£¬ÕâÒѾ±ä³ÉÁ˼¸¸öÖÆÔìÉÌËø£¬ËùÒÐÀµµÄÄں˷ÖÖ§¡£
ÏÖÔÚ Linux Äں˵ĵö·ÖÖ®°æ±¾£¬ÊÇÒÀÕÕ¼¸¸öÖ÷ÒªµÄ·¢Ðа汾£¬Ä¿Ç°Ïà°²ÎÞÊ¡£µ«ÊÇÒòΪ Google ²»ÏëÈÃËûÃǵijÌʽÂ룬²¢ÕûÈëÖ÷Á÷·ÖÖ§¡£Google Ëùд³öµÄÇý¶¯³Ìʽ¼°Æ½Ì¨Ïà¹ØµÄ³Ìʽ£¬±»Ëø×¡ÎÞ·¨»ØÀ¡¸øÄÚºËÉçȺ¡£ÄÚºËÉçȺ£¬ÒѾ»¨ºÜ¶àÄê±»¸æËßÕâЩ Linux ·¢Ðа汾µÄ¹«Ë¾£¬°ÑËûÃǵÄÄÚºËÕû²¢½øÀ´¡£Ö®ºóËûÃǾÍ
Ïà¹ØÎĵµ£º
//
ͬ²½ÎÊÌ⣺
¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐèҪͬ²½£¬»¥³â¡£
ÔÚÖжϣ¬ÇÀÕ¼£¬¶àCPU£¬¶àÏß³Ì »·¾³ÏÂÓÈÆäÖØÒª¡£
ͬ²½·ÖΪ: ×èÈûͬ²½£¬·Ç×èÈûͬ²½
×èÈûͬ²½ÓÐÐí¶àʵÏÖ·½Ê½ÁË£ºmutex, semaphore. ×èÈûͬ²½Ê¹Óò»µ±¾Í¿ÉÄÜÔì³ÉËÀËø£¬»îËø£¬ÓÅÏȼ¶·´×ª¡£
·Ç×èÈûͬ²½£º£¨ÏÖÔÚÁ÷ÐÐÈýÖÖ£©
wait free ºÜÄÑʵÏÖ£¬Ë¼ÏëÊDZ¾Ïß³ÌÓÐÏÞ²½¾Í ......
/*
* buffer.c ³ÌÐòÓÃÓÚ¶Ô¸ßËÙ»º³åÇø(³Ø)½øÐвÙ×÷ºÍ¹ÜÀí¡£¸ßËÙ»º³å
* ÇøÎ»ÓÚÄں˴úÂëºÍÖ÷ÄÚ´æÇøÖ®¼ä¡£
*
* |---|---|------------------|---------------------|-------------------|
* | | | * * * | &nbs ......
ÔÚ/etc/rc.d/init.d/ ´´½¨oracle10gÎļþ
touch oracle10g
chmod a+x oracle10g
[root@test~]# vi /etc/rc.d/init.d/oracle10g
#!/bin/bash
#chkconfig:345 51 49
#description:starts the oracle database deamons
#
ORACLE_HOME=/oracle/product/10.2.0/db_1
ORACLE_OWNER=oracle
case "$1" in
start)
echo ......
/*
* ¸ÃÎļþÖеÄÁ½¸öº¯Êýread_pipeºÍwrite_pipeÊÇÉϲ㺯Êý
* readºÍwriteµÄµ×²ãʵÏÖ
*/
/*
* linux/fs/pipe.c
*
* (C) 1991 Linus Torvalds
*/
#include <signal.h>
#include <linux/sched.h>
// ÄÚ´æ¹ÜÀíÍ·Îļþ¡£º¬ÓÐÒ³Ãæ´óС¶¨Òåº ......
×ªÔØ£ºhttp://www.cnblogs.com/hexapodsoft/archive/2007/04/24/724902.html
I/OÖØ¶¨ÏòÏê½â¼°Ó¦ÓÃʵÀý
1¡¢ »ù±¾¸ÅÄÕâÊÇÀí½âºóÃæµÄ֪ʶµÄǰÌᣬÇëÎñ±ØÀí½â£©
a¡¢ I/OÖØ¶¨Ïòͨ³£Óë FDÓйأ¬shellµÄFDͨ³£Îª10¸ö£¬¼´ 0¡«9£»
b¡¢ ³£ÓÃFDÓÐ3¸ö£¬Îª0£¨stdin£¬±ê×¼ÊäÈ룩¡¢1£¨stdout£¬±ê×¼Êä³ö£©¡¢2£¨stderr£¬±ê×¼´íÎóÊä ......