2011-04-30 3 views
1

인터뷰에서이 질문을 받았습니다. 인터럽트 서비스 루틴의 하반부가 잠들지 않는 이유는 무엇입니까? 내 대답은 ISR을 실행하는 동안 인터럽트가 마스크 처리되므로 하단 절반에 sleep이 발생하면 인터럽트를 놓치게됩니다. 다른 것 생각 해봐.이게 옳은 대답이야. 아무도 이것에 대한 다른 이유를 생각할 수는 없어.의 아래쪽 절반과 ISR

+0

직장을 얻었습니까? – icedwater

답변

3

다음은 Linux 용입니다.

아래쪽 절반에는 두 가지 유형이 있습니다. 첫 번째 것은 softirq와 tasklet으로 구성됩니다. 태스크 릿은 softirq를 기반으로 작성되며 매우 유사합니다. 이 2는 프로세스 컨텍스트에서 실행되지 않으므로 잠을 잘 수 없습니다.

두 번째 유형은 커널 스레드에서 실행되고 잠잘 수있는 작업 대기열입니다.

수면을 취해야하는 몇 가지 반쪽 부분이 있습니다. 내가 아는 한 네트워크 시스템은 작업 대기열을 사용합니다. 나는 자고있는 하반부를 썼다.

어쩌면 당신은 2 가지 이유 때문에 잠들 수없는 상단 반쪽에 대해 물어보고 있었을 것입니다. 프로세스 컨텍스트에서 실행되지 않으므로 수행 할 수 없으며 최대한 빨리 실행해야하며 필요한 경우 모든 작업을 하단 절반까지 수행해야합니다.

관련 문제