1.. include:: ../disclaimer-zh_CN.rst 2 3:Original: Documentation/scheduler/sched-arch.rst 4 5:������: 6 7 ��������� Yanteng Si <siyanteng@loongson.cn> 8 9:������: 10 11 12 13=============================== 14���������������������CPU��������������������� 15=============================== 16 17 Nick Piggin, 2005 18 19��������������� 20========== 211. ��������������� 22������������������switch_to arch������������������������������������������������������������������������������ 23switch_to��������������������������������������������������������������������������������������������������� 24 25������������������������������������������������������������switch_to������������������������ 26���`#define __ARCH_WANT_UNLOCKED_CTXSW`(���������������switch_to��������������������� 27 28���CONFIG_SMP��������������������������������������������������������������������������������������������������� 29������ 30 31CPU������ 32======= 33������cpu_idle��������������������������������� 34 351. ������������������������������������������������������������������schedule()������������������������������ 36 372. need_resched/TIF_NEED_RESCHED ��������������������������������������������� schedule() 38 ���������������������������������������������������������need_resched������������������������������������������ 39 403. ���cpu_idle���������need_resched() == 'true'���������������������schedule()��������� 41 ������������������schedule()��� 42 434. ���������need_resched��������������������������������������������������������������������������������������� 44 ������������������need_resched���������������������������������������������������������: 45 46 4a. ������������������������������������������:: 47 48 local_irq_disable(); 49 if (!need_resched()) { 50 local_irq_enable(); 51 *** resched interrupt arrives here *** 52 __asm__("sleep until next interrupt"); 53 } 54 555. ���need_resched���������������������TIF_POLLING_NRFLAG��������������������������������������� 56 ���������������������������������������������������������������need_resched��������������������������������� 57 ���������CPU������������������������������ 58 59 - 5a. ������TIF_POLLING_NRFLAG��������������������������������������������������������������� 60 ������������������������������������������������������������������need_resched���������������������3��������������� 61 62arch/x86/kernel/process.c������������������������������������������ 63 64 65���������������arch/������ 66=================== 67 68���������������������arch���������������������������������������������: 69 70sparc - ������������������IRQ���������������������������local_irq_save������_disable��� 71 - ������������: ���������������CPU��������������� (������ #1) 72