×ªÔØ 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);
Ïà¹ØÎĵµ£º
Fedora8----------VMWare6.03 build-80004
1. host(win)-guest(fedora)¹²ÏíÎļþ¼Ð
ÔÚVMWareÖÐÉèÖù²ÏíÎļþ¼Ð
Ñ¡Ôñvmware workstation³ÌÐò²Ëµ¥ÖÐVM > install VMware tools...
#mkdir /mnt/cdrom
#mount -t iso9660 /dev/cdrom /mnt/cdrom£¨vmtoolsµÄ°²×°Îļþ·ÅÔÚvmwareÐéÄâµÄcdromÖУ¬Ê×ÏÈÒªmoun ......
Èç¹ûÄú¸Õ½Ó´¥Ç¶Èëʽ¿ª·¢£¬ÄÇô´óÁ¿¿ÉÓõÄÒýµ¼×°ÔسÌÐò£¨bootloader£©¡¢¹æÄ£ËõСµÄ·Ö·¢°æ
£¨distribution£©¡¢ÎļþϵͳºÍ GUI
¿´ÆðÀ´¿ÉÄÜÌ«¶àÁË¡£µ«ÊÇÕâЩ·á¸»µÄÑ¡Ïîʵ¼ÊÉÏÊÇÒ»ÖÖ¶÷´Í£¬ÔÊÐíÄúµ÷Õû¿ª·¢»òÓû§»·¾³ÒÔÍêÈ«·ûºÏÄúµÄÐèÒª¡£¶Ô Linux
ǶÈëʽ¿ª·¢µÄ¸ÅÊö½«°ïÖúÄúÀí½âËùÓÐÕâЩѡÏî¡£
Linux ÕýÔÚǶÈëʽ¿ª·¢ÁìÓòÎȲ½·¢ ......
Ò»¡¢ÌáǰµÄ»°
¡¡¡¡ÒªËµCÓïÑÔºÍLinuxµÄ¹ØÏµ´ó¼ÒÓ¦¸Ã¶¼²»»áİÉú£¬LinuxϵͳÄں˾ÍÊÇÓÃCÓïÑÔ¿ª·¢µÄ£¬ËùÒÔËùÓеÄLinuxϵͳÏÂÃæ ¶¼»áÓÐCµÄ±àÒëµ÷ÊÔ¹¤¾ß£¬²»¹ýÕâЩ¹¤¾ß¶¼ÊÇÃüÁîʽµÄ£¬Õýʽ¿ª·¢µÄ»°»áºÜ²»·½±ã¡£FedoraÔÚ°²×°µÄʱºò¿ÉÒÔÑ¡Ôñ°²×°Fedora Eclipse£¬Õâ¸öIDEºÜÇ¿´ó£¬C£¬C++£¬Java£¬PythonµÈµÈ¶¼Ö§³Ö£¬¶øÇÒ±àÒ룬µ÷ÊÔºÍ ......
FTP> ! ´Ó ftp ×ÓϵͳÍ˳öµ½Íâ¿Ç¡£
¡¡¡¡FTP> ? ÏÔʾ ftp ÃüÁî˵Ã÷¡£? Óë help Ïàͬ¡£
¡¡¡¡¸ñʽ£º? [command]
¡¡¡¡ËµÃ÷£º[command]Ö¸¶¨ÐèÒª°ïÖúµÄÃüÁîÃû³Æ¡£Èç¹ûûÓÐÖ¸¶¨ command£¬ftp ½«ÏÔʾȫ²¿ÃüÁîµÄÁÐ±í¡£
¡¡¡¡FTP> append ʹÓõ±Ç°ÎļþÀàÐÍÉèÖý«±¾µØÎļþ¸½¼Óµ½Ô¶³Ì¼ÆËã»úÉϵÄÎļþ¡£
¡¡¡¡¸ñʽ£ºappend ......
ÎÒÃÇÖªµÀ£¬ÔÚlinuxÏ£¬ÎÒÃÇÓÃerrnoÀ´²é¿´API·µ»ØµÄ´íÎóÂ룬²¢ÓÃstrerror(errno)À´»ñµÃ´íÎóÐÅÏ¢¡£
¶øÔÚwindowsÏÂÒ²ÓÐÕâµÄ´íÎóÂ룬¿ÉÒÔÓÃGetLastError
À´»ñµÃ£¬ÔÚwindowsÏ£¬Òª»ñµÃ´íÎóÂë¶ÔÓ¦µÄÐÅÏ¢¾ÍûÓÐlinuxÏÂÄÇô·½±ãÁË¡£
Æä»ñµÃ·½Ê½¿ÉÒԲο¼¡¶windowsºËÐıà³Ì¡·¡£
µ«ÎÒÃÇÒ²¿ÉÒÔÓÃlinuxϵÄapiÀ´»ñµÃwindowsϵĴíÎóÐ ......