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

linuxÄں˶ÁÊé±Ê¼Ç£¨½ø³ÌÖÕÖ¹º¯Êý·ÖÎö£©Èý

do_exit() Function
-----------------------------------------------------------------------
kernel/exit.c
707 NORET_TYPE void do_exit(long code)
708 {
709 struct task_struct *tsk = current;
710
711 if (unlikely(in_interrupt()))
712 panic("Aiee, killing interrupt handler!");
713 if (unlikely(!tsk->pid))
714 panic("Attempted to kill the idle task!");
715 if (unlikely(tsk->pid == 1))
716 panic("Attempted to kill init!");
717 if (tsk->io_context)
718 exit_io_context();
719 tsk->flags |= PF_EXITING;
720 del_timer_sync(&tsk->real_timer);
721
722 if (unlikely(in_atomic()))
723 printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n",
724 current->comm, current->pid,
725 preempt_count());
-----------------------------------------------------------------------
Line 707²ÎÊýcodeÊǽø³Ç·µ»Ø¸ø¸¸½ø³ÌµÄÍ˳öÂë Lines 711716 È·±£Ä¿Ç°½ø³Ì²»ÊÇÒ»¸öÖжϴ¦Àí½ø³Ì£¬È·±£²»ÊÇidle½ø³Ì£¨PID=0£©»òÕßÊÇinit½ø³Ì£¨PID=1£©£¬init½ø³ÌÖ»ÓÐϵͳ±»ÖÕֹʱ²ÅÄÜÍ˳ö£» Line 719 ½«¸Ã½ø³ÌµÄflagsÓòÉèÖÃΪPF_EXITING£¬Õâ±íÃ÷µ±Ç°½ø³Ì±»ÖÕÖ¹£» -----------------------------------------------------------------------
kernel/exit.c
...
727 profile_exit_task(tsk);
728
729 if (unlikely(current->ptrace & PT_TRACE_EXIT)) {
730 current->ptrace_message = code;
731 ptrace_notify((PTRACE_EVENT_EXIT << 8) | SIGTRAP);
732 }
733
734 acct_process(code);
735 __exit_mm(tsk);
736
737 exit_sem(tsk);
738 __exit_files(tsk);
739 __exit_fs(tsk);
740 exit_namespace(tsk);
741 exit_thread();
...
-----------------------------------------------------------------------
Lines 729732 Èç¹û½ø³Ì±»ptraced¶øÇÒPT_TRACE_EXIT ±»ÉèÖã¬ÎÒÃǽ«exit_code×÷ΪÏûϢ֪ͨ¸¸½ø³Ì Lines 735742 ½«½ø³ÌÖв»ÓõÄ×ÊÔ´clean upµô£¬__exit_mm()ÓÃÓÚÊÍ·Å·ÖÅ䏸½ø³ÌµÄÄڴ棬ºÍÊͷźʹ˽ø³ÌÏà¹ØµÄmm_struct£¬exit_sem()½«´ËÈÎÎñ´ÓIPCÖзÖÀ룬__exit_files() ÊÍ·Å·ÖÅ䏸ÈÎÎñµÄÎļþ£¬²¢ÇÒ½«Æä±êʶ·û¼õÈ¥£¬_


Ïà¹ØÎĵµ£º

LinuxÄÚºËÅäÖÃÎĵµ(make menuconfig)

Ò»¡¢ÒýÑÔ£º
    ±¾ÎĵµµÄÄÚÈݴ󲿷ÝÄÚÈݶ¼ÊÇ´ÓÍøÉÏÊÕ¼¯¶øÀ´£¬È»ºóÅäºÏһЩеĽØÍ¼£¨Äں˰汾£ºV2.4.19£©¡£ÔÚÿһÅäÖÃÏîºó»áÓÐÒ»¸öÑ¡ÔñÖ¸ÄϵIJ¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾­Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾­Ñ飨Õâ¸ö»¹µ ......

Èý¿î Linux ϵÄÃâ·Ñ×ÀÃæ¼¶É±¶¾Èí¼þ(ͼ)


ÓÉÓÚ Linux Á¼ºÃµÄÓû§È¨ÏÞ¹ÜÀíÌåϵ£¬²¡¶¾ÍùÍùÊÇ Linux ϵͳ¹ÜÀíÔ±×îºó²ÅÐèÒª¿¼ÂǵÄÎÊÌâ¡£ÒÔÍù£¬Linux ÉϵÄɱ¶¾Èí¼þÖ÷ÒªÊÇΪÆóÒµµÄÓʼþºÍÎļþ·þÎñÆ÷ËùÉè¼ÆµÄ¡£Èç½ñ£¬Ëæ×Å Linux ×ÀÃæÓû§ÊýÁ¿µÄÔö³¤£¬×ÀÃæÓû§ÔÚÊÜÒæÓÚ Linux ϵͳ¶Ô²¡¶¾½ÏÇ¿µÄÌìÈ»ÃâÒßÁ¦µÄͬʱ£¬Ò²ÐèҪɱ¶¾Èí¼þÇåÀí´ÓÍøÂç»òUÅÌ´øÀ´µÄWIndows²¡¶¾¡£¾¡¹ÜÄÇЩ ......

linuxÄں˶ÁÊé±Ê¼Ç£¨½ø³ÌÊý¾Ý½á¹¹·ÖÎö£©Ò»

include/linux/sched.h
384   struct task_struct {
385     volatile long state;
386     struct thread_info *thread_info;
387     atomic_t usage;
388     unsigned long flags; 
389   &nbs ......

RedHat Linux϶ÀÁ¢Íê³ÉµÄÒ»¸ö×÷Òµ

¡¾Îĵµ´´½¨ÈÕÆÚ£º2010-05-30¡¿
   001  // P122: Èý¡¢ÉÏ»úÌâ 3
   002
   003  // test03-03.c
   004
   005  // Header files included.
   006  #include <stdio.h>
   00 ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ