매주 진행하는 면접스터디에서 아래의 질문들에 대한 정리를 모은 글입니다.
Interview_Question_for_Beginner/OS
📌스케줄링 큐
프로세스를 스케줄링하기 위한 Queue에는 세가지 종류가 있다.
- Job Queue: 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready Queue: 현재 메모리에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device Queue: Device I/O 작업을 대기하고 있는 프로세스의 집합
각각의 Queue에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다.
📌1. 장기 스케줄러(Long-term or job Scheduler)
메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 Pool에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 Ready Queue로 보낼 것인지 결정한다.
- 메모리와 디스크 사이의 스케줄링을 담당한다.
- 프로세스에 메모리 및 각종 리소스를 할당한다.
- 실행중인 프로세스의 수를 제어한다.
- New → Ready
메모리에 프로그램이 너무 많이 올라가도, 너무 적게 올라가도 성능이 좋지 않은 것이다. 참고로 Time Sharing System에서는 장기 스케줄러가 없다. 곧바로 메모리에 올라가 Ready 상태가 된다.
📌2. 단기 스케줄러(Short-term or CPU Scheduler)
- CPU와 메모리 사이의 스케줄링을 담당한다.
- Ready Queue에 존재하는 프로세스 중 어떤 프로세스를 Running 시킬 지 결정한다.
- Ready → Running → Waiting → Ready
📌3. 중기 스케줄러(Medium-term Scheduler, Swapper)
- Swapping: 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아낸다.
- 프로세스에게서 메모리를 해제한다.
- 실행중인 프로세스의 수를 제어한다.
- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절한다.
- Ready → Suspend
Suspend(Stopped) 상태
외부적인 이유로 프로세스의 수행이 정지되고 메모리에서 내려간 상태를 의미한다. 프로세스 전체가 디스크로 Swap Out된다. Blocked 상태는 I/O 작업을 기다리는 상태이기 때문에 스스로 Ready 상태로 돌아갈 수 있지만 Suspend는 외부적인 이유로 멈췄기 때문에 스스로 Ready 상태로 돌아갈 수 없다.