인프런 커뮤니티 질문&답변

김주영님의 프로필 이미지
김주영

작성한 질문수

곰책으로 쉽게 배우는 최소한의 운영체제론

CPU 스케줄링 개요

CPU 스케줄링 우선순위

해결된 질문

작성

·

598

·

수정됨

0

CPU 스케줄링에서 우선 순위에 따라 순서대로 처리되는 방식은 선점형, 비선점형으로 구분한다면 비선점형에 해당하는 것일까요?

CPU를 뺏을 수 있으면 우선 순위가 의미가 없으니 비선점형이지 않을까 생각했습니다.

+ 오래된 작업일수록 우선순위를 높이는 우선순위 방식이 있는 것을 발견했는데 이 방식과 강의에서 설명해주신 foreground, background에 따라 우선순위를 가지는 방식과 다른 것인가요? foreground, background에 따라 우선순위를 가지는 방식은 선점, 비선점 방식과는 별개인가요?

답변 1

2

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

우선순위에 따라 CPU 사용 시간을 더 오래 혹은 빨리 가져갈 수 있는 것은 스케쥴링에 관한 것입니다. 선점/비선점형은 다른 이야기 입니다. CPU가 하나 밖에 없는 환경에서 여러 프로세스가 동시에 실행 중인 경우라면 결과적으로 여러 프로세스 중 하나만 CPU를 사용하고 나머지는 대기해야 합니다. 이 대기열을 관리하고 어떻게 CPU 자원을 분배하는 가에 과한 유슈는 스케쥴링 영역입니다.

문제는 그 다음 입니다. 프로세스가 CPU를 배정 받아 사용하는 동안 오롯이 CPU를 독점하는 방식이라면 비선점형(Non-preemptive) 입니다. 단어의 의미 때문에 선점/비선점이 헷갈리기도 합니다. Preemptive의 사전적 의미에는 '선수치다'라는 의미가 있습니다. 그러니까 선점형이라는 말 대신 '선수치기(남보다 먼저 착수하기)' 방식...즉 우선순위가 낮거나 현재 CPU를 사용중 이지 않은 대기자가 얍삽하게 지금 CPU를 사용하는 프로세스를 제치고 선수치는 방식이 선점형입니다.

그러므로 '선수(를) 치다'라는 동사의 주어는 바로 '대기 중인 프로세스'가 되겠습니다. 한 마디로 대기 중인 누군가의 얍삽한 새치기를 허용하는 구조라면 선점형 그런 얍삽함을 도저히 용납 할 수 없다면 비선점형(Non-새치기) 방식이 되겠습니다.

마지막으로 오래된 작업과 백그라운드/포어그라운드 프로세스를 구별하고 스케쥴링하는 것은 프로세스 성격에 따라 우선 순위를 어떻게 조정할 것인지에 관한 스케쥴링 이슈일 뿐 얍삽한 새치기와는 관련이 없다 하겠습니다.

김주영님의 프로필 이미지
김주영

작성한 질문수

질문하기