스케쥴러에 대해 설명해주세요

JISU LIM·2023년 11월 29일
0

CS-Tech

목록 보기
12/16
post-thumbnail
post-custom-banner

🚀 단기, 중기, 장기 스케쥴러에 대해 설명해주세요

  • 장기 스케줄러는 HDD 상의 프로그램을 커널에 등록(or 레디 큐 등록)할 때의 스케줄러입니다.
  • 단기 스케줄러는 레디 큐의 프로세스를 CPU에 할당하여 실행 상태로 만들 때의 스케줄러입니다.
  • 중기 스케줄러는 메모리에 적재된 프로세스 수를 관리하는 스케줄러입니다.

🔴 현대 OS에는 단기, 중기, 장기 스케쥴러를 모두 사용하고 있나요?

현대 OS에서는 대부분 장기 스케줄러를 두지 않습니다. 훨씬 적은 양의 메모리를 활용했던 과거에는 프로세스에 효율적으로 메모리를 할당하기 위해 장기 스케줄러의 역할이 필요했지만, 비교적 많은 양의 메모리를 활용하는 현대에는 프로세스가 시작되면 장기 스케줄러 없이 바로 프로세스에 메모리를 할당하여 장기 스케쥴러의 작업 없이 레디 큐에 넣어주게 됩니다.

🟠 프로세스의 스케쥴링 상태에 대해 설명해주세요.

프로세스의 상태는 메모리 할당 상태에 따라 크게 Active(Swapped-in) 상태와 Suspended(Swapped-out) 상태로 나뉠 수 있습니다.

  • Ready : 메모리를 할당받은 프로세스는 레디 큐에서 프로세서(CPU) 할당을 대기합니다.
  • Running : CPU 스케줄링(단기 스케줄링)에 의해 CPU를 할당받은 프로세스는 Running 상태가 되어 작업을 수행합니다. 작업 수행 중 스케줄링에 의해 CPU를 선점(preemption) 당해 Ready 상태가 되거나 I/O 인터럽트 등으로 block이 되어 Asleep 상태로 상태가 전이될 수 있습니다.
  • Asleep : 인터럽트 등으로 프로세서 외 다른 자원을 기다리는 상태입니다. 해당 자원을 할당받으면 Running 상태가 아닌 다시 Ready 상태가 되어 CPU 할당을 대기합니다.
  • Suspended Ready, Suspended Block : 메모리를 할당 받지 못하거나 빼앗긴 상태입니다. 빼앗기게 된 경우 Memory image를 Swap device에 보관(Swap-Out)했다가 자원을 다시 할당받을 때 해당 Memory image를 통해 상태를 복구(Swap-In)하게 됩니다.

🟡 preemptive/non-preemptive에서 존재할 수 없는 상태가 있을까요?

Asleep(Block) 상태는 작업 실행이 불가능한 상태로, 자원 할당을 대기 하는 등 사전 정의 된 다른 작업이 완료될 때까지 작업 수행이 중지되는 상태입니다. 따라서 Asleep(Block) 상태는 preemptive 및 non-preemptive 스케줄링 모두에서 존재할 수 없습니다.

🟢 Memory가 부족할 경우, Process는 어떠한 상태로 변화할까요?

  • Active(Swapped-in) 상태에서의 Process는 더 이상 작업을 수행할 수 없게 되기 때문에 Swap-out 되어 Suspended(Swapped-out) 상태로 전이됩니다.
  • 이 때 메모리 부족으로 필요한 데이터를 가져올 수 없는 경우 Block가 되어 다른 프로세스가 끝나기를 기다리거나, OS가 프로세스를 강제로 종료시켜 Terminated 상태로 전이됩니다.

📚 Reference

티스토리 - [운영체제] 프로세스 스케줄러(단기,중기,장기)
유튜브 - [개발자 면접질문] 운영체제 - 프로세스 스케줄러
유튜브 - [OS] Lecture 3. Process Management (1/2) / 운영체제 강의
티스토리 - [OS] CPU Scheduler

profile
Grow Exponentially
post-custom-banner

0개의 댓글