±êÇ©£º
it
·ÖÀࣺ
linux_kernel
×÷ÕߣºSam £¨Õç·å£© sam_code@hotmail.com
Sam֮ǰ¿´2.4
kernelʱ£¬³£¿´µ½List.Ò²×Ðϸ¿´ÁËһϣ¬µ«ÏÖÔÚ³¤ÆÚûÓп´kernel,ûÓÐд³ÌÐò£¬ÒѾÍü¼ÇÁ˺ܶࡣ½ñÌìÓÖ¿´Ò»¿´²¢¼Ç¼ÏÂÀ´¡£
Linux
KernelÖУ¬³£³£ÐèҪʹÓÃË«ÏòÁ´±í¡£ÔÚ~/include/linux/list.hÖУ¬¾Í¶¨ÒåÁËË«ÏòÁ´±íºÍ³£ÓõÄfunction.
Á´±íÍ·ÈçÏ£º
struct list_head {
struct list_head *next, *prev;
};
1.´´½¨Ë«ÏòÁ´±í£¨doubly linked
list£©£º
INIT_LIST_HEAD(
struct list_head
*list
)
´úÂëÈçÏ£º
static inline void INIT_LIST_HEAD(struct list_head *list)
{
list->next = list;
list->prev = list;
}
½«ListµÄÍ·ºÍβ¶¼Ö¸Ïò×ÔÉí¡£
2. Ìí¼ÓÄÚÈݵ½Ë«ÏòÁ´±í£º
2.1: ƽ³£µÄÌí¼Ó£º
2.1.1:½«ÐÂÏîÄ¿Ìí¼Óµ½listµÄÍ·²¿£¨headÖ®ºóµÚÒ»¸öλÖã©¡£×¢Ò⣬´Ë´¦headÊÇÖ¸´ËË«ÏòÁ´±íÍ·¡£
void list_add(struct list_head *new, struct list_head *head)
½«²ÎÊýÒ»£¨new£©Ìí¼Óµ½headÖ®ºó¡£Ëüµ÷ÓÃ
__list_add(new, head,
head->next);Ò²¾ÍÊÇ˵£¬°ÑnewÌí¼Óµ½headºÍhead->nextÖ®¼ä¡£
static inline void __list_add(struct
list_head * ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
Ëùν“¿¬Ä£”£¨
Model
£©¾ÍÊǰñÑùµÄÒâ˼¡£ÄÇô£¬ËÊÇ
Linux
³§ÉÌ£¨¹«ÈÏ£©µÄ°ñÑùÄØ£¿ÄãÏëÖªµÀÂð£¿
Ãû½Ð
Mandriva
S.A.
£¨ÄÏÃÀ£©µÄ
Linux
³§ÉÌ£¬Ê×ÄÔ»ú¹ØÉèÔÚ·¨¹ú°ÍÀ裬ÊÇÒ»¸öÀÏÅÆ
Linux
·¢Ðа湩ӦÉÌ£¨
1998
Äê
-
ÖÁ½ñ£©¡£ÔÚ
Linux
·¢ÐаæÈ«ÇòÅÅÃû°ñÉÏ£¬ÅÅÃûµÚÎ壬ÁÐÔÚ
Ubuntu
¡¢
Fedora
¡¢
Mint
ºÍ
OpenSUSE
Ö®ºó¡£
Mandriva
S.A.
ÊÇÒÔ¹«Ë¾Ãû³ÆÃüÃûÆäÖ÷´ò²úÆ·µÄÈ«ÇòÁìÏÈ
Linux
³§ÉÌ£¬Óû§ÊýÒÑ´ï
300
ÍòÒÔÉÏ¡£
Mandriva
µÄ¾ÓªË¼Â·£¬Ê®·Ö¼òµ¥£¬ÔÚÆä¹Ù·½ÍøÕ¾£¨
www.mandriva.com
£©µÄÊ×Ò³£¬¾ÍÊÇÍ»³öÒ»¾ä»°£º“
A
Better Operating
System”
¡£ÕâÊÇʲôÒâË¼ÄØ£¿ÔÚÕâ¾ä»°µÄÏÂÃæ×ö³öÁË×¢ÊÍ£¬ÕûÕûÆëÆëÅÅÁгö
11
¸öÒªµã£º
1
¡¢¼òµ¥£»
2
¡¢°²È«£»
3
¡¢Îȶ¨£»
4
¡¢¿ìËÙ£»
5
¡¢×ÔÓÉÈí¼þ
6
¡¢ÉçÇøÏà°é£»
7
¡¢ÃÀÀö£»
8
¡¢ÎÞ²¡¶¾£»
9
¡¢² ......
l
ÔÚ
Linux
ϱàдÆÕͨ¿ÉÖ´ÐÐÎļþµÄÃüÁ
gcc –o
Ä¿±êÎļþÃû
Ô´ÎļþÃû£¨ÁÐ±í£©
Èç¹û¹¤³Ì°üº¬¶à¸ö
.c
ºÍ
.h
ÄÇôÔÚÔ´ÎļþÃûÁбíÖÐÖ»ÁгöËùÓеÄ
.c
Îļþ
Àý£º¹¤³ÌÎļþ¼ÐÀïÓÐ
des.c
hash.c
main.c
des.h
hash .h
Òª½«ËûÃDZàÒë³É
EncApp
¿ÉÖ´ÐÐÎļþ£¬ÔòʹÓÃÏÂÃæµÄÃüÁî
gcc
–o
EncApp
des.c
hash.c
main.c
l
ÔÚ
Linux
ϱàдµ÷Óö¯Ì¬¿â»ò¾²Ì¬¿âµÄ¿ÉÖ´ÐÐÎļþµÄÃüÁ
gcc –o
Ä¿±êÎļþÃû
Ô´ÎļþÃû£¨ÁÐ±í£©¿âÎļþÃû£¨ÁÐ±í£©
Èç¹û¹¤³Ì°üº¬¶à¸ö
.c
ºÍ
.h
ÄÇôÔÚÔ´ÎļþÃûÁбíÖÐÖ»ÁгöËùÓеÄ
.c
ÎļþºÍ¿âÎļþ
Àý£º¹¤³ÌÎļþ¼ÐÀïÓÐ
main.c
enc.so
Òª½«ËûÃDZàÒë³É
EncApp
¿ÉÖ´ÐÐÎļþ£¬ÔòʹÓÃÏÂÃæµÄÃüÁî
gcc
–o
EncAp
main.c
enc.so
×¢Ò⣺
.so
Îļþ±ØÐëÊÂÏȸ´ÖƵ½
/usr/lib
Ŀ¼ÏÂ
l
Éú³É¾²Ì¬¿âÐèÒªµÄà ......
µÚһƪ¼¼Êõ²©¿Í£¬ÖÕÓÚÓÐȨ˵¡¾×ªÔØÇë×¢Ã÷³ö´¦http://user.qzone.qq.com/329331481¡¿
LinuxϵÄOCCI±à³Ì£¬Ò²ÐíÄú¼ò¼òµ¥µ¥¾ÍÊÇʵÏÖÁË£¬µ«¶ÔÓÚÒ»¸ö´Óδ½Ó´¥¹ýOracleÊý¾Ý¿â£¬Ã»ÓÐLinuxϱà³Ì¾Ñ飬һÇдÓ0ѧÆðµÄ²ËÄñÐÂÊÖÀ´Ëµ£¬µÄÈ·¿ÉνÃþÅÀ¹ö´ò£¬µ±È»£¬Ò²Ñ§µ½Á˲»ÉÙ¶«Î÷¡£
ÔÚÕâ¸ö¹ý³ÌÖУ¬Óöµ½ÁËÌ«¶àµÄÎÊÌ⣬ÔÚÍøÉÏËѵÄʱºò¸Ð¾õÕâ·½ÃæµÄ×ÊÁÏ»¹²»ÊǺܶ࣬»òÕ߱ȽÏÁãÉ¢£¬ËùÒÔ×÷´Ë×ܽᡣ
u ¿ª·¢»·¾³
Red Hat Enterprise Linux AS 4.0
gcc 3.4.3
Oracle 10g Express Edition
u ¿ª·¢²½Öè
n °²×°Oracle
´Ë²¿·Ö±¾ÈËûÓвÎÓ룬ֱ½ÓÄñðÈË×°ºÃµÄÐéÄâ»úÀ´Óõģ¬²Î¼ûÍøÉÏÆäËûÎÄÕ¡£
n °²×°gcc 3.4.3
Èç¹ûRedHat×Ô´øµÄgcc²»ÊÇ3.4.3°æ±¾£¬ÔòÐèÒª¸üе½3.4.3°æ±¾ÒÔ¼æÈÝOracleÌṩµÄOCCI¿â¡£gcc 3.4.3¿Éµã»÷ÏÂÃæµÄÁ¬½ÓÏÂÔØ£º
http://download.chinaunix.net/down.php?id=6573&ResourceID=69&site=1
ÓÉÓÚÊDZàÒë°²×°£¬ËùÒÔÔÚ°²×°Ö®Ç°£¬±ØÐë±£Ö¤ÔϵͳÖÐÒÑ´æÔÚij¸ö°æ±¾µÄgcc¡£
ÊäÈëÈçÏÂÃüÁ
# c ......
ÔÚLinuxϲ鿴ApacheµÄ¸ºÔØÇé¿ö£¬ÒÔǰҲ˵¹ý£¬×î¼òµ¥ÓÐÓÐЧµÄ·½Ê½¾ÍÊDz鿴Apache Server Status
£¨ÈçºÎ¿ªÆôApache Server Status
µãÕâÀ£¬ÔÚûÓÐ
¿ªÆôApache Server StatusµÄÇé¿öÏ£¬»ò°²×°µÄÊÇÆäËûµÄWeb Server£¬±ÈÈçNginxµÄʱºò£¬ÏÂÃæµÄÃüÁî¾ÍÌåÏÖ³ö×÷ÓÃÁË¡£
ps -ef|grep httpd|wc -l
ÃüÁî
#ps
-ef|grep httpd|wc -l
1388
ͳ¼Æhttpd½ø³ÌÊý£¬Á¬¸öÇëÇó»áÆô¶¯Ò»¸ö½ø³Ì£¬Ê¹ÓÃÓÚApache·þÎñÆ÷¡£
±íʾApacheÄܹ»´¦Àí1388¸ö²¢·¢ÇëÇó£¬Õâ¸öÖµApache¿É¸ù¾Ý¸ºÔØÇé¿ö×Ô¶¯µ÷Õû£¬ÎÒÕâ×é·þÎñÆ÷ÖÐÿ̨µÄ·åÖµÔø´ïµ½¹ý2002¡£
netstat -nat|grep -i “80″|wc -l
ÃüÁî
#netstat
-nat|grep -i “80″|wc -l
4341
netstat -an»á´òӡϵͳµ±Ç°ÍøÂçÁ´½Ó״̬£¬¶øgrep -i “80″ÊÇÓÃÀ´ÌáÈ¡Óë80¶Ë¿ÚÓйصÄÁ¬½ÓµÄ, wc -l½øÐÐÁ¬½ÓÊýͳ¼Æ¡£
×îÖÕ·µ»ØµÄÊý×Ö¾ÍÊǵ±Ç°ËùÓÐ80¶Ë¿ÚµÄÇëÇó×ÜÊý¡£
netstat -na|grep ESTABLISHED|wc -l
ÃüÁî
#netstat
-na|grep ESTABLISHED|wc -l
376
netstat -an»á´òӡϵͳµ±Ç°ÍøÂçÁ´½Ó״̬£¬¶øgrep ESTABLISHED ÌáÈ¡³öÒѽ¨Á¢Á¬½ÓµÄÐÅÏ¢¡£ È»ºówc -lͳ¼Æ¡£
×îÖÕ·µ»ØµÄÊý×Ö¾ÍÊǵ±Ç°ËùÓÐ80¶Ë¿ÚµÄÒѽ¨Á¢Á¬½ÓµÄ×ÜÊý¡£
net ......
ÔÚLinuxÖУ¬²»ÓüüÈëÓ¦ÓóÌÐòµÄÍêÕû·¾¶¶øÆô¶¯Ó¦ÓóÌÐòµÄ·½·¨£º
ÔÒò£º
Ö®ËùÒÔҪʹÓÃÍêÕû·¾¶ÃûÀ´Æô¶¯³ÌÐòÊÇÓÉÓÚ£¬¿ÉÖ´ÐÐÎļþûÓб»·ÅÖÃÔÚÄãµÄÓû§ shell »·¾³ËùÖªµÄĿ¼ÖУ¨Èç /usr/local/bin £©¡£
·½·¨£º±à¼PATH±äÁ¿
Èç¹ûÄãÐèҪƵ·±µØÆô¶¯Î»ÓÚ shell ËÑË÷µÄ·¾¶Ö®ÍâµÄ³ÌÐò£¬Äã¾ÍµÃ±à¼ÄãµÄÓû§ shell ÅäÖÃÎļþÀ´Ìí¼Ó°üº¬ÄãÏëÔËÐеÄÎļþµÄĿ¼¡£Äã¿ÉÒÔͨ¹ýÔÚÄãµÄ PATH »·¾³±äÁ¿ÖÐÌí¼Ó¸ÃĿ¼À´´ïµ½Õâ¸öÄ¿µÄ¡£
СÐÄ:ÕâÀïµÄ˵Ã÷ ½ö½ö ÊÇÓÃÓÚÆÕͨÓû§Õʺŵġ£Çë±ÜÃâÐ޸ĸùÓû§µÄ .bash_profile Ö®ÀàµÄÎļþ£¬ÒòΪËü»áÔì³ÉDZÔڵݲȫΣÏÕ¡£
²½Ö裺
1.ÔÚ shell ÌáʾÏÂÆô¶¯Ò»¸öÎı¾±à¼Æ÷£¬Èç gedit »ò vi ¡£Äã¿ÉÒÔ¼üÈëÏÂÃæµÄÃüÁîÀ´´ò¿ª½Ð×ö .bash_profile µÄÎļþ£º
gedit .bash_profile
Ä㽫»á¿´µ½Ò»Ìõ PATH ÉùÃ÷£¬ÓëÏÂÃæµÄÊä³öÏàËÆ¡£
PATH=$PATH:$HOME/bin:/usr/local/bin:
2.ÔÚÉùÃ÷µÄ½áβ´¦£¬Ìí¼Ó $HOME/seti £¬ÈçÏÂËùʾ£º
PATH=$PATH:$HOME/bin:/usr/local/bin/:$HOME/seti:
±£´æÎļþ²¢Í˳öÎı¾±à¼Æ÷¡£
3.Õâʱ£¬Äã±ã¿ÉÒÔ¼üÈëÏÂÃæµÄÃüÁîÀ´Ê¹ .bash_profile ÖеĸıäÁ¢¼´ÉúЧ£º
sou ......