컨텍스트 전환

목차
공유 리소스로서의 CPU 시간
최신 운영 체제는 수십 또는 수백 개의 활성 스레드를 처리합니다.
CPU 코어가 몇 개만 존재하므로 대부분의 스레드는 작은 하위 집합이 실행되는 동안 대기열에서 대기합니다.
A 컨텍스트 전환 를 사용하면 스케줄러가 실행 중인 스레드 하나를 일시 중지하고 다른 스레드를 다시 시작할 수 있습니다.
이러한 빠른 전환은 병렬 처리의 착각을 불러일으키고 나중에 크래시 덤프에서 볼 수 있는 모습도 형성합니다.
스레드의 실행 컨텍스트 내부
각 스레드는 단순한 코드와 데이터 그 이상을 전달합니다.
또한 커널이 올바르게 저장하고 복원해야 하는 완전한 실행 컨텍스트가 있습니다.
이러한 컨텍스트에는 다음이 포함됩니다:
범용 CPU 레지스터 및 플래그
인스트럭션 포인터 및 스택 포인터
해당되는 경우 세그먼트 레지스터 및 제어 레지스터 분할
커널 및 사용자 스택, 그리고 일부 스케줄러 메타데이터
커널이 스레드에서 벗어나면 이 상태를 기록해야 합니다.
스케줄러가 동일한 스레드로 돌아가면 모든 것을 복원하여 일시 중지된 것처럼 실행이 계속됩니다.
컨텍스트 전환 중 커널이 수행하는 단계
낮은 수준에서 컨텍스트 전환은 예측 가능한 순서를 따릅니다.
아키텍처에 따라 세부 사항은 달라지지만 핵심 작업은 비슷하게 유지됩니다.
실행 중인 스레드가 타이머 인터럽트 또는 차단 시스템 호출과 같은 스케줄링 지점에 도달합니다.
커널은 CPU 레지스터, 스택 포인터 및 일부 제어 정보를 스레드의 커널 스택 또는 제어 블록에 저장합니다.
스케줄러는 우선순위, 공정성 및 프로세서 선호도에 따라 다음 실행 가능한 스레드를 선택합니다.
커널은 레지스터와 스택 포인터를 포함하여 다음 스레드에 대해 저장된 컨텍스트를 로드합니다.
컨트롤은 새 스레드에서 사용자 또는 커널 모드로 돌아가며, 이전 명령 포인터에서 계속됩니다.
이 시퀀스는 바쁜 시스템에서 초당 수백만 번 발생합니다.
이 단계에서 버그가 발생하면 데이터 손상, 중단 또는 덤프 파일을 생성하는 충돌이 발생할 수 있습니다.
컨텍스트 전환을 유발하는 트리거
컨텍스트 전환은 무작위로 발생하지 않습니다.
이러한 이벤트는 OS와 하드웨어 내부에서 잘 정의된 이벤트에서 발생합니다.
일반적인 트리거:
실행 중인 스레드 블록은 I/O, 잠금 또는 대기 객체
하드웨어 타이머 인터럽트는 스레드가 해당 시간 조각을 사용했음을 나타냅니다.
우선 순위가 높은 스레드를 실행할 준비가 되었습니다.
스케줄러는 코어 간 작업 재조정 신호를 수신합니다.
크래시 덤프는 치명적인 상태가 발생하거나 커널이 이러한 전환 중 심각한 불일치를 감지했을 때 어떤 스레드가 실행되었는지 캡처합니다.
크래시 덤프 및 스레드 상태
Windows에서 버그가 발견되면 스케줄을 정지하고 디스크에 메모리 스냅샷을 씁니다.
이 스냅샷에는 일반적으로 여러 스레드와 오류를 발생시키거나 감지한 컨텍스트에 대한 세부 정보가 포함됩니다.
일반적으로 크래시 덤프는 기록을 남깁니다:
장애가 발생한 시점의 각 CPU의 활성 스레드
충돌 직전에 어떤 함수가 실행되었는지 보여주는 커널 스택
준비 대기열 및 대기 상태를 설명하는 구조
분석가는 이러한 스레드와 마지막 컨텍스트 전환 이벤트를 조사하여 어떤 드라이버, 시스템 호출 또는 사용자 작업이 장애에 기여했는지 추론합니다.
성능 및 안정성 고려 사항
컨텍스트 전환을 사용하면 멀티태스킹이 가능하지만 오버헤드가 발생합니다.
커널은 권한 수준 사이를 이동하고, 일부 CPU 상태를 플러시하거나 다시 로드하고, 캐시 콘텐츠를 방해해야 합니다.
컨텍스트 스위치가 너무 많을 수 있습니다:
스케줄러에 소요되는 CPU 시간 늘리기
캐시 및 TLB 로컬리티 손상
I/O 집약적인 애플리케이션의 처리량 감소
불안정 드라이버 또는 사용자 프로세스의 잘못된 동작으로 인해 극단적인 전환 패턴이 발생하여 크래시 덤프에 대기 및 깨우기 작업의 긴 스택으로 나타나기도 합니다.
심한 경우 이러한 전환 중 버그로 인해 메모리 손상이나 교착 상태가 발생할 수 있습니다.
덤프 분석 시 컨텍스트 정보의 실제적 사용

크래시 덤프 분석은 종종 현재 스레드와 그 컨텍스트에서 시작됩니다.
그런 다음 스케줄링 및 잠금 동작을 이해하기 위해 외부에서 작업합니다.
Windows 덤프의 키 확인
디버거에서 Windows 크래시 덤프를 열면 다음과 같이 할 수 있습니다:
버그 검사 코드 및 매개 변수 쿼리
현재 스레드와 해당 호출 스택을 검사합니다.
동일한 프로세스의 다른 스레드와 해당 상태를 열거합니다.
대기 체인 및 동기화 개체 살펴보기
이 정보는 드라이버가 컨텍스트 스위치 내부에서 충돌했는지, I/O 완료 중인지, 타이머 또는 인터럽트를 처리하는 동안 충돌했는지 판단하는 데 도움이 됩니다.
데이터 복구와의 관계
활성 쓰기를 중단하는 충돌이 발생하면 파일 시스템이 일관되지 않게 될 수 있습니다.
근본 원인을 해결한 후에도 다음을 수행해야 할 수 있습니다. 파일 복구 손상된 볼륨으로부터 보호합니다.
크래시 덤프를 사용하여 타이밍과 책임 있는 구성 요소를 파악한 다음, 다음을 참조할 수 있습니다. Magic Data Recovery 를 사용하여 영향을 받은 디스크를 스캔하고 손실되거나 부분적으로 기록된 데이터를 복원할 수 있습니다.
이 조합은 시스템이 실패한 이유와 이후 사용자 콘텐츠를 재구성하는 방법을 모두 파악할 수 있는 인사이트를 제공합니다.
Windows 7/8/10/11 및 Windows Server 지원
결론
컨텍스트 전환을 통해 운영 체제는 여러 스레드에서 CPU 코어를 공유할 수 있습니다.
스케줄러는 실행 컨텍스트를 지속적으로 저장하고 복원하며, 이 과정에서 심각한 실수가 발생하면 충돌로 나타날 수 있습니다.
크래시 덤프는 컨텍스트 및 스케줄링 관계를 포함하여 스레드의 마지막으로 알려진 상태를 보존합니다.
이러한 덤프를 읽고 다음과 같은 안전한 복구 도구와 페어링하여 Magic Data Recovery, 를 사용하면 장애를 진단하고 갑작스러운 시스템 중단으로 인한 부작용으로부터 사용자 데이터를 보호할 수 있습니다.
자주 묻는 질문
컨텍스트 전환은 어떻게 작동하나요?
컨텍스트 전환을 트리거하는 것은 무엇인가요?
콘텐츠 전환이란 무엇인가요?
컨텍스트 전환의 예에는 어떤 것이 있나요?
ADHD 환자에게는 컨텍스트 전환이 어려울까요?
컨텍스트 전환이 두뇌에 좋은가요?
콘텐츠 전환은 어떻게 이루어지나요?
컨텍스트 전환이 좋은가요, 나쁜가요?
L1, L2, L3 스위치란 무엇인가요?
Eddie는 컴퓨터 업계의 여러 유명 회사에서 10년 이상 근무한 경력을 가진 IT 전문가입니다. 그는 모든 프로젝트에 심도 있는 기술 지식과 실용적인 문제 해결 기술을 제공합니다.



