Thread 관련

Context Switch

하나의 프로세스에는 여러 Thread가 존재 가능

해당 Tread를 Core에서 스케쥴에 따라서 처리 할 때

A Tread와 다음에 오는 B Tread를 Switching하는 것을 Context Switch라고 부름

Thread의 주요 포인트는 다음과 같음

  • Thread 가 많아지면 관리 시간이 더 늘어나서 Thrashing 확률이 이 높아짐
  • 하나의 프로세스 내 Thread간의 Context Switch 비용이 Process 간의 Switch 비용보다 싸다.
  • Thread는 Process에 비해서 리소스를 적게 먹는다.

 

OS에서의 Thread 스케쥴링

  • Epoch 라고 하는 주기로 작동 구간을 나눔
  • Epoch에 Thread를 잘라서 넣음 -> 남은 Thread가 있으면 다음 Epoch에 넣음
  • Dynamic Priority = Static Priority + Bonus (음수 가능)

Static Priority는 개발자가 Bonus는 OS에 의해서 조정됨.

Bonus를 통해서 작동하지 않는 Thread가 없도록 조절됨

 

Thread에서의 공유

동일 프로세스 내 스레드는 Heap, File, Code를 share한다.

Stack과 Instruction Pointer는 Thread 별로 존재 함으로 Share되지 않는다.

 

Thread 대신 Process를 선택 할 때는?

  • 기존 프로그램과 관련이 없을 때
  • 보안적으로 독립 작동이 보장되어야 할 때
728x90
반응형