컨텍스트 스위칭(Context Switching)은 멀티태스킹 운영 체제에서 CPU가 여러 프로세스 또는 스레드를 번갈아 가며 실행하여, 마치 동시에 여러 작업을 처리하는 것처럼 보이게 하는 과정입니다. 이 방법은 시스템의 자원 활용도를 높이고, 사용자에게 더 빠른 응답 시간을 제공하는 데 중요한 역할을 합니다.
컨텍스트 스위칭의 과정
- 인터럽트 발생: 타이머 인터럽트, I/O 요청 완료, 멀티스레딩 환경에서의 스레드 전환 요청 등 다양한 이유로 인터럽트가 발생할 수 있습니다.
- 현재 상태 저장: 현재 실행 중인 프로세스(또는 스레드)의 상태를 프로세스 제어 블록(PCB)에 저장합니다. 이 상태에는 CPU 레지스터 정보, 프로그램 카운터, 스택 포인터 등이 포함됩니다.
- 다음 작업 로드: 다음에 실행할 프로세스(또는 스레드)의 상태를 PCB에서 불러와 CPU의 레지스터에 로드합니다.
- 작업 실행: 로드된 상태를 바탕으로 새로운 작업을 실행합니다.
컨텍스트 스위칭의 성능 영향
- 오버헤드: 컨텍스트 스위칭은 시스템 리소스를 사용하며, 이 과정에서 실제로 작업을 처리하는 것이 아니라 상태를 전환하는 데 시간을 소비합니다. 따라서, 컨텍스트 스위칭이 빈번하게 발생하면 성능 저하가 일어날 수 있습니다.
- 스레드 간 컨텍스트 스위칭의 효율성: 같은 프로세스 내의 스레드 간 컨텍스트 스위칭은 프로세스 간 전환보다 상대적으로 오버헤드가 적습니다. 이는 스레드가 메모리(코드, 데이터, 힙 영역)를 공유하기 때문에, 스레드 전환 시 공유되는 데이터의 상태를 저장하거나 복원할 필요가 적기 때문입니다.
컨텍스트 스위칭 최적화
컨텍스트 스위칭의 오버헤드를 줄이기 위해, 운영 체제는 스케줄링 알고리즘을 통해 컨텍스트 스위칭의 빈도를 조절하고, 스레드와 프로세스를 효율적으로 관리합니다. 또한, 멀티코어 프로세서의 경우, 병렬 처리를 통해 여러 작업을 동시에 처리함으로써, 전체 시스템의 성능을 향상시킬 수 있습니다.
'여러가지 > 이것저것' 카테고리의 다른 글
비대칭키, 대칭키 암호화 (0) | 2024.03.21 |
---|---|
동기와 비동기 (0) | 2024.03.18 |
Process와 Thread의 차이 (0) | 2024.03.18 |
웹서버(Apache, Nginx)의 서버간 라우팅 기능과 OSI7 Layer (0) | 2024.03.18 |
아파치, 엔지닉스 OSI7계층 (0) | 2024.03.18 |