리눅스 커널 개발자들은 언제 레이스 컨디션이 발생할까 걱정을 많이 합니다.그래서 임계 영역을 어느 코드 구간으로 설정하지 고민합니다. 레이스 컨디션은 언제 어디서나 발생할 수 있지만, 이 걱정을 하기 전에 리눅스 커널에서 스케줄링은 언제 어떻게 수행하는지 점검할 필요가 있습니다. 이번에는 스케줄링을 언제 요청하는지 알아봅시다.1 > 타이머 인터럽트 발생하여 실행 중인 프로세스가 동작을 멈춤1 > 인터럽트 벡터(el1_irq, el0_irq)가 실행한 후 타이머 인터럽트 핸들러가 실행1 > 타이머 인터럽트 핸들러가 실행한 후 schedule_tick() 함수를 실행 local_irq_disable() 함수를 호출하지 않은 이상 인터럽트는 언제든 발생해서 실행 중인 코드를 멈출 수 있습니다