운영체제 - 프로세스 관리 3
스케줄러 (Scheduler)
Long-term scheduler (job scheduler)
시작 프로세스 중 어떤 것들을 Ready Queue에 보낼지 결정한다.
프로세스에 Memory 및 각종 자원을 주는 문제를 결정한다.
degree of Multiprogramming을 제어한다.
degree of Multiprogramming
메모리에 올라간 프로그램의 수 메모리에 너무 많은 프로그램이 올라가도 문제고, 너무 적은 양의 프로그램이 올라가도 문제다. 이를 적절히 조절해야 한다.
Time Sharing System에는 보통 장기 스케줄러가 없다.
- 무조건 Ready
- 현대의 리눅스 같은 운영체제들이 이에 속한다.
- 장기 스케줄러는 타임 쉐어링 시스템 이전에 사용한 기법이다.
Short-term scheduler (CPU scheduler)
- 어떤 프로세스를 다음 순서에 Running 시킬 것인지 결정한다.
- 프로세스에 CPU를 주는 문제를 결정한다.
- 충분히 빨라야 한다. (밀리세컨드 단위)
Medium-term scheduler (Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 옮긴다.
- 프로세스에게서 Memory 자원을 빼앗는 문제를 결정한다.
- degree of Multiprogramming을 제어한다.
프로세스의 상태 (Process State)
- 중기 스케줄러가 들어오면서 상태가 추가되었다.
기존 (실행 중인 상태) - Active
- Running : CPU를 잡고 Instruction 수행 중인 상태
- Ready : CPU 대기하는 상태 (조건 모두 만족)
- Blocked (wait, sleep) : 이벤트(I/O 등) 기다리는 상태
추가 (아예 정지되어 재개가 필요한 상태) - Inactive
- Suspended (Stopped)
- 외부적 이유로 프로세스 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out 된다.
- 예시
- 사용자가 프로그램을 일시 정지한 경우 (break key)
- 시스템이 여러 이유로 프로세스를 잠시 중단시킨 경우 (메모리 부족 등의 이유로)
Blocked와 Suspended의 차이
- Blocked : 자신이 요청한 event가 만족되면 Ready 상태가 된다.
- Suspended : 외부에서 resume 해주어야 Active 상태가 된다.
Comments powered by Disqus.