문맥 교환(context switching), 작업간 교환
CODEDRAGON ㆍDevelopment/Java
반응형
문맥 교환(context switching)
컴퓨터에서 동시에 처리할 수 있는 최대 작업 수는 CPU의 코어(core) 수와 같습니다.
만약 CPU의 코어 수보다 더 많은 스레드가 실행되면, 각 코어가 정해진 시간 동안 여러 작업을 번갈아가며 수행하게 됩니다. 이때 각 스레드가 서로 교체될 때 스레드 간의 문맥 교환(context switching)이라는 것이 발생합니다.
문맥 교환이란 현재까지의 작업 상태나 다음 작업에 필요한 각종 데이터를 저장하고 읽어오는 작업을 가리킵니다.
작업간 교환이라고도 합니다.
문맥 교환에 걸리는 시간이 커지면 커질수록, 멀티 스레딩의 효율은 저하됩니다.
오히려 많은 양의 단순한 계산은 싱글 스레드로 동작하는 것이 더 효율적일 수 있습니다.
따라서 많은 수의 스레드를 실행하는 것이 언제나 좋은 성능을 보이는 것은 아니라는 점을 유의해야 합니다.
'Development > Java' 카테고리의 다른 글
스케줄링(Scheduling), 선점형 스케줄링 (Preemptive Scheduling), 비선점형 스케줄링 (Non-preemptive Scheduling) (0) | 2017.10.23 |
---|---|
Thread Name(스레드 이름) (0) | 2017.10.23 |
멀티 쓰레드 vs 멀티 프로세스 (0) | 2017.10.23 |
java.lang.Thread 클래스 생성자, Thread 클래스의 주요 메서드 (0) | 2017.10.23 |
java.awt.Dimension, 주요 메소드 (0) | 2017.10.20 |