preemption under linux
DESCRIPTION
Preemption under LinuxTRANSCRIPT
선점 스케쥴링 &&커널 선점
왜그냥 강의자료 만들다가 심심해져서 만들었습니다 .
헷갈리시는 분들이 꽤 있더군요 .
이 자료는 유명한 공룡 책과 커널뉴비의 자료들을 발췌해서 가공했습니다 .
선점이란 ?사전적 의미로는 먼저 구매 권리를 획득하는 것
OS 에서는 실행중이던 프로세스를 중간에 중단시키고 대신 다른 프로세스를 실행하는 것을 말합니다 .
비선점형 스케쥴링옛날 OS ( 라고 하기 부끄럽다는 의견도 있지만 )
윈도우 3.1 (1992), 매킨토시 OS 9 (1984)스케쥴링은 초록색에서만 일어납니다 .프로세스 자신이 양보를 해야 다른 프로세스가 실행됨빨강 사건에서는 그냥 자기 자신이 재실행됩니다 .
선점형 스케쥴링요즘의 운영체제는 다 선점형 스케쥴링을 합니다 .
프로세스 자신이 원하지 않아도 OS 에 의해 중단 가능빨강 사건에도 스케쥴링이 발생우선순위가 높은 프로세스가 대신 실행됩니다 .
선점형 / 비선점형 커널선점형 커널과 선점형 스케쥴링은 전혀 다른
이야기입니다 .
공룡책에도 나와 있는데요……
비선점형 커널한 프로세스가 유저 모드에서 커널 모드로 진입하고 난
이후에는 절대 선점이 안 되는 커널을 말합니다 .
다른 프로세스가 실행되기 위해서는 다음 중 하나의 조건이 필요합니다 .
시스템 콜 종료 ( 즉 커널 유저 모드로 변환 )커널 모드에서 명시적으로 스케쥴링 기능 호출 ex. 리눅스의 경우 schedule()
선점형 커널커널 모드로 진입 후에도 다른 프로세스에 의해 선점이
가능하면 선점형 커널입니다 .
선점형 커널은 사용자 응답성이 더 좋아집니다 .
여러가지 문제들도 덩달아 해결됩니다 .
리눅스의 경우유저 프로세스에서는
원래부터 선점이 되고 있었습니다 .선점형 스케쥴러
커널 모드에서는2.4 는 커널 선점 불가
비선점형 커널2.6 부터는
CONFIG_PREEMPT 옵션을 활성화하면 커널 선점이 됩니다 .( 기본 활성화 )
선점형 커널
참고http://kernelnewbies.org
http://os-book.com/9 판이 벌써 나왔군요 .