Java/Concurrency

Java > Concurrency > Thread scheduling

Krevis 2024. 9. 3. 06:13

스케줄링

CPU에 어떤 프로그램이 얼마의 시간동안 실행될지를 OS가 결정하는 것

 

단순히 시간으로만 작업을 분할하지는 않고 다양한 우선순위와 최적화 기법을 사용한다

 

동작 예

  1. OS는 내부에 스케줄링 큐를 가지고 있고 쓰레드들은 큐에서 대기한다
  2. OS는 큐에서 쓰레드 A를 꺼내 CPU를 통해 실행한다
  3. OS는 쓰레드 A를 잠시 멈추고 큐에 다시 넣는다
  4. OS는 쓰레드 B를 꺼내 CPU를 통해 실행한다
  5. 이러한 과정을 반복한다

 

CPU core가 2개 이상이면 위 작업을 물리적으로 동시에 실행할 수 있다