2011. 10. 13. 13:54
Sleep And Block OS이야기2011. 10. 13. 13:54
휴면상태와 간련있는 두가지 상태는 TASK_INTERRUPTIBLE과 TASK_UNINTERRUPTIBLE이다.
두 상태의 차이점은
TASK_UNINTERRUPTBLE 태스크는 시그널을 무시하고,
TASK_INTERRUPTIBLE 태스크는 시그널이 발생할 경우 휴면에서 깨어나 시그널에 응답한다는 사실이다.
하지만 두 휴면 상태의 태스크는 모두 어떤 이벤트의 발생을 기다리며 대기큐에서 휴면 상태로 존재하면 실행불가능하다는 점에서 동일
대기큐는 wake_queue_head_t로 표현된다.
대기큐는 DECLARE_WAIT_QUEUE_HEAD()를 통하여 정적으로 생성되거나, init_waitqueue_head를 통하여동적으로 생성된다.
대기규와 연관된 이벤트가 발생하면, 대기큐에 있는 프로세스들이 깨어난다.
경쟁상태를 예빵하기 위해서는 휴면과 깨어남을 정확히 구현하는 것이 중요.
두 상태의 차이점은
TASK_UNINTERRUPTBLE 태스크는 시그널을 무시하고,
TASK_INTERRUPTIBLE 태스크는 시그널이 발생할 경우 휴면에서 깨어나 시그널에 응답한다는 사실이다.
하지만 두 휴면 상태의 태스크는 모두 어떤 이벤트의 발생을 기다리며 대기큐에서 휴면 상태로 존재하면 실행불가능하다는 점에서 동일
대기큐는 wake_queue_head_t로 표현된다.
대기큐는 DECLARE_WAIT_QUEUE_HEAD()를 통하여 정적으로 생성되거나, init_waitqueue_head를 통하여동적으로 생성된다.
대기규와 연관된 이벤트가 발생하면, 대기큐에 있는 프로세스들이 깨어난다.
경쟁상태를 예빵하기 위해서는 휴면과 깨어남을 정확히 구현하는 것이 중요.
'OS이야기' 카테고리의 다른 글
실제 인터럽트 핸들러 (0) | 2011.10.13 |
---|---|
load_balance() (0) | 2011.10.13 |
우선순위와 타임슬라이스계산 (0) | 2011.10.13 |
schedule() (0) | 2011.10.13 |
타임슬라이스 재계산 (0) | 2011.10.13 |