컨텍스트 스위치란 무엇입니까?

컴퓨팅 초기에 CPU는 순전히 순차적인 기계였습니다. 이것은 디자인을 단순하게 유지하는 데 도움이 되었습니다. 그러나 성능도 제한되었습니다. 많은 프로세스가 시스템 RAM 또는 하드 드라이브에서 데이터를 요청해야 합니다. 시스템 RAM은 빠르지만 여전히 CPU만큼 빠르지 않으므로 RAM에서 응답이 돌아올 때까지 유휴 상태로 두고 데이터를 기다립니다. RAM보다 훨씬 느린 저장 장치인 하드 드라이브에서 요청한 데이터의 경우 상황이 더욱 악화됩니다. 여기에서 CPU는 응답을 기다리면서 상당한 시간 동안 유휴 상태일 수 있습니다. 불행히도 순차 프로세서에서는 이 문제를 피할 수 없습니다.

고맙게도 최신 CPU는 더 이상 순차적이지 않습니다. 비순차 실행 및 다중 스레드와 같은 많은 고급 기능을 제공합니다. 비순차적 실행을 통해 CPU는 다가오는 명령을 분석하고 재정렬하여 효율성을 극대화할 수 있습니다. 다중 스레딩을 사용하면 CPU에서 수많은 다른 스레드 또는 프로세스를 실행할 수 있습니다.

여러 개의 코어가 있는 것 외에 CPU는 한 번에 둘 이상을 실행할 수 없습니다. 그러나 각각 상당한 양의 일정한 CPU 시간을 얻을 수 있도록 정기적으로 전환하여 그렇게 보이게 할 수 있습니다. 스레드 간 전환 프로세스를 컨텍스트 전환이라고 합니다.

컨텍스트 스위치는 어떻게 작동합니까?

컨텍스트 스위치는 이전 스레드를 전환하고 새 스레드를 전환하는 두 부분으로 구성됩니다. 이전 스레드를 변경하려면 CPU가 프로세스 제어 블록 또는 스위치 프레임에 현재 상태를 저장해야 합니다. 여기에는 관련 CPU 레지스터의 값이 포함되며 항상 프로그램 카운터의 값으로 구성됩니다. 스레드가 저장되면 필요할 때 복원할 수 있도록 준비 큐에 핸들을 추가할 수 있습니다.

다음 스레드에서 전환하는 것은 역순으로 동일한 프로세스입니다. 스레드는 가중치에 따라 준비 큐에서 선택됩니다. 또는 스레드가 기다리고 있던 이벤트가 이제 준비되었거나 완료되었음을 나타내는 인터럽트에 의해 선택될 수 있습니다. 그러면 스레드의 데이터가 올바른 레지스터에 복사되고 스레드가 복원됩니다. 이 시점에서 새 스레드는 중지된 위치에서 작업을 계속할 준비가 됩니다.

성능 영향

스레드를 켜거나 끌 때 데이터를 읽고 쓰는 프로세스는 사용되는 메모리가 일반적으로 고속이기 때문에 그다지 많지는 않지만 약간의 시간이 걸립니다. 그러나 추가 성능 비용이 있습니다. 스레드를 전환할 때 이전 스레드의 CPU 캐시 및 버퍼에 있는 데이터는 새 스레드와 관련이 없을 수 있습니다. 이로 인해 TLB( Translation Lookaside Buffer ) 가 크게 증가 하고 캐시 누락이 발생할 수 있습니다.

두 스레드가 동일한 프로세스에 의해 생성된 경우 상당한 메모리 요소를 공유할 가능성이 있으므로 이 효과는 중요하지 않습니다. 다른 메서드에서 스레드 간에 전환할 때 TLB를 완전히 플러시해야 합니다. 이로 인해 100% TLB 미스율이 발생하고 CPU 캐시의 적중률도 크게 감소합니다.

CPU는 컨텍스트 전환을 위한 하드웨어 지원을 제공하지만 운영 체제는 일반적으로 이를 사용하지 않습니다. 하드웨어 컨텍스트 전환은 데이터 관련성에 대한 인식이 부족합니다. 따라서 모든 레지스터를 저장하고 복원해야 하므로 소요 시간과 필요한 저장 공간이 증가합니다.

또한 하드웨어 컨텍스트 전환은 필요할 수 있는 기능인 부동 소수점 레지스터의 데이터를 저장하지 않습니다. 따라서 소프트웨어 컨텍스트 전환이 일반적으로 사용됩니다. 부동 소수점 레지스터를 포함하여 모든 레지스터의 데이터를 유지할 수 있습니다. 소프트웨어 컨텍스트 스위치는 데이터의 관련성을 이해하고 있습니다. 즉, 필요에 따라 저장할 항목을 선택하고 선택할 수 있습니다.

결론

컨텍스트 스위치는 최신 CPU가 실행 중인 스레드를 전환하는 프로세스입니다. 프로세스에는 현재 스레드의 관련 데이터를 저장하고 새 스레드의 관련 데이터를 복원하는 작업이 포함됩니다. 컨텍스트 전환은 전환을 수행하는 데 필요한 시간과 관련된 성능 비용과 캐시 및 TLB 미스 비율이 증가하여 저장되지 않기 때문에 발생합니다. 컨텍스트 스위치는 모든 스레드가 충분한 CPU 시간을 공급받도록 하기 위해 또는 라인이 기다리고 있던 이벤트가 완료되었음을 나타내는 인터럽트 때문에 발생합니다.



Leave a Comment

Powerbeats Pro가 케이스에서 충전되지 않을 때 해야 할 일

Powerbeats Pro가 케이스에서 충전되지 않을 때 해야 할 일

Powerbeats Pro가 충전되지 않으면 다른 전원 소스를 사용하고 귀마개를 청소하세요. 귀마개를 충전하는 동안 케이스를 열어 두세요.

3D 프린팅 기본: 필수 유지보수 체크리스트

3D 프린팅 기본: 필수 유지보수 체크리스트

장비를 좋은 상태로 유지하는 것은 필수입니다. 다음은 3D 프린터를 최상의 상태로 유지하기 위한 유용한 팁입니다.

Canon Pixma MG5220: 잉크 없이 스캔하기

Canon Pixma MG5220: 잉크 없이 스캔하기

Canon Pixma MG5220에서 잉크가 없을 때 스캔을 활성화하는 방법입니다.

노트북 과열의 5가지 이유

노트북 과열의 5가지 이유

노트북이 과열되는 몇 가지 가능한 이유와 이 문제를 피하고 장치를 시원하게 유지하는 팁과 요령을 알아보세요.

데스크탑 및 노트북 PC에 SSD 설치하는 방법

데스크탑 및 노트북 PC에 SSD 설치하는 방법

PC의 내부 저장 공간을 업그레이드하기 위해 SSD를 구입했지만 설치 방법을 모르겠습니까? 지금 이 기사를 읽어보세요!

GeForce Now 오류 코드 0xC272008F 수정 방법

GeForce Now 오류 코드 0xC272008F 수정 방법

게임의 밤을 준비하고 있으며, "Star Wars Outlaws"를 GeForce Now 스트리밍 서비스에서 플레이하려고 합니다. Ubisoft 게임을 다시 시작할 수 있도록 GeForce Now 오류 코드 0xC272008F를 수정하는 방법을 알아보세요.

3D 프린팅 기초: 3D 프린터 유지보수 팁

3D 프린팅 기초: 3D 프린터 유지보수 팁

3D 프린터를 효과적으로 유지하는 것은 최상의 결과를 얻는 데 매우 중요합니다. 기억해야 할 중요한 팁을 소개합니다.

프린터의 IP 주소 찾는 방법

프린터의 IP 주소 찾는 방법

프린터의 IP 주소를 찾는 데 어려움이 있습니까? 우리는 그것을 찾는 방법을 보여줄 것입니다.

Samsung 휴대폰에서 AirPods 사용하기

Samsung 휴대폰에서 AirPods 사용하기

Samsung 휴대폰에 AirPods 구입 여부를 고민하고 있다면, 이 가이드가 도움이 될 것입니다. 가장 간단한 질문은 호환성 여부입니다.

Apple Watch를 하드 리셋하는 방법

Apple Watch를 하드 리셋하는 방법

Apple Watch 하드 리셋 및 공장 초기화 방법을 단계별로 설명합니다. 소프트 리셋부터 하드 리셋까지, 모든 모델에 대한 가이드를 제공합니다.