Context Switching
Context Switching 은 운영 체제에서 매우 중요한 개념으로, 여러 프로세스나 스레드가 단일 CPU 자원을 공유하여 효율적으로 실행될 수 있게 하는 메커니즘이다.
Context Switching 은 CPU 가 현재 실행 중인 프로세스나 스레드의 상태를 저장하고, 다른 프로세스나 스레드의 상태를 불러와 실행을 재개하는 과정을 말한다.
이를 통해 여러 작업이 동시에 실행되는 것처럼 보이게 된다.
Context Switching 의 필요성
- 멀티태스킹: 여러 프로세스가 동시에 실행되는 것처럼 보이게 하여 시스템 효율성을 높인다.
- 인터럽트 처리: 하드웨어 인터럽트나 시스템 호출 등에 신속하게 대응할 수 있다.
- 자원 공유: 단일 CPU 로 여러 프로세스를 실행할 수 있게 한다.
Context Switching 의 과정
- 현재 실행 중인 프로세스의 상태 저장: CPU 레지스터, 프로그램 카운터 등의 정보를 PCB(Process Control Block) 에 저장한다.
- 새로운 프로세스 선택: 스케줄러가 다음에 실행할 프로세스를 선택한다.
- 새 프로세스의 상태 복원: 선택된 프로세스의 PCB 에서 상태 정보를 불러와 CPU 레지스터에 복원한다.
- 실행 재개: 새 프로세스의 실행을 시작한다.
Context Switching 의 트리거
- 인터럽트: 하드웨어나 소프트웨어에서 발생하는 인터럽트.
- 시간 할당 종료: 프로세스에 할당된 CPU 시간이 끝났을 때.
- I/O 요청: 프로세스가 I/O 작업을 요청하여 대기 상태로 전환될 때.
- 우선순위: 더 높은 우선순위의 프로세스가 실행 준비될 때.
Context Switching 의 구현 방식
- 하드웨어 스위칭: 프로세서 코어에 내장된 태스크 상태 세그먼트 (TSS) 를 사용한다.
- 소프트웨어 스위칭: 운영 체제의 커널 루틴과 데이터 구조를 사용하여 구현한다. 더 빠르고 일관성 있는 방식이다.
Context Switching 의 장단점
장점:
- 멀티태스킹 지원: 여러 프로세스를 동시에 실행하는 것처럼 보이게 한다.
- 자원 활용 최적화: CPU 사용을 최적화하여 시스템 효율성을 높인다.
단점:
- 오버헤드: Context Switching 자체가 CPU 시간을 소모한다.
- 캐시 미스: 프로세스 전환 시 캐시 데이터가 무효화될 수 있다.
- 지연 시간: 빈번한 Context Switching 은 전체적인 시스템 성능을 저하시킬 수 있다.
Context Switching 최적화
- 프로세스 우선순위 조정: 중요한 프로세스에 더 높은 우선순위 부여.
- 스레드 사용: 프로세스 내 스레드 사용으로 Context Switching 비용 감소.
- 인터럽트 처리 최적화: 효율적인 인터럽트 처리로 불필요한 Context Switching 감소.
- 캐시 최적화: 캐시 친화적인 데이터 구조와 알고리즘 사용.
참고 및 출처
1. 주제의 분류 적절성
“Context Switching(컨텍스트 스위칭)” 은 “Computer Science and Engineering > Computer Science Fundamentals > Operating System > Process Management > Processes” 의 하위 주제로 분류하는 것이 적합하다. 컨텍스트 스위칭은 프로세스 관리의 핵심 개념이며, 프로세스 및 스레드 전환, 멀티태스킹, 스케줄링 등과 밀접하게 연관된다 [1][4][5][6].
2. 200 자 내외 요약
컨텍스트 스위칭은 CPU 가 실행 중인 프로세스나 스레드의 상태를 저장하고, 다른 프로세스나 스레드의 상태를 복원하여 실행을 전환하는 작업이다. 멀티태스킹 운영체제의 필수 기능으로, 효율적인 자원 분배와 동시성 제공에 기여하지만, 빈번한 전환은 오버헤드를 유발할 수 있다 [1][5][6][9].
3. 250 자 내외 개요
컨텍스트 스위칭은 운영체제가 CPU 자원을 여러 프로세스나 스레드에 효율적으로 분배하기 위해 현재 실행 중인 작업의 상태 (레지스터, 프로그램 카운터 등) 를 PCB(Process Control Block) 에 저장하고, 다음 실행할 작업의 상태를 복원하는 과정이다. 이 과정은 멀티태스킹, 인터럽트 처리, 사용자/커널 모드 전환 등 다양한 상황에서 발생한다. 컨텍스트 스위칭은 시스템의 응답성과 공정성을 보장하지만, 전환 시 오버헤드 발생으로 성능 저하 요인이 될 수 있다 [1][4][5][6][9].
핵심 개념
- 컨텍스트 (Context): CPU 가 특정 프로세스 또는 스레드를 실행하는 데 필요한 모든 정보 (레지스터 값, 프로그램 카운터, 스택 포인터 등)[1][6][9].
- 컨텍스트 스위칭 (Context Switching): 현재 실행 중인 프로세스/스레드의 상태를 PCB 에 저장하고, 다음 실행할 프로세스/스레드의 상태를 복원하여 CPU 실행을 전환하는 작업 [1][4][5][6][9].
- PCB(Process Control Block, 프로세스 제어 블록): 각 프로세스의 상태 정보를 저장하는 자료구조로, 컨텍스트 스위칭 시 상태 저장/복원에 사용 [6][9][26].
- 스케줄러 (Scheduler): 어떤 프로세스가 CPU 를 사용할지 결정하고, 컨텍스트 스위칭을 주도 [1][6][9].
주요 내용 정리
배경
- CPU 는 한 번에 하나의 프로세스/스레드만 실행 가능.
- 여러 작업을 동시에 처리하는 것처럼 보이게 하려면 빠른 전환이 필요 [1][6][9].
목적 및 필요성
- 멀티태스킹, 동시성 제공, 자원 분배의 효율성 확보.
- 시스템 응답성 및 공정성 보장 [1][4][5][6][9].
주요 기능 및 역할
- 실행 중인 작업의 상태 저장 및 복원.
- 프로세스/스레드 간 전환, 인터럽트 처리, 커널/사용자 모드 전환 지원 [1][5][6][9].
특징
- 커널 모드에서 실행.
- PCB 에 상태 정보 저장.
- 오버헤드 발생 (전환 중 CPU 가 실질적 작업을 하지 못함)[6][9][27].
핵심 원칙
- 상태 저장 (saving) 과 복원 (restoring) 의 정확성.
- 신속한 전환으로 오버헤드 최소화 [1][6][9].
주요 원리 및 작동 원리
- 현재 프로세스의 상태 (레지스터, PC 등) 를 PCB 에 저장.
- 다음 실행할 프로세스의 PCB 에서 상태를 읽어 CPU 에 복원.
- 스케줄러가 전환을 관리 [1][6][9][26].
다이어그램
구조 및 아키텍처
필수 구성요소
구성요소 | 기능 및 역할 |
---|---|
PCB | 프로세스 상태, 레지스터, PC, 스택 포인터 등 저장 |
CPU 레지스터 | 프로그램 실행에 필요한 데이터 저장 |
스케줄러 | 실행할 프로세스/스레드 결정 |
선택 구성요소
구성요소 | 기능 및 역할 |
---|---|
TCB(Thread Control Block) | 스레드 상태 저장 (스레드 컨텍스트 스위칭 시) |
MMU, TLB | 프로세스 간 전환 시 메모리 주소 변환, 캐시 관리 |
구조 다이어그램
원인, 영향, 탐지 및 진단, 예방 및 해결 방법
- 원인: 멀티태스킹, 인터럽트, 타임 슬라이스 만료, I/O 요청 등 [1][5][6][9].
- 영향: 오버헤드 증가, 캐시 오염, 성능 저하 [6][27][28].
- 탐지 및 진단: 시스템 모니터링, CPU 사용률, 컨텍스트 스위칭 횟수 분석.
- 예방 및 해결: 불필요한 컨텍스트 스위칭 최소화, 스레드 사용 최적화, 적절한 스케줄링 알고리즘 적용 [27][38].
구현 기법
구현 기법 | 정의/구성 | 목적/실제 예시 |
---|---|---|
PCB 기반 스위칭 | PCB 에 상태 저장/복원 | 전통적 프로세스 전환, UNIX/LINUX 커널 |
TCB 기반 스위칭 | TCB 에 스레드 상태 저장/복원 | 경량 스레드 전환, Java, POSIX Threads |
하드웨어 지원 | 일부 레지스터 자동 저장/복원 | ARM, x86 등 하드웨어 컨텍스트 스위칭 지원 |
장점과 단점
구분 | 항목 | 설명 |
---|---|---|
✅ 장점 | 동시성 제공 | 여러 작업이 동시에 진행되는 것처럼 보임 |
자원 활용 | CPU 등 시스템 자원의 효율적 분배 가능 | |
반응성 | 사용자/시스템 요청에 빠른 응답 가능 | |
⚠ 단점 | 오버헤드 | 상태 저장/복원 시 CPU 가 일시적으로 작업 불가 |
캐시 오염 | 캐시 초기화로 인한 성능 저하 발생 | |
복잡성 | 스케줄링 및 상태 관리 복잡성 증가 |
도전 과제 및 해결책
- 오버헤드 최소화: 스레드 기반 처리, 컨텍스트 스위칭 빈도 조절, 하드웨어 지원 활용 [27][38].
- 캐시 오염 방지: 프로세스 수 최적화, 캐시 친화적 작업 분배.
- 스케줄링 효율화: 우선순위 기반, 적응형 스케줄러 도입.
분류에 따른 종류 및 유형
분류 기준 | 종류/유형 | 설명 |
---|---|---|
대상 | 프로세스, 스레드 | 프로세스 간/스레드 간 전환 |
트리거 | 멀티태스킹, 인터럽트, 모드 전환 | 다양한 상황에서 발생 |
구현 수준 | 소프트웨어, 하드웨어 | OS/커널 기반, 하드웨어 지원 기반 |
실무 적용 예시
적용 분야 | 예시 | 설명 |
---|---|---|
웹 서버 | 워커 프로세스/스레드 전환 | 요청 처리 중 컨텍스트 스위칭 반복 |
데이터베이스 | 트랜잭션 처리 | 동시성 확보를 위한 프로세스/스레드 전환 |
모바일 OS | 앱 간 전환 | 사용자 앱/시스템 프로세스 간 전환 |
활용 사례
시나리오: 웹 서버의 워커 프로세스 관리
시스템 구성: 요청 큐, 워커 프로세스, 스케줄러, PCB
다이어그램
워크플로우
- 클라이언트 요청 도착
- 스케줄러가 워커 프로세스 선택
- 현재 워커 상태 PCB 에 저장, 다음 워커 PCB 에서 상태 복원
- 요청 처리 후 반복
역할: 스케줄러 (전환 관리), PCB(상태 저장/복원), 워커 프로세스 (실제 작업)
실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점
항목 | 설명 | 권장사항 |
---|---|---|
오버헤드 관리 | 빈번한 전환 시 성능 저하 | 스레드/프로세스 수 최적화 |
캐시 활용 | 캐시 오염 방지 | 연관 작업 묶기, 캐시 친화적 설계 |
스케줄링 | 효율적 자원 분배 | 우선순위/적응형 스케줄러 사용 |
모니터링 | 전환 횟수 및 성능 분석 | 시스템 모니터링 도구 활용 |
최적화하기 위한 고려사항 및 주의할 점
항목 | 설명 | 권장사항 |
---|---|---|
스위칭 빈도 | 전환이 잦으면 오버헤드 증가 | 불필요한 컨텍스트 스위칭 최소화 |
스레드/프로세스 수 | 과도한 수는 성능 저하 유발 | 적정 수 유지, 풀 (pool) 관리 |
하드웨어 지원 | 일부 CPU 는 컨텍스트 스위칭 가속 | 하드웨어 특성 활용 |
캐시 최적화 | 캐시 오염 최소화 | 연관 작업 묶기, 데이터 지역성 활용 |
2025 년 기준 최신 동향
주제 | 항목 | 설명 |
---|---|---|
컨텍스트 스위칭 | 하드웨어 가속 | CPU/SoC 에서 컨텍스트 스위칭 오버헤드 최소화 기술 발전 |
컨텍스트 스위칭 | 경량 스레드 | 사용자 수준 경량 스레드 (그린스레드) 활용 증가 |
컨텍스트 스위칭 | 분산 시스템 | 마이크로서비스, 컨테이너 환경에서의 효율적 스위칭 연구 |
컨텍스트 스위칭 | 자동화 모니터링 | 전환 오버헤드 자동 분석/최적화 도구 발전 |
주제와 관련하여 주목할 내용
주제 | 항목 | 설명 |
---|---|---|
컨텍스트 스위칭 | 캐시 친화적 스케줄링 | 캐시 오염 최소화를 위한 스케줄링 기법 |
컨텍스트 스위칭 | 하이브리드 스레딩 | 커널/사용자 수준 스레드 혼합 운영 |
컨텍스트 스위칭 | 실시간 OS | 실시간성 보장을 위한 전환 최적화 기술 |
앞으로의 전망
주제 | 항목 | 설명 |
---|---|---|
컨텍스트 스위칭 | 오버헤드 자동화 관리 | AI/ML 기반 오버헤드 예측 및 최적화 |
컨텍스트 스위칭 | 하드웨어 - 소프트웨어 통합 | CPU/OS 협력 기반 전환 가속화 |
컨텍스트 스위칭 | 대규모 분산 환경 | 컨테이너, 서버리스 등에서의 효율적 스위칭 필요성 증가 |
하위 주제 및 추가 학습 필요 내용
간략 설명 | 카테고리 | 주제 |
---|---|---|
스레드 컨텍스트 스위칭 | 프로세스 관리 | 스레드와 프로세스 전환 차이 |
스케줄링 알고리즘 | 운영체제 | 선점형/비선점형, 라운드로빈 등 |
캐시/메모리 관리 | 하드웨어 | TLB, MMU, 캐시 오염 관리 |
오버헤드 분석 | 성능 최적화 | 스위칭 비용 측정 및 최적화 |
추가로 알아야 할 내용 및 관련 분야
간략 설명 | 카테고리 | 주제 |
---|---|---|
멀티코어 환경 | 하드웨어 | 코어 간 컨텍스트 스위칭 |
경량 스레드 | 소프트웨어 아키텍처 | 사용자 수준 스레드 관리 |
분산 시스템 | 클라우드/컨테이너 | 컨테이너/마이크로서비스 스케줄링 |
실시간 시스템 | 임베디드 | 실시간 컨텍스트 스위칭 최적화 |
용어 정리
용어 | 설명 |
---|---|
PCB(Process Control Block) | 프로세스 상태, 레지스터, PC 등 저장하는 자료구조 |
TCB(Thread Control Block) | 스레드 상태 정보를 저장하는 자료구조 |
스케줄러 (Scheduler) | 실행 프로세스/스레드 결정하는 운영체제 모듈 |
오버헤드 (Overhead) | 작업 전환 등 부가적으로 소모되는 자원 및 시간 |
참고 및 출처
- Context Switching in Operating Systems - Tutorialspoint
- Context Switching - an overview | ScienceDirect Topics
- OS - Context Switch(컨텍스트 스위치)가 무엇인가?
- 컨텍스트 스위칭(Context Switching) - 낙서장 - 티스토리
- 컨텍스트 스위칭과 그 영향력 이해하기 - F-Lab
- 멀티 프로세스 vs 멀티 스레드 비교 완전 총정리 - Inpa Dev
1. 주제의 분류 검토
요청하신 분류인 “Computer Science and Engineering > Computer Science Fundamentals > Operating System > Process Management > Processes” 는 Context Switching의 개념을 정확하게 포괄합니다. 이는 운영체제의 핵심 기능 중 하나로, 프로세스 관리 및 스케줄링과 밀접한 관련이 있습니다.
2. 주제 요약 (200 자 내외)
Context Switching은 운영체제가 하나의 CPU 에서 여러 프로세스를 실행하기 위해 현재 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태를 복원하여 실행을 전환하는 과정입니다.
3. 전체 개요 (250 자 내외)
Context Switching은 단일 CPU 에서 다중 프로세스를 효율적으로 실행하기 위한 운영체제의 핵심 기능입니다. 이 과정은 현재 실행 중인 프로세스의 상태를 저장하고, 대기 중인 다른 프로세스의 상태를 복원하여 실행을 전환함으로써 멀티태스킹을 가능하게 합니다. 이러한 기능은 시스템 자원의 효율적인 활용과 응답성 향상에 기여하지만, 빈번한 전환은 오버헤드를 증가시켜 성능 저하를 초래할 수 있습니다.(위키백과, LambdaTest)
4. 핵심 개념
정의: Context Switching 은 운영체제가 현재 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태를 복원하여 CPU 의 제어를 전환하는 과정입니다.
필요성: 단일 CPU 에서 여러 프로세스를 실행하기 위해 필수적인 기능으로, 멀티태스킹과 효율적인 자원 관리를 가능하게 합니다.
구성 요소:
프로세스 제어 블록 (PCB): 프로세스의 상태 정보를 저장하는 데이터 구조로, 프로그램 카운터, 레지스터, 메모리 관리 정보 등을 포함합니다.
CPU 레지스터: 현재 프로세스의 실행 상태를 저장하는 레지스터 집합입니다.
스택 포인터: 프로세스의 호출 스택의 현재 위치를 가리키는 포인터입니다.(Medium)
작동 원리:
현재 프로세스의 상태를 PCB 에 저장합니다.
다음 실행할 프로세스의 PCB 에서 상태를 복원합니다.
CPU 는 복원된 상태로 프로세스의 실행을 재개합니다.
5. 주제에 대한 조사 내용
5.1 배경 및 목적
배경: 초기의 단일 작업 시스템에서 다중 작업을 지원하기 위한 필요성으로 Context Switching 이 도입되었습니다.
목적: CPU 자원의 효율적인 활용과 멀티태스킹을 지원하여 시스템의 응답성과 처리량을 향상시키는 것입니다.
5.2 주요 기능 및 역할
멀티태스킹 지원
프로세스 간 자원 공유
시스템 응답성 향상
우선순위 기반 스케줄링 지원
5.3 특징
오버헤드 발생: 상태 저장 및 복원 과정에서 시스템 자원이 소모됩니다.
캐시 미스: 전환 시 CPU 캐시가 무효화되어 성능 저하를 초래할 수 있습니다.
스레드 전환의 효율성: 스레드는 동일한 메모리 공간을 공유하므로, 프로세스 전환보다 오버헤드가 적습니다.
5.4 핵심 원칙
선점형 스케줄링: 운영체제가 프로세스의 실행을 강제로 중단하고 다른 프로세스를 실행할 수 있습니다.
우선순위 기반 전환: 우선순위가 높은 프로세스가 실행 중인 프로세스를 선점할 수 있습니다.
5.5 주요 원리 및 작동 원리
Context Switching 과정 다이어그램:
5.6 구조 및 아키텍처
필수 구성 요소:
프로세스 제어 블록 (PCB): 프로세스의 상태 정보를 저장합니다.
CPU 레지스터: 프로세스의 실행 상태를 저장합니다.
스택 포인터: 프로세스의 호출 스택 위치를 가리킵니다.(위키백과)
선택 구성 요소:
메모리 관리 정보: 페이지 테이블, 세그먼트 테이블 등
I/O 상태 정보: 입출력 장치의 상태 정보 (위키백과)
구조 다이어그램:
5.7 원인, 영향, 탐지 및 진단, 예방 방법, 해결 방법 및 기법
원인:
프로세스의 종료 또는 대기 상태 진입
우선순위가 높은 프로세스의 도착
시스템 콜 또는 인터럽트 발생
영향:
시스템 오버헤드 증가
캐시 미스로 인한 성능 저하
탐지 및 진단:
- 시스템 모니터링 도구를 활용한 컨텍스트 스위치 횟수 분석
예방 방법:
프로세스 우선순위 조정
타임 슬라이스 조정
해결 방법 및 기법:
스레드 기반 프로그래밍으로 전환
컨텍스트 스위치 최소화를 위한 스케줄링 알고리즘 적용
5.8 구현 기법
선점형 스케줄링: 운영체제가 프로세스의 실행을 강제로 중단하고 다른 프로세스를 실행합니다.
비선점형 스케줄링: 프로세스가 자발적으로 CPU 를 반환할 때까지 실행을 계속합니다.
라운드 로빈 스케줄링: 각 프로세스에 동일한 시간 할당량을 부여하여 순환적으로 실행합니다.
5.9 장점과 단점
구분 | 항목 | 설명 |
---|---|---|
✅ 장점 | 멀티태스킹 지원 | 단일 CPU 에서 여러 프로세스를 동시에 실행할 수 있습니다. |
자원 활용 효율성 | CPU 자원을 효율적으로 활용하여 시스템 성능을 향상시킵니다. | |
⚠ 단점 | 오버헤드 발생 | 상태 저장 및 복원 과정에서 시스템 자원이 소모됩니다. |
캐시 미스 | 전환 시 CPU 캐시가 무효화되어 성능 저하를 초래할 수 있습니다. |
5.10 도전 과제
과제: 컨텍스트 스위치로 인한 오버헤드 최소화
해결책: 스레드 기반 프로그래밍 도입 및 효율적인 스케줄링 알고리즘 적용
5.11 분류에 따른 종류 및 유형
분류 기준 | 유형 | 설명 |
---|---|---|
스케줄링 방식 | 선점형 | 운영체제가 프로세스의 실행을 강제로 중단하고 다른 프로세스를 실행합니다. |
비선점형 | 프로세스가 자발적으로 CPU 를 반환할 때까지 실행을 계속합니다. | |
프로세스 유형 | 프로세스 간 전환 | 서로 다른 프로세스 간의 전환입니다. |
스레드 간 전환 | 동일한 프로세스 내의 스레드 간 전환으로, 오버헤드가 적습니다. |
5.12 실무 적용 예시
시스템 | 적용 예시 | 설명 |
---|---|---|
리눅스 (Linux) | htop 또는 vmstat 로 context switch 분석 | 리눅스 기반 시스템에서는 커널이 프로세스 간 컨텍스트 스위치를 관리하며, /proc/stat 등의 시스템 파일이나 도구로 모니터링 가능합니다. |
Windows | Task Manager, Performance Monitor | Windows OS 는 스레드 단위로 스케줄링하며 context switch 횟수를 성능 모니터에서 추적 가능. |
Kubernetes | 컨테이너 간 CPU 리소스 스로틀링 | 여러 컨테이너가 하나의 노드에서 실행될 때 컨텍스트 스위칭이 빈번하게 발생하며, QoS 정책과 리소스 제한으로 제어합니다. |
RTOS (Real-Time OS) | 실시간 임베디드 시스템 | 하드웨어 제어 및 센서 데이터 처리가 필요한 실시간 시스템에서는 스위칭 오버헤드를 줄이기 위한 고속 컨텍스트 전환 기법이 사용됩니다. |
JVM 기반 서버 | Java ThreadPoolExecutor | Java 에서 스레드 풀을 사용하여 I/O 작업 간 스레드 전환이 발생하며, context switch 오버헤드 최소화를 위해 thread reuse 전략을 사용합니다. |
5.13 활용 사례 (시나리오 기반)
시나리오: 금융 거래 시스템에서 수많은 API 요청을 처리하기 위해 멀티스레드 서버를 구성
시스템 구성:
- API Gateway (Nginx)
- Application Server (Spring Boot 기반)
- Worker Thread Pool (JVM 기반)
- Database (PostgreSQL)
- 메시지 큐 (Kafka)
다이어그램:
Workflow:
- 클라이언트 요청이 API Gateway 를 통해 유입
- Spring Boot 기반 서버에서 ThreadPoolExecutor 를 통해 작업 분산
- 각각의 스레드는 DB 조회, Kafka 전송 등 비동기 작업 수행
- 컨텍스트 스위치는 각 스레드 간 실행 시 발생
- 효율적 스레드 재사용 및 우선순위 조절로 오버헤드 최소화
역할:
- Context Switch 는 Worker Thread 간 전환을 통해 병렬 처리 성능 확보
- 스레드 풀과 큐를 활용하여 과도한 전환 방지 및 CPU 효율성 유지
5.14 실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점
고려사항 | 설명 | 권장사항 |
---|---|---|
스레드 수 조절 | 너무 많은 스레드는 빈번한 전환을 유발 | CPU 코어 수에 맞게 적정량 유지 |
스케줄링 전략 선택 | 선점형 사용 시 응답성 향상 가능 | 상황에 따라 라운드로빈, 우선순위 기반 사용 |
CPU 바운드/IO 바운드 분리 | IO 대기 많은 작업은 컨텍스트 스위치가 많음 | 논블로킹 I/O 와 비동기 처리 기술 활용 |
프로파일링 및 튜닝 | context switch 수치를 주기적으로 분석 | perf , top , vmstat 등 도구 활용 |
5.15 성능을 최적화하기 위한 고려사항 및 주의할 점
고려사항 | 설명 | 권장사항 |
---|---|---|
캐시 지역성 유지 | 전환 시 CPU 캐시가 무효화됨 | 동일한 작업을 묶어 실행하여 캐시 활용도 증대 |
타임 슬라이스 조절 | 너무 짧으면 전환 빈도 증가 | 평균 프로세스 실행 시간 고려하여 설정 |
커널 스케줄러 튜닝 | 기본 스케줄링 정책이 비효율적일 수 있음 | CFS , O(1) 등 목적에 맞는 스케줄러 선택 |
컨테이너 및 VM 수 제한 | 리소스가 제한되면 스위칭 과다 발생 | 물리적 CPU 수 대비 VM/컨테이너 수 조절 |
6. 주제에 대한 추가 조사 내용
(현재 요청에 명시된 내용은 없음—필요 시 이어서 작성 가능)
7. 추가로 알아야 할 내용
카테고리 | 주제 | 간략한 설명 |
---|---|---|
운영체제 | Lazy context switching | FPU, SIMD 레지스터 등을 필요할 때만 전환하여 성능을 향상 |
커널 개발 | 컨텍스트 전환 트레이싱 | ftrace , perf 로 커널 내부의 전환 과정을 상세 분석 |
성능 분석 | context switch profiling | 전환 횟수에 따른 시스템 병목 지점 분석 및 최적화 |
8. 2025 년 기준 최신 동향
주제 | 항목 | 설명 |
---|---|---|
커널 | Intel LAM 지원 | 최근 리눅스 커널에서 Lazy FPU Context Switching 과 LAM (Linear Address Masking) 기능 통합 |
클라우드 | Serverless 와 context switch | Serverless 아키텍처에서 컨테이너 간 context switching 비용 최소화 기술 발전 |
언어 런타임 | Green Thread 최적화 | Go 와 Rust 에서 경량 스레드의 context switch 최적화 연구 활발 |
9. 주제와 관련하여 주목할 내용
주제 | 항목 | 설명 |
---|---|---|
스케줄링 | CFS (Completely Fair Scheduler) | 리눅스에서 context switch 효율화 위해 사용되는 기본 스케줄러 |
하이퍼바이저 | Virtual context switch | VM 내에서 이중 context switching 이 발생할 수 있음 |
시스템 최적화 | NUMA aware scheduling | Non-Uniform Memory Access 기반 시스템에서 스레드와 메모리의 지역성을 유지하도록 설계 필요 |
10. 앞으로의 전망
주제 | 항목 | 설명 |
---|---|---|
시스템 아키텍처 | 하드웨어 지원 증가 | AMD/Intel 에서 context switch 에 최적화된 레지스터/메모리 캐싱 기술 도입 |
소프트웨어 | 경량 실행 단위로 전환 | WASM (WebAssembly), green thread 등으로 context switch 비용 줄이는 방향 강화 |
운영체제 | 실시간 스케줄링 강화 | RTOS 와 일반 OS 의 통합적인 scheduling layer 등장 가능 |
11. 하위 주제로 학습할 내용
카테고리 | 주제 | 설명 |
---|---|---|
운영체제 | 스케줄링 알고리즘 | FCFS, Round Robin, Priority Scheduling 등 |
시스템 프로그래밍 | 레지스터 저장 및 복원 메커니즘 | Context switch 중 실제 하드웨어 수준의 상태 저장 방식 |
병렬처리 | Thread vs Process Context Switch | 성능 비교 및 적용 시나리오 분석 |
12. 추가 학습 필요 내용
관련 분야 | 주제 | 설명 |
---|---|---|
커널 분석 | ftrace, perf 사용법 | 리눅스에서 context switch 분석을 위한 도구 |
성능 튜닝 | CPU cache 최적화 | 컨텍스트 스위치가 캐시에 미치는 영향과 최적화 방안 |
클라우드 네이티브 | 컨테이너 스케줄링 | Kubernetes 등에서 context switch 관련 오버헤드 관리 기법 |
용어 정리
용어 | 설명 |
---|---|
PCB (Process Control Block) | 프로세스 상태 정보를 저장하는 데이터 구조 |
선점형 스케줄링 (Preemptive Scheduling) | OS 가 강제로 CPU 제어를 중단하고 다른 프로세스를 실행 |
Lazy Context Switching | 레지스터를 필요 시점에만 전환하여 성능 향상 |
ftrace | 리눅스 커널 내부 함수 호출, 전환 등을 추적하는 트레이서 |
Thread Pool | 스레드를 재사용하여 context switch 최소화하는 기법 |
참고 및 출처
- Operating System Concepts - Silberschatz
- Linux Performance - Brendan Gregg
- Kernel ftrace Documentation
- Kubernetes CPU Resource Management
- Intel Lazy FPU Context Switching
Context Switching (컨텍스트 스위칭) 에 대해 체계적으로 조사하고 정리하겠습니다.
Context Switching (컨텍스트 스위칭) 종합 분석
1. 주제 분류의 적절성
제시된 분류 **“Computer Science and Engineering” > “Computer Science Fundamentals” > “Operating System” > “Process Management” > “Processes”**는 매우 적절합니다. Context Switching 은 운영체제의 핵심 기능으로서 프로세스 관리의 중요한 구성요소이며, 멀티태스킹 시스템에서 필수적인 메커니즘입니다.
2. 요약 설명 (200 자 내외)
Context Switching (컨텍스트 스위칭) 은 멀티태스킹 운영체제에서 CPU 가 현재 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태를 복원하여 실행을 전환하는 핵심 메커니즘으로, 여러 프로세스가 하나의 CPU 를 효율적으로 공유할 수 있게 하는 필수적인 운영체제 기능입니다.
3. 전체 개요 (250 자 내외)
Context Switching 은 현대 컴퓨터 시스템의 멀티태스킹을 가능하게 하는 핵심 기술로, CPU 가 한 프로세스에서 다른 프로세스로 실행을 전환할 때 발생하는 과정입니다. 이 과정에서 현재 프로세스의 상태 (레지스터, 프로그램 카운터, 메모리 정보 등) 를 PCB(Process Control Block) 에 저장하고, 실행할 프로세스의 상태를 복원합니다. 시스템 호출, 인터럽트, 선점 스케줄링 등에 의해 발생하며, 효율적인 자원 활용과 시스템 응답성 향상을 제공하지만 오버헤드 비용도 수반합니다.
4. 핵심 개념
기본 개념
- Process Control Block (PCB): 프로세스의 모든 정보를 저장하는 데이터 구조
- CPU 스케줄러 (CPU Scheduler): 다음에 실행할 프로세스를 결정하는 운영체제 구성요소
- 프로세스 상태 (Process States): New, Ready, Running, Waiting, Terminated
- 인터럽트 (Interrupt): Context Switch 를 유발하는 하드웨어/소프트웨어 신호
- 시스템 호출 (System Call): 사용자 모드에서 커널 모드로의 전환 요청
심화 개념
- 선점 스케줄링 (Preemptive Scheduling): 운영체제가 강제로 프로세스를 중단시키는 방식
- 비선점 스케줄링 (Non-preemptive Scheduling): 프로세스가 자발적으로 CPU 를 양보하는 방식
- 오버헤드 (Overhead): Context Switch 로 인한 성능 비용
- TLB (Translation Lookaside Buffer): 가상 메모리 주소 변환을 위한 캐시
- 멀티태스킹 (Multitasking): 여러 프로세스의 동시 실행 환경
5. 주제 관련 조사 내용
배경
멀티태스킹 운영체제에서 하나의 CPU 가 여러 프로세스를 동시에 처리해야 하는 환경에서 Context Switching 이 필요하게 되었습니다. 1960 년대 시분할 시스템의 도입과 함께 발전된 이 기술은 현대 컴퓨팅의 기초를 이룹니다.
목적 및 필요성
- CPU 자원의 효율적 활용: 단일 CPU 에서 여러 프로세스의 동시 실행
- 시스템 응답성 향상: 사용자 인터페이스와 백그라운드 프로세스의 균형
- 공정한 자원 배분: 모든 프로세스가 CPU 시간을 공평하게 할당받음
- I/O 대기 시간 활용: 하나의 프로세스가 I/O 를 기다리는 동안 다른 프로세스 실행
주요 기능 및 역할
- 상태 저장 및 복원: 현재 프로세스의 실행 상태를 PCB 에 저장하고 새로운 프로세스의 상태를 복원
- 메모리 관리: 가상 메모리 테이블과 TLB 업데이트
- 스케줄링 지원: CPU 스케줄러와 연동하여 다음 실행할 프로세스 선택
- 인터럽트 처리: 하드웨어 및 소프트웨어 인터럽트에 대한 적절한 응답
특징
- 투명성: 애플리케이션 프로그램이 Context Switch 를 인식하지 못함
- 원자성: Context Switch 과정은 중단될 수 없는 단위 작업
- 커널 모드 실행: 특권 모드에서만 수행 가능
- 하드웨어 의존성: 프로세서 아키텍처에 따라 성능 차이 발생
핵심 원칙
- 일관성 유지: 프로세스 상태의 정확한 보존
- 최소 비용: 오버헤드를 최소화하는 효율적인 구현
- 공정성: 모든 프로세스에 대한 공평한 CPU 시간 배분
- 안전성: 프로세스 간 격리 및 보안 유지
주요 원리 및 작동 원리
Context Switching 의 작동 과정은 다음과 같습니다:
구조 및 아키텍처
필수 구성요소
Process Control Block (PCB)
- 프로세스 ID (PID)
- 프로세스 상태
- 프로그램 카운터 (Program Counter)
- CPU 레지스터 상태
- 메모리 관리 정보
- I/O 상태 정보
- 스케줄링 정보
CPU 레지스터
- 범용 레지스터 (General Purpose Registers)
- 스택 포인터 (Stack Pointer)
- 베이스 레지스터 (Base Register)
- 한계 레지스터 (Limit Register)
메모리 관리 구조
- 페이지 테이블 (Page Table)
- 세그먼트 테이블 (Segment Table)
- TLB (Translation Lookaside Buffer)
선택 구성요소
- 캐시 관리: L1, L2, L3 캐시 상태
- 부동소수점 유닛: FPU 레지스터 상태
- 디버그 레지스터: 디버깅 정보
- 성능 카운터: 프로파일링 데이터
원인, 영향, 탐지 및 진단, 예방 방법, 해결 방법 및 기법
발생 원인
- 시간 할당량 만료: 프로세스가 할당된 CPU 시간을 모두 사용
- I/O 요청: 프로세스가 입출력 작업을 요청하여 대기 상태로 전환
- 시스템 호출: 커널 서비스 요청
- 인터럽트: 하드웨어 또는 소프트웨어 인터럽트 발생
- 높은 우선순위 프로세스 도착: 선점 스케줄링에서 우선순위가 높은 프로세스 실행
성능 영향
- 직접 비용: Context Switch 자체에 소요되는 시간
- 간접 비용: 캐시 미스, TLB 미스, 파이프라인 플러시로 인한 성능 저하
탐지 및 진단
- 시스템 모니터링 도구:
vmstat
,top
,htop
등으로 Context Switch 횟수 측정 - 성능 분석: Context Switch 비율과 시스템 성능 상관관계 분석
- 프로파일링: 애플리케이션별 Context Switch 패턴 분석
예방 및 최적화 방법
- 적절한 스케줄링 정책 선택: CFS (Completely Fair Scheduler) 등 효율적인 스케줄러 사용
- 프로세스 설계 최적화: 불필요한 시스템 호출 최소화
- I/O 최적화: 비동기 I/O 및 논블로킹 I/O 사용
- CPU 친화도 설정: 특정 CPU 코어에 프로세스 고정
구현 기법
1. 하드웨어 지원 방식
정의: 하드웨어 차원에서 Context Switch 를 가속화하는 기법 구성: 다중 레지스터 세트, 하드웨어 스케줄러 목적: Context Switch 시간 단축 실제 예시: Sun UltraSPARC 의 다중 레지스터 세트 시스템
2. 소프트웨어 최적화 방식
정의: 운영체제 수준에서 Context Switch 를 최적화하는 기법 구성: 효율적인 데이터 구조, 지연 로딩 목적: 소프트웨어 오버헤드 감소 실제 예시: Linux CFS 스케줄러의 최적화된 컨텍스트 스위칭
3. 경량 스레드 방식
정의: 프로세스보다 작은 단위인 스레드 간의 Context Switch 구성: 스레드 제어 블록 (TCB), 공유 메모리 공간 목적: 스위칭 비용 절감 실제 예시: POSIX 스레드, Windows 스레드
장점과 단점
구분 | 항목 | 설명 |
---|---|---|
✅ 장점 | 멀티태스킹 지원 | 여러 프로세스의 동시 실행으로 시스템 활용도 향상 |
응답성 향상 | 사용자 인터페이스와 백그라운드 작업의 균형적 처리 | |
자원 효율성 | CPU, 메모리 등 시스템 자원의 최적 활용 | |
공정성 보장 | 모든 프로세스에 공평한 실행 기회 제공 | |
⚠ 단점 | 성능 오버헤드 | Context Switch 자체에 소요되는 CPU 시간 |
캐시 성능 저하 | 프로세스 변경으로 인한 캐시 미스 증가 | |
복잡성 증가 | 동기화, 경쟁 상태 등 복잡한 문제 발생 가능 | |
메모리 사용량 증가 | 각 프로세스의 PCB 및 스택 공간 필요 |
도전 과제
1. 성능 최적화
도전 과제 (계속)
1. 성능 최적화
설명: Context Switch 로 인한 오버헤드를 최소화하면서 시스템 성능을 향상시키는 과제 해결책:
- 하드웨어 가속 기술 활용 (다중 레지스터 세트)
- 효율적인 스케줄링 알고리즘 개발
- CPU 친화도 (CPU Affinity) 설정을 통한 캐시 지역성 향상
2. 실시간 시스템에서의 예측 가능성
설명: 실시간 시스템에서 Context Switch 시간을 예측 가능하게 만드는 과제 해결책:
- 우선순위 기반 선점 스케줄링
- 인터럽트 지연 시간 최소화
- 결정론적 Context Switch 메커니즘 구현
3. 멀티코어 환경에서의 동기화
설명: 멀티코어 시스템에서 여러 CPU 가 동시에 Context Switch 를 수행할 때의 동기화 문제 해결책:
- 스핀락 (Spin Lock) 및 뮤텍스 (Mutex) 활용
- 락프리 (Lock-free) 자료구조 사용
- NUMA (Non-Uniform Memory Access) 고려한 스케줄링
4. 보안 및 격리
설명: 프로세스 간 정보 유출 방지 및 보안 강화 해결책:
- 메모리 보호 기법 강화
- 사이드 채널 공격 방어
- 하드웨어 지원 보안 기능 활용
분류에 따른 종류 및 유형
분류 기준 | 종류 | 설명 |
---|---|---|
발생 원인 | 자발적 (Voluntary) | 프로세스가 스스로 CPU 를 양보 (I/O 대기, sleep 등) |
비자발적 (Involuntary) | 운영체제가 강제로 프로세스를 중단 (시간 할당량 만료) | |
스케줄링 방식 | 선점형 (Preemptive) | 운영체제가 실행 중인 프로세스를 강제로 중단 |
비선점형 (Non-preemptive) | 프로세스가 자발적으로 CPU 를 양보할 때까지 대기 | |
대상 단위 | 프로세스 간 (Process-to-Process) | 서로 다른 프로세스 간의 전환 |
스레드 간 (Thread-to-Thread) | 동일 프로세스 내 스레드 간 전환 | |
모드 전환 | 사용자 - 커널 모드 전환 | 시스템 호출 시 발생하는 모드 변경 |
커널 내부 전환 | 커널 모드 내에서의 작업 전환 |
실무 적용 예시
적용 분야 | 사례 | 구현 방법 | 효과 |
---|---|---|---|
웹 서버 | Apache HTTP Server | 멀티프로세스 모델로 각 요청을 별도 프로세스에서 처리 | 요청 간 격리, 안정성 향상 |
데이터베이스 | PostgreSQL | 각 클라이언트 연결마다 별도 프로세스 생성 | 트랜잭션 격리, 장애 격리 |
게임 엔진 | Unity Engine | 렌더링, 물리연산, AI 를 별도 스레드로 분리 | 프레임 드롭 최소화, 반응성 향상 |
임베디드 시스템 | FreeRTOS | 우선순위 기반 선점 스케줄링 | 실시간 응답성 보장 |
클라우드 플랫폼 | Kubernetes | 컨테이너 기반 프로세스 격리 및 스케줄링 | 자원 효율성, 확장성 |
활용 사례
시나리오: 고성능 웹 서버 환경에서의 Context Switching 최적화
상황 설정: 대규모 전자상거래 플랫폼에서 초당 10,000 개의 HTTP 요청을 처리해야 하는 웹 서버 시스템
시스템 구성:
- 하드웨어: 16 코어 CPU, 64GB RAM, SSD 스토리지
- 운영체제: Linux (Ubuntu 22.04 LTS)
- 웹 서버: Nginx + uWSGI
- 데이터베이스: PostgreSQL
- 캐시: Redis
활용된 Context Switching 기법:
- CPU 친화도 설정: 특정 워커 프로세스를 특정 CPU 코어에 고정
- 논블로킹 I/O: epoll 을 활용한 비동기 I/O 처리
- 프로세스 풀링: 미리 생성된 워커 프로세스 재사용
- 우선순위 스케줄링: 중요한 요청에 높은 우선순위 부여
Workflow:
Context Switching 의 역할:
- 부하 분산: 여러 워커 프로세스 간 요청 분배
- 장애 격리: 하나의 프로세스 오류가 다른 프로세스에 영향을 주지 않음
- 자원 효율성: I/O 대기 시간 동안 다른 요청 처리
성과:
- Context Switch 횟수 60% 감소
- 응답 시간 40% 단축
- CPU 사용률 85% 향상
- 동시 처리 가능 요청 수 3 배 증가
실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점
구분 | 고려사항 | 설명 | 권장사항 |
---|---|---|---|
성능 | Context Switch 빈도 모니터링 | 과도한 스위칭은 성능 저하 유발 | vmstat , sar 등으로 지속적 모니터링 |
메모리 | PCB 크기 최적화 | 큰 PCB 는 스위칭 시간 증가 | 필요한 정보만 PCB 에 저장 |
스케줄링 | 적절한 시간 할당량 설정 | 너무 짧으면 오버헤드, 너무 길면 응답성 저하 | 워크로드에 따른 동적 조정 |
캐시 | 캐시 지역성 고려 | 프로세스 변경 시 캐시 미스 발생 | CPU 친화도 설정으로 캐시 효율성 향상 |
동기화 | 경쟁 상태 방지 | 공유 자원 접근 시 동기화 필요 | 적절한 락킹 메커니즘 사용 |
최적화하기 위한 고려사항 및 주의할 점
구분 | 최적화 기법 | 설명 | 권장사항 |
---|---|---|---|
하드웨어 | 다중 레지스터 세트 활용 | 하드웨어 지원 시 빠른 컨텍스트 스위칭 | 최신 프로세서 아키텍처 활용 |
소프트웨어 | 경량 스레드 사용 | 프로세스 대신 스레드로 오버헤드 감소 | 공유 데이터 동기화 주의 |
I/O | 비동기 I/O 구현 | 블로킹 I/O 로 인한 불필요한 스위칭 방지 | epoll , kqueue 등 이벤트 기반 I/O |
메모리 | 메모리 지역성 최적화 | 관련 데이터를 가까운 메모리에 배치 | NUMA 토폴로지 고려한 메모리 할당 |
스케줄링 | 작업 큐 최적화 | 효율적인 스케줄링으로 불필요한 스위칭 방지 | 우선순위 기반 또는 공정 스케줄링 |
8. 2025 년 기준 최신 동향
주제 | 항목 | 설명 |
---|---|---|
AI 기반 최적화 | 지능형 스케줄링 | 머신러닝을 활용한 예측적 Context Switch 최적화 |
적응형 시간 할당량 | 워크로드 패턴 학습을 통한 동적 시간 할당량 조정 | |
하드웨어 발전 | 신경망 처리 장치 (NPU) | AI 워크로드 전용 Context Switch 메커니즘 |
양자 컴퓨팅 | 양자 상태 보존을 위한 새로운 컨텍스트 관리 기법 | |
클라우드/엣지 | 컨테이너 최적화 | Docker, Kubernetes 에서의 경량화된 Context Switch |
엣지 컴퓨팅 | 저지연, 저전력 Context Switch 기술 | |
보안 강화 | 사이드채널 방어 | Spectre, Meltdown 등 공격에 대한 안전한 Context Switch |
하드웨어 보안 | Intel CET, ARM Pointer Authentication 활용 |
9. 주제와 관련하여 주목할 내용
주제 | 항목 | 설명 |
---|---|---|
새로운 아키텍처 | RISC-V | 오픈소스 프로세서에서의 Context Switch 구현 |
ARM M-Profile | 임베디드 시스템 전용 효율적 컨텍스트 스위칭 | |
가상화 기술 | 하이퍼바이저 | VM 간 Context Switch 최적화 기술 |
컨테이너 런타임 | 경량 가상화에서의 빠른 프로세스 전환 | |
실시간 시스템 | 시간 결정론적 스위칭 | 정확한 시간 보장이 필요한 시스템에서의 응용 |
우선순위 역전 방지 | 실시간 스케줄링에서의 Context Switch 최적화 | |
메모리 기술 | 영구 메모리 | NVM 활용 시 Context 정보 영구 저장 |
메모리 압축 | Context 정보 압축을 통한 스위칭 속도 향상 |
10. 앞으로의 전망
주제 | 항목 | 설명 |
---|---|---|
자율화 | 완전 자율 스케줄링 | AI 가 최적의 Context Switch 시점을 자동 결정 |
자기 적응형 시스템 | 시스템이 스스로 성능을 최적화하는 기술 | |
통합 최적화 | 하드웨어 - 소프트웨어 통합 | 맞춤형 프로세서와 운영체제의 공동 설계 |
크로스 레이어 최적화 | 애플리케이션부터 하드웨어까지 전체 스택 최적화 | |
새로운 패러다임 | 분산 Context 관리 | 클러스터 전체에서의 글로벌 Context 관리 |
예측적 프리페칭 | 다음 실행될 프로세스를 미리 예측하여 준비 | |
보안 진화 | 하드웨어 보안 강화 | TEE, Secure Enclave 를 활용한 안전한 Context Switch |
제로 트러스트 아키텍처 | 모든 Context Switch 에 대한 보안 검증 |
11. 하위 주제별 추가 학습 내용
카테고리 | 주제 | 설명 |
---|---|---|
운영체제 이론 | 프로세스 스케줄링 | FCFS, SJF, Round Robin, Priority Scheduling |
메모리 관리 | 가상 메모리, 페이징, 세그멘테이션 | |
동기화 메커니즘 | 세마포어, 뮤텍스, 모니터 | |
컴퓨터 아키텍처 | CPU 파이프라인 | 명령어 파이프라인과 Context Switch 의 상호작용 |
캐시 시스템 | L1/L2/L3 캐시와 Context Switch 성능 영향 | |
인터럽트 처리 | 하드웨어 인터럽트와 Context Switch 관계 | |
시스템 프로그래밍 | 커널 개발 | Context Switch 구현을 위한 저수준 프로그래밍 |
디바이스 드라이버 | 하드웨어와 운영체제 간 인터페이스 | |
시스템 호출 | 사용자 모드와 커널 모드 전환 메커니즘 |
12. 관련 분야 추가 학습 내용
카테고리 | 주제 | 설명 |
---|---|---|
병렬 처리 | 멀티프로세싱 | 다중 프로세서 환경에서의 Context Switch |
멀티스레딩 | 스레드 간 Context Switch 와 동기화 | |
GPU 컴퓨팅 | GPU 에서의 Context Switch 와 CUDA 스트림 | |
실시간 시스템 | 실시간 스케줄링 | Rate Monotonic, Earliest Deadline First |
시간 제약 | 데드라인과 Context Switch 최적화 | |
우선순위 상속 | 우선순위 역전 문제 해결 | |
분산 시스템 | 분산 스케줄링 | 클러스터 환경에서의 작업 분배 |
로드 밸런싱 | 시스템 간 작업 부하 균형 | |
장애 복구 | Context 정보를 활용한 장애 시 복구 | |
가상화 | 하이퍼바이저 | Type 1/Type 2 하이퍼바이저에서의 Context Switch |
컨테이너 기술 | Docker, LXC 에서의 경량 가상화 | |
클라우드 컴퓨팅 | 가상 머신 마이그레이션과 Context 보존 |
용어 정리
용어 | 설명 |
---|---|
Quantum (퀀텀) | CPU 스케줄러가 각 프로세스에게 할당하는 시간 단위 |
Dispatcher (디스패처) | 스케줄러가 선택한 프로세스에게 실제로 CPU 를 할당하는 모듈 |
Context Switch Overhead | Context Switch 수행에 소요되는 시간과 자원 비용 |
Lightweight Process (경량 프로세스) | 스레드의 다른 표현으로, 프로세스보다 생성/전환 비용이 적음 |
Run Queue (실행 큐) | 실행 준비가 완료된 프로세스들이 대기하는 자료구조 |
Process Switching Time | 한 프로세스에서 다른 프로세스로 전환하는 데 소요되는 시간 |
Context Switching Rate | 단위 시간당 발생하는 Context Switch 의 횟수 |
Process Migration | 한 프로세서에서 다른 프로세서로 프로세스를 이동시키는 과정 |
Kernel Stack | 각 프로세스가 커널 모드에서 사용하는 스택 공간 |
User Stack | 프로세스가 사용자 모드에서 사용하는 스택 공간 |
참고 및 출처
- Context Switching in Operating System - GeeksforGeeks
- Context Switching in OS - TutorialsPoint
- Context Switching in OS - Scaler Topics
- Process Control Block - Wikipedia
- Process Control Block - Baeldung
- Context Switching and Performance - LambdaTest
- Understanding Context Switching Impact - Netdata
- Context Switching Performance Optimization - Coding Confessions
- Process Table and PCB - GeeksforGeeks
- Preemptive and Non-Preemptive Scheduling - GeeksforGeeks