Context Switching(컨텍스트 스위칭)❓

beluga000·2024년 7월 30일

Context Switching [컨텍스트 스위칭]

Context Switching에서 Context는 프로세스/스레드의 상태를 의미하며, CPU가 하나의 스레드(또는 프로세스)에서 다른 스레드로 전환할 때 발생합니다. 이 과정에서 현재 스레드의 상태를 저장하고, 새로운 스레드의 상태를 로드하는 개념입니다.

Context Switching 과정은 CUP의 리소스를 사용하기에 오버헤드가 발생합니다. 하지만 이를 통해 여러 스레드가 동시에 실행되는 것처럼 보이게 할 수 있습니다.

Context Switching 예시

1.	스레드
•	Thread 1 (파란색): 시간 0에서 시작하여 실행되다가 시간 2와 6에서 중단되며, 시간 7에 다시 실행됩니다.
•	Thread 2 (주황색): 시간 2에서 실행되기 시작하여 시간 4에서 중단되고, 시간 7에 다시 실행됩니다.
•	Thread 3 (녹색): 시간 4에서 실행되기 시작하여 시간 6에서 중단되며, 시간 8에서 다시 실행됩니다.

2.	컨텍스트 스위치 포인트:
•	A (시간 2): Thread 1에서 Thread 2로 전환.
•	B (시간 4): Thread 2에서 Thread 3으로 전환.
•	C (시간 6): Thread 3에서 Thread 1로 전환.
•	D (시간 7): Thread 1에서 Thread 2로 전환.

Context Switching의 필요원인

1️⃣ 멀티태스킹 (Multitasking)

프로세스 및 스레드 간의 동시 실행: 여러 작업이 동시에 수행될 수 있도록 함으로써 사용자에게 응답성을 높입니다. 예를 들어, 사용자가 웹 브라우저를 사용하면서 음악을 들을 수 있습니다.
공유 자원 최적화: CPU는 하나의 프로세스나 스레드에만 할당되지 않고, 여러 작업 간에 분배됩니다.

2️⃣ 시스템 효율성 향상

블로킹 작업 관리: 한 프로세스가 I/O 작업 등으로 블로킹될 때, CPU는 다른 프로세스를 실행하여 자원을 낭비하지 않도록 합니다.
프로세스와 스레드의 균형 있는 실행: 작업의 중요도에 따라 우선순위를 조정하고, 특정 프로세스가 시스템을 독점하지 않도록 방지합니다.

3️⃣ 공정한 CPU 시간 분배

타임 슬라이싱: 각 프로세스나 스레드는 일정 시간 동안 CPU를 사용할 수 있으며, 이를 통해 모든 프로세스가 공정하게 CPU 시간을 얻습니다.
응답 시간 개선: 사용자 인터페이스와 같은 응답성이 중요한 애플리케이션이 빠르게 반응하도록 합니다.

4️⃣ 병행성 (Concurrency) 및 병렬성 (Parallelism) 지원

동시성 처리: 여러 작업이 동시에 진행되며, 실제 병렬 처리를 통해 멀티코어 CPU의 성능을 최대한 활용할 수 있습니다.
효율적인 자원 사용: 여러 코어를 가진 시스템에서 작업을 병렬로 분배하여 처리 속도를 높입니다.

5️⃣ 안정성과 신뢰성 향상

프로세스 격리: 각 프로세스가 독립적으로 실행되며, 하나의 프로세스가 실패하더라도 다른 프로세스에 영향을 미치지 않습니다.
시스템 복구 용이성: 특정 프로세스가 중단될 경우, 다른 프로세스를 계속 실행할 수 있어 시스템 전체의 안정성을 유지할 수 있습니다.

Context Switching 종류

1️⃣ 프로세스 간 컨텍스트 스위칭(Process Context Switching)

이 유형의 컨텍스트 스위칭은 운영 체제가 CPU를 한 프로세스에서 다른 프로세스로 전환할 때 발생합니다.

• 상황 : 멀티태스킹 운영 체제에서 여러 프로세스가 동시에 실행되는 것처럼 보이기 하기 위해
• 오버헤드 : 비교적 높습니다. 프로세스의 주소 공간, 프로세스 제어 블록(PCB) 등 많은 정보를 저장하고 복원해야 합니다.

2️⃣ 스레드 간 컨텍스트 스위칭(Thread Context Switching)

이 유형의 컨텍스트 스위칭은 동일한 프로세스 내에서 한 스레드에서 다른 스레드로 전환할 때 발생합니다.

• 상황 : 멀티스레딩 환경에서 한 스레드가 블로킹 되거나 타임 슬라이스가 종료될 때
• 오버헤드 : 상대적으로 낮은 편입니다. 같은 프로세스 내에서 주소 공간을 공유하므로 저장하고 복원해야 할 정보가 적습니다.

3️⃣ 커널 스레드 간 컨텍스트 스위칭(Kernel Thread Context Switching)

커널 스레드 간의 전환은 커널 수준에서 관리되며 운영 체제의 핵심 기능 중 하나입니다.

• 상황 : 커널에서 여러 커널 스레드를 실행할 때, 시스템 호출이나 드라이버 실행 중인 경우
• 오버헤드 : 커널 스레드 관리에 필요한 오버헤드가 발생하지만, 사용자 공간 프로세스보다 적습니다.

profile
Developer

0개의 댓글