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
반응형
'JAVA' 카테고리의 다른 글
Java의 동기화 및 Locking 기법 들 (Synchronized, ReentrantLock, Semaphore, Atomic Package, varHandle) (0) | 2021.05.31 |
---|---|
javaFX java version 11이상에서 실행하기 (2) | 2021.05.28 |
Thread Demon & Join (0) | 2021.05.25 |
Thread 기본 코드 (0) | 2021.05.24 |
Java로 Microphone (마이크) 음성 데이터 저장하기 (0) | 2021.05.24 |