기술(IT)

컨텍스트 스위치 (Context switch)와 인터럽트(Interrupt)

2019. 10. 12.
728x90

컨텍스트 스위치 (Context switch)

멀티태스킹 컨텍스트에서, 한 태스크에 대해 시스템 상태를 저장하여 작업을 일시 중지하고 다른 태스크가 재개되도록 하는 프로세스를 말한다. 컴퓨팅에서 컨텍스트 스위치는 프로세스 또는 스레드의 상태를 저장하여 나중에 같은 지점에서 복원하고 실행을 재개하는 과정이다. 이를 통해 여러 프로세스가 하나의 CPU를 공유할 수 있으며, 멀티태스킹 운영 체제의 필수적인 기능이다. 또한 컨텍스트 스위치는 작업이 디스크 스토리지에 액세스해야 하는 경우와 같이 인터럽트의 결과로 발생하여 다른 작업에 대한 CPU 시간을 확보할 수 있다. 일부 운영 체제에서는 사용자 모드와 커널 모드 작업 사이를 이동하기 위해 컨텍스트 스위치가 필요하다. 컨텍스트 전환 프로세스는 수행 중인 스위치의 특성에 따라 이 효과의 크기가 달라지지만 시스템 성능에 부정적인 영향을 미칠 수 있다.

컨텍스트 스위치에 대한 세 가지 잠재적 트리거가 있다.

멀티태스킹
가장 일반적으로, 어떤 스케줄링 계획 안에서, 다른 프로세스가 실행될 수 있도록 CPU에서 한 프로세스를 꺼야 한다. 이 컨텍스트 스위치는 I/O 또는 동기화 작업이 완료되기를 기다리는 것과 같이 스스로 실행 불가능한 상태로 만드는 프로세스에 의해 트리거될 수 있다. 사전 예방적 다중 작업 시스템에서 스케줄러는 여전히 실행 가능한 프로세스를 전환할 수도 있다. 다른 프로세스가 CPU 시간에 굶주리는 것을 방지하기 위해, 선제적 스케줄러는 종종 프로세스가 시간 절감을 초과할 때 타이머 인터럽트를 작동하도록 구성한다. 이 인터럽트는 스케줄러가 컨텍스트 스위치를 수행하기 위한 제어를 확보하도록 보장한다.

사용자 및 커널 모드 전환
운영 체제에서 사용자 모드와 커널 모드 간의 전환이 필요한 경우 컨텍스트 스위치는 필요하지 않다. 모드 전환 자체는 컨텍스트 스위치가 아니다. 그러나 운영 체제에 따라 컨텍스트 스위치도 이때 발생할 수 있다.

인터럽트 처리
현대의 아키텍처들은 인터럽트 기반이다. 이는 CPU가 예를 들어 디스크에서 데이터를 요청하면 읽기가 끝날 때까지 business-wait할 필요가 없다는 것을 의미한다. 즉, CPU는 요청을 발행하고 다른 실행을 계속할 수 있다. 읽기가 끝나면 CPU를 중단하여 읽기와 함께 표시할 수 있다. 인터럽트의 경우 인터럽트 핸들러라는 프로그램이 설치되며, 디스크로부터의 인터럽트를 처리하는 것이 인터럽트 핸들러다. 인터럽트가 발생하면 하드웨어는 컨텍스트의 일부를 자동으로 전환한다. 취급자는 특정 하드웨어 및 소프트웨어 설계의 세부사항에 따라 추가 컨텍스트를 저장할 수 있다. 종종 인터럽트를 처리하는 데 소요되는 시간을 최소화하기 위해 컨텍스트의 최소 부분만 변경된다. 커널은 인터럽트를 처리하기 위해 특별한 프로세스를 생성하거나 스케줄링하지 않고, 대신에 핸들러는 인터럽트 처리 초기에 설정된 컨텍스트에서 실행된다. 인터럽트 서비스가 완료되면 인터럽트가 발생하기 전에 유효했던 컨텍스트를 복원하여 인터럽트 프로세스가 적절한 상태로 다시 실행될 수 있도록 한다.

 

인터럽트(Interrupt)

인터럽트는 일반적으로 하드웨어 장치에 의해 주의가 필요한 전자적 또는 물리적 상태 변화를 나타내기 위해 사용된다. 인터럽트는 컴퓨터 멀티태스킹, 특히 실시간 컴퓨팅에서 흔히 사용된다. 이러한 방식으로 인터럽트를 이용하는 시스템은 인터럽트(interrupt)에 의해 구동된다고 한다. 요청이 받아들여지면 프로세서는 현재 활동을 중지하고 상태를 저장하며 인터럽트 핸들러라는 기능을 실행하여 이벤트를 처리함으로써 응답한다. 인터럽트 신호는 프로세서에 경고하고, 이벤트가 적시에 처리될 수 있도록 프로세서가 현재 실행 중인 코드를 중단하도록 요청하는 역할을 한다. 이러한 중단은 일시적이며, 인터럽트가 치명적인 오류를 나타내지 않는 한 인터럽트 핸들러가 끝난 후 프로세서가 정상적인 활동을 재개한다.  하드웨어 또는 소프트웨어 이벤트에 대응하여 인터럽트 신호가 발생할 수 있다. 이것들은 각각 하드웨어 인터럽트나 소프트웨어 인터럽트로 분류된다. 특정 프로세서의 경우 하드웨어 인터럽트 수는 프로세서에 대한 IRQ 신호 수에 의해 제한되지만 소프트웨어 인터럽트 수는 프로세서 설계에 의해 결정된다.

하드웨어 인터럽트
하드웨어 인터럽트 요청(IRQ)은 CPU에서 실행되는 "베어메탈" 프로그램에서 OS 또는 OS가 없는 경우, 외부(프로세서) 하드웨어 장치에 의해 발급되는 전자 신호다. 그러한 외부 장치는 컴퓨터의 일부일 수도 있고 외부 주변기기일 수도 있다. 예를 들어 키보드 키를 누르거나 마우스를 움직이면 하드웨어 인터럽트가 발생하여 프로세서가 키 스트로크 또는 마우스 위치를 읽게 된다. 소프트웨어 인터럽트와는 달리 하드웨어 인터럽트는 프로세서 클럭과 관련하여, 명령 실행 중에 언제든지 비동기식으로 도착할 수 있다. 따라서 모든 하드웨어 인터럽트 신호는 프로세서 클럭에 동기화하여 조건화되며, 명령 실행 경계에서만 작용한다.

마스크
프로세서는 일반적으로 하드웨어 인터럽트를 선택적으로 활성화 및 비활성화할 수 있는 내부 인터럽트 마스크 레지스터를 가지고 있다. 각 인터럽트 신호는 마스크 레지스터의 비트와 연결된다. 비트가 설정되고 해제될 때 인터럽트가 활성화되거나, 비트가 클 때 인터럽트가 활성화된다. 인터럽트가 비활성화되면 관련 인터럽트 신호가 프로세서에 의해 무시된다. 마스크의 영향을 받는 신호를 마스크 가능한 인터럽트라고 한다. 인터럽트 신호는 인터럽트 마스크의 영향을 받지 않으므로 비활성화할 수 없다. 이를 NMI라고 한다. NMI는 감시 타이머의 시간 초과 신호와 같이 어떤 상황에서도 무시할 수 없는 높은 우선순위 이벤트를 나타낸다.

가상 인터럽트
거짓 인터럽트는 거짓 인터럽트 요청 신호가 발생하는 것이다. 이는 일반적으로 전기적 간섭 또는 오작동 장치에 의해 생성되는 단명 유효하지 않은 신호 레벨이다.

소프트웨어 인터럽트
소프트웨어 인터럽트는 특정 지침을 실행하거나 특정 조건이 충족될 때 프로세서 자체에 의해 요청된다. 모든 소프트웨어 인터럽트 신호는 특정 인터럽트 핸들러와 관련이 있다.

LIST

'기술(IT)' 카테고리의 다른 글

임베디드 시스템(Embedded system)  (0) 2019.10.14
가상기억장치 (Virtual memory)  (0) 2019.10.13
교착상태 (Deadlock)  (0) 2019.10.11
커널 (Kernel)  (0) 2019.10.10
DMA (Direct Memory Access)  (0) 2019.10.09

댓글

추천 글