Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

×ªÔØ 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(&regs, 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, &regs, 0, NULL, NULL);
}
ÆäÖÐ__USER_DS£¬__KERNEL_PERCPU£¬__KERNEL_CS¶¼ÊÇһЩºê¶¨Òå¡£ÔÚ/linux/include/asm-i386/segment.h
extern void kernel_thread_helper(void); 


Ïà¹ØÎĵµ£º

Fedora Linux ϰ²×°ÅäÖÃC¿ª·¢»·¾³Code::Blocks


Ò»¡¢ÌáǰµÄ»°
¡¡¡¡ÒªËµCÓïÑÔºÍLinuxµÄ¹ØÏµ´ó¼ÒÓ¦¸Ã¶¼²»»áİÉú£¬LinuxϵͳÄں˾ÍÊÇÓÃCÓïÑÔ¿ª·¢µÄ£¬ËùÒÔËùÓеÄLinuxϵͳÏÂÃæ ¶¼»áÓÐCµÄ±àÒëµ÷ÊÔ¹¤¾ß£¬²»¹ýÕâЩ¹¤¾ß¶¼ÊÇÃüÁîʽµÄ£¬Õýʽ¿ª·¢µÄ»°»áºÜ²»·½±ã¡£FedoraÔÚ°²×°µÄʱºò¿ÉÒÔÑ¡Ôñ°²×°Fedora Eclipse£¬Õâ¸öIDEºÜÇ¿´ó£¬C£¬C++£¬Java£¬PythonµÈµÈ¶¼Ö§³Ö£¬¶øÇÒ±àÒ룬µ÷ÊÔºÍ ......

Ïê½âLinuxϰ²×°EclipseºÍCDT¿ª·¢C/C++

ÎÒ¶ÔÄÚÈÝ×ö³ö²¿·Öµ÷Õû¡£
         Ç°Ð©ÌìÓÐÈË·¢ÌûÎÊÈç¹ûÔÚ linux ÏÂÓà eclipse ¿ª·¢
C/C++£¬ËùÒÔÎÒ¾ÍÏëдÕâôһƪÌû×Ó£¬ÒòΪһֱÔÚÓà Eclipse ×ö JAVA
¿ª·¢£¬¶ÔEclipse±È½ÏÊìϤ£¬°²×°²å¼þµ±È»Ò²²»³ÉÎÊÌâ¡£ÎÞÒâÖÐÔÚÍøÉÏ¿´µ½ÕâÆªÌû×Ó£¬¾õµÃдµÄºÜÏêϸ£¬ÎÒÒ²¾Í¾õµÃ×Ô¼ºÃ»ÓбØÒªÔÙÔÚÕâÉÏÃæÀË· ......

linuxϵͳÎļþ½éÉÜ


linuxϵͳÎļþ½éÉÜ
 
 
Îļþϵͳ·ÖΪÐí¶à²¿·Ö£¬Í¨³£´Ó¸ùÎļþϵͳÓУº /bin , /lib , /etc , /dev ,
¼°Ò»Ð©ÆäËû£» /usr Îļþϵͳ°üº¬³ÌÐòºÍ²»¸Ä±äµÄÊý¾Ý£» /var Îļþϵͳ°üº¬¸Ä±äµÄÊý¾Ý(ÀýÈçlogÎļþ)£» /home
Îļþϵͳ°üº¬Ã¿¸öÓû§µÄ¸öÈËÎļþ¡£
ÿ̨»úÆ÷¶¼ÓиùÎļþϵͳ/
(Ò»°ãÔÚ±¾µØÅÌÖУ¬µ±È»Ò²¿ÉÒÔÔ ......

win32´íÎóÂëºÍlinuxµÄ´íÎóÂëµÄ¼òµ¥×ª»»

ÎÒÃÇÖªµÀ£¬ÔÚlinuxÏ£¬ÎÒÃÇÓÃerrnoÀ´²é¿´API·µ»ØµÄ´íÎóÂ룬²¢ÓÃstrerror(errno)À´»ñµÃ´íÎóÐÅÏ¢¡£
¶øÔÚwindowsÏÂÒ²ÓÐÕâµÄ´íÎóÂ룬¿ÉÒÔÓÃGetLastError
À´»ñµÃ£¬ÔÚwindowsÏ£¬Òª»ñµÃ´íÎóÂë¶ÔÓ¦µÄÐÅÏ¢¾ÍûÓÐlinuxÏÂÄÇô·½±ãÁË¡£
Æä»ñµÃ·½Ê½¿ÉÒԲο¼¡¶windowsºËÐıà³Ì¡·¡£
µ«ÎÒÃÇÒ²¿ÉÒÔÓÃlinuxϵÄapiÀ´»ñµÃwindowsϵĴíÎóÐ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ