×ªÔØ linux 2.6Ï̴߳´½¨Ô´Âë·ÖÎö
linux 2.6Ï̴߳´½¨Ô´Âë·ÖÎö
ÉÏÕ½²µ½Ị̈߳¬ÏÖÔÚ¶ÔÏ̴߳´½¨µÄ´úÂëÁ÷³Ì·ÖÎöÏ¡£À´Ò»²½Ò»²½½Ò¿ªËýÉñÃØµÄÃæÉ´
linuxÄں˴´½¨Ï̺߳¯Êý kernel_thread()£¬×îÖÕ»áµ÷ÓÃdo_fork().
Ç°ÃæÌ¸µ½Ïß³ÌÒ²ÊÇÓÃtask_struct½á¹¹±íʾËüÓµÓеÄÐÅÏ¢£¬Ö»ÊÇÊǹ²Ïí½ø³ÌµÄ×ÊÔ´¡£
¸ù¾Ýclone_flags±êÖ¾£¬À´µ÷ÓÃclone()´´½¨"Ïß³Ì"£¬±íʾ¹²ÏíÄÚ´æ¡¢¹²ÏíÎļþϵͳ·ÃÎʼÆÊý¡¢¹²ÏíÎļþÃèÊö·û±í£¬ÒÔ¼°¹²ÏíÐźŴ¦Àí·½Ê½¡£
kernel_thread¶¨ÒåÔÚ/arch/kernel/process.c
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
struct pt_regs regs;
memset(®s, 0, sizeof(regs)); //°Ñ¸Ã½á¹¹µÄ±äÁ¿È«²¿Çå0
regs.ebx = (unsigned long) fn; /* ebxÖ¸Ïòº¯ÊýµØÖ· */
regs.edx = (unsigned long) arg; /* edxÖ¸Ïò²ÎÊýµØÖ· */
regs.xds = __USER_DS;
regs.xes = __USER_DS;
regs.xfs = __KERNEL_PERCPU;
regs.orig_eax = -1;
regs.eip = (unsigned long) kernel_thread_helper; /*eipÖ¸Ïò»Øµ÷º¯Êý*/
regs.xcs = __KERNEL_CS | get_kernel_rpl();
regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
/* ÀûÓÃdo_forkÀ´²úÉúÒ»¸öеÄÏß³Ì,¹²Ïí¸¸½ø³ÌµØÖ·¿Õ¼ä,²¢ÇÒ²»ÔÊÐíµ÷ÊÔ×Ó½ø³Ì */
return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, ®s, 0, NULL, NULL);
}
ÆäÖÐ__USER_DS£¬__KERNEL_PERCPU£¬__KERNEL_CS¶¼ÊÇһЩºê¶¨Òå¡£ÔÚ/linux/include/asm-i386/segment.h
extern void kernel_thread_helper(void);
Ïà¹ØÎĵµ£º
ÎÒ¶ÔÄÚÈÝ×ö³ö²¿·Öµ÷Õû¡£
ǰЩÌìÓÐÈË·¢ÌûÎÊÈç¹ûÔÚ linux ÏÂÓà eclipse ¿ª·¢
C/C++£¬ËùÒÔÎÒ¾ÍÏëдÕâôһƪÌû×Ó£¬ÒòΪһֱÔÚÓà Eclipse ×ö JAVA
¿ª·¢£¬¶ÔEclipse±È½ÏÊìϤ£¬°²×°²å¼þµ±È»Ò²²»³ÉÎÊÌâ¡£ÎÞÒâÖÐÔÚÍøÉÏ¿´µ½ÕâÆªÌû×Ó£¬¾õµÃдµÄºÜÏêϸ£¬ÎÒÒ²¾Í¾õµÃ×Ô¼ºÃ»ÓбØÒªÔÙÔÚÕâÉÏÃæÀË· ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
ÁªÏ루
Lenovo
China
£©ÔøÊǹúÈ˵Ľ¾°Á£¬ÏÖÔÚÔõÑùÁË£¿
4
ÔÂ
14
ÈÕÉÏÎ磬ÎÒÈ¥¹ú¼Ò»áÕ¹ÖÐÐÄ£¨°ÂÔË´å±±£©²Î¹Û
Intel
ÐÅÏ¢¼¼Êõ·å»á£¨
IDF
2010
£©µÄÕ¹³ö£¬Ó ......
Ëæ×ÅLinuxµÄÓ¦ÓÃÈÕÒæ¹ã·º£¬ÌرðÊÇÔÚÍøÂçÓ¦Ó÷½Ã棬ÓдóÁ¿µÄÍøÂç·þÎñÆ÷ʹÓÃLinux²Ù×÷ϵͳ¡£ÓÉÓÚLinuxµÄ×ÀÃæÓ¦ÓúÍWindowsÏà±È»¹ÓÐÒ»¶¨µÄ²î¾à£¬ËùÒÔÔÚÆóÒµÓ¦ÓÃÖÐÍùÍùÊÇLinuxºÍWindows²Ù×÷ϵͳ¹²´æÐγÉÒì¹¹ÍøÂç¡£ÔÚ·þÎñÆ÷¶Ë´ó¶àʹÓÃLinuxºÍUnixµÄ£¬Ä¿Ç°LinuxµÄÉó¤Ó¦ÓÃÁìÓòÊǵ¥Ò»Ó¦ÓõĻù´¡·þÎñÆ÷Ó¦Óã¬Æ©ÈçDNSºÍDHCP·þÎñÆ÷¡¢W ......
×÷Õߣº²ÜÖÒÃ÷,»ªÇåÔ¶¼ûǶÈëʽѧԺ½²Ê¦¡£
PCIÊÇÍâΧÉ豸»¥ÁªµÄ¼ò³Æ(Peripheral Component Interconnect)µÄ¼ò³Æ£¬×÷ΪһÖÖͨÓõÄ×ÜÏß½Ó¿Ú±ê×¼£¬ËûÔÚ¼ÆËã»úϵͳÖеõ½Á˹㷺µÄʹÓá£PCIµÄËÙ¶ÈÄܹ»´ïµ½132M/s¡£ÔÚÕâÀï¼òµ¥µÄ½éÉÜһϠlinux ÏÂPCIÇý¶¯µÄʵÏÖ¡£
ÔÚ±àдһ¸öPCIÇý¶¯µÄʱºòÎÒÃÇÏȵÃÈ·¶¨ÏµÍ³ÖÐÊÇ·ñÓÐÎÒÃǵÄÉ豸¡£Î ......
Ëæ×ÅÒ»¾äfork£¬Ò»¸öнø³ÌßÉßÉÂ䵨£¬µ«ËüÕâʱֻÊÇÀϽø³ÌµÄÒ»¸ö¿Ë¡¡£
È»ºóËæ×Åexec£¬Ð½ø³ÌÍÑÌ¥»»¹Ç£¬Àë¼Ò¶ÀÁ¢£¬¿ªÊ¼ÁËΪÈËÃñ·þÎñµÄÖ°ÒµÉúÑÄ¡£
ÈËÓÐÉúÀϲ¡ËÀ£¬½ø³ÌÒ²Ò»Ñù£¬Ëü¿ÉÒÔÊÇ×ÔÈ»ËÀÍö£¬¼´ÔËÐе½mainº¯ÊýµÄ×îºóÒ»¸ö"}"£¬´ÓÈݵØÀëÎÒÃǶøÈ¥£»Ò²¿ÉÒÔÊÇ×Ôɱ£¬×ÔɱÓÐ2ÖÖ·½
ʽ£¬Ò»ÖÖÊǵ÷ÓÃexitº¯Êý£¬Ò»ÖÖÊÇÔÚma ......