해결된 질문
작성
·
598
·
수정됨
답변 1
2
우선순위에 따라 CPU 사용 시간을 더 오래 혹은 빨리 가져갈 수 있는 것은 스케쥴링에 관한 것입니다. 선점/비선점형은 다른 이야기 입니다. CPU가 하나 밖에 없는 환경에서 여러 프로세스가 동시에 실행 중인 경우라면 결과적으로 여러 프로세스 중 하나만 CPU를 사용하고 나머지는 대기해야 합니다. 이 대기열을 관리하고 어떻게 CPU 자원을 분배하는 가에 과한 유슈는 스케쥴링 영역입니다.
문제는 그 다음 입니다. 프로세스가 CPU를 배정 받아 사용하는 동안 오롯이 CPU를 독점하는 방식이라면 비선점형(Non-preemptive) 입니다. 단어의 의미 때문에 선점/비선점이 헷갈리기도 합니다. Preemptive의 사전적 의미에는 '선수치다'라는 의미가 있습니다. 그러니까 선점형이라는 말 대신 '선수치기(남보다 먼저 착수하기)' 방식...즉 우선순위가 낮거나 현재 CPU를 사용중 이지 않은 대기자가 얍삽하게 지금 CPU를 사용하는 프로세스를 제치고 선수치는 방식이 선점형입니다.
그러므로 '선수(를) 치다'라는 동사의 주어는 바로 '대기 중인 프로세스'가 되겠습니다. 한 마디로 대기 중인 누군가의 얍삽한 새치기를 허용하는 구조라면 선점형 그런 얍삽함을 도저히 용납 할 수 없다면 비선점형(Non-새치기) 방식이 되겠습니다.
마지막으로 오래된 작업과 백그라운드/포어그라운드 프로세스를 구별하고 스케쥴링하는 것은 프로세스 성격에 따라 우선 순위를 어떻게 조정할 것인지에 관한 스케쥴링 이슈일 뿐 얍삽한 새치기와는 관련이 없다 하겠습니다.