개발/java
타임 셰어링? 컨텍스트 스위칭?
방푸린
2025. 2. 26. 11:00
반응형
타임셰어링(Time Sharing)과 컨텍스트 스위칭(Context Switching)은 밀접한 관계가 있지만 다른 개념이라 하여 정리해본다.
타임셰어링(Time Sharing)
(OS가 관리하는) CPU 시간을 여러 프로세스 또는 스레드에 분배하는 방식
- 목적: 여러 작업을 동시에 실행하는 것처럼 보이게 함 (멀티태스킹)
- 방법: 일정한 시간 간격(타임 슬라이스, Time Slice)마다 CPU를 다른 프로세스/스레드에 할당
- 모든 프로세스가 공평하게 CPU 시간을 나누어 사용(선점 없음)
- 결과: 사용자는 여러 작업이 동시에 실행되는 것처럼 느끼지만, 실제로는 CPU가 빠르게 번갈아가며 실행하는 것
컨텍스트 스위칭(Context Switching)
CPU가 실행 중인 프로세스 또는 스레드를 변경할 때, 현재 상태(Context)를 저장하고 새로운 프로세스 또는 스레드의 상태를 복원하는 과정
- 목적: 여러 프로세스를 실행하기 위해 이전 실행 상태를 저장하고 새로운 작업을 로드
- 필요한 이유: OS가 프로세스나 스레드를 교체할 때 이전 작업을 나중에 다시 실행할 수 있도록 하기 위해
- 오버헤드 발생: 컨텍스트를 저장하고 복원하는 작업은 추가적인 CPU 자원을 소모
컨텍스트 스위칭 과정
- 현재 실행 중인 프로세스의 레지스터, 메모리 상태(Context) 저장
- 새로운 프로세스의 레지스터, 메모리 상태 복원
- CPU가 새로운 프로세스를 실행
즉, 타임셰어링을 하려면 필연적으로 컨텍스트 스위칭이 발생함!
타임셰어링은 CPU 시간을 나누어 여러 프로세스가 실행되도록 하는 방식
타임셰어링을 수행하려면 컨텍스트 스위칭이 발생해야 함
하지만 컨텍스트 스위칭은 타임셰어링이 아닐 수도 있음
- 예) 우선순위 기반 선점형(Preemptive) 스케줄링에서도 컨텍스트 스위칭 발생
- 높은 우선순위의 프로세스가 CPU를 빼앗아 사용할 수 있음(선점 가능)
즉, 타임셰어링은 CPU 시간을 나누는 방식이고, 컨텍스트 스위칭은 그 과정에서 발생하는 기술적인 동작!
728x90
반응형