"TASK_INTERRUPTIBLE" 상태의 프로세스 컨텍스트에서 커널 선점이 발생할 수 있나요?

"TASK_INTERRUPTIBLE" 상태의 프로세스 컨텍스트에서 커널 선점이 발생할 수 있나요?

프로세스가 상태로 설정되면 TASK_INTERRUPTIBLE다른 커널 구성요소가 이를 선점할 수 있습니까? 만약 이것이 사실이라면, 프로세스가 wake 조건을 확인하지 못하여 wake할 기회를 놓쳤을 수도 있다고 생각합니다.

답변1

상태는 TASK_INTERRUPTIBLE스케줄러를 호출할 때 작업이 절전 모드로 전환되는 방식과 관련이 있습니다. 해당 이름은 "중단 가능한 절전 모드"의 약어입니다. 선점을 제어하지 않습니다(사실 Linux는 TASK_INTERRUPTIBLE(선택적으로) 선점되기 오래 전에 제어합니다).

선점은 절전 모드가 아닙니다. CPU에서 시작된 실행 작업은 최대 절전 모드가 아닌 실행 가능합니다.

작업의 절전 상태가 다른 절전 유형으로 설정되어 있는 동안 작업이 선점되면 TASK_INTERRUPTIBLE완전한 혼란에 빠질 수 있습니다.

2003년에 누군가가 당신이 의심했던 것과 같은 것을 의심하여 ​​LKML 메일링 리스트에 게시했습니다.

http://lkml.org/lkml/2003/4/14/262

커널 개발자 Rob Love의 후속 작업 및 나머지 토론을 참조하세요.

작업은 TASK_INTERRUPTIBLE선점형 실행 대기열에 남아 있어야 합니다. 이를 달성하기 위한 해킹(2003년부터 진행됨)이 위 스레드에서 논의되었습니다.

관련 정보