Language/Java

[Java] 컨텍스트 스위칭

한비Skyla 2025. 4. 22. 22:08

컨텍스트 : 현재 작업하는 문맥

멀티태스킹을 할 때 각 스레드를 멈추는 시점에 실행하던 값을 메모리에 저장해 두어야 함. 

이전에 실행 중인 값을 메모리에 잠깐 저장하고, 이후 다시 실행하는 시점에 저장한 값을 불러와야 한다. 

>> 컨텍스트 스위칭은 빈번할수록 좋지 않음. 컨텍스트 스위칭 비용은 매우 큼. 

>> 하지만! 어떤 작업이느냐에 따라 다름. 

 

스레드가 하는 작업: CPU 바운드 작업 vs I/O 바운드 작업

- CPU 바운드 작업 : 연산 능력을 많이 요구하는 작업. 

- I/O 바운드 작업: 입출력 작업을 많이 요구하는 작업. 디스크, 네트워크, 파일 시스템과 같은 입출력 작업. 

- 실무에서는  I/O 바운드 작업이 많다. CPU 를 많이 사용하지 않음. 

 

스레드의 숫자는 스레드 작업에 따라 다르게 설정해야 함

- CPU 바운드 작업 : cpu 코어 수 + 1개

- I/O 바운드 작업: cpu 코어 수 보다 많은 스레드를 생성. 컨텍스트 스위칭 비용을 고려해 적절한 성능 테스트로 결정

'Language > Java' 카테고리의 다른 글

[Java] 자바 메모리 구조  (1) 2025.05.01
[Java] 멀티스레드, 멀티태스킹, 스레드  (1) 2025.04.20
[Java] Optional  (1) 2024.07.06
[Java] Stream  (0) 2024.06.17
[Java] boolean , if문  (0) 2024.06.08