인터럽트와 트랩 간의 차이
인터럽트 대 트랩
모든 컴퓨터에서 프로그램을 정상적으로 실행하는 동안 CPU가 일시적으로 중단 될 수있는 이벤트가 발생할 수 있습니다. 이러한 이벤트를 인터럽트라고합니다. 인터럽트는 소프트웨어 또는 하드웨어 결함으로 인해 발생할 수 있습니다. 하드웨어 인터럽트는 (간단히) 인터럽트라고하며 소프트웨어 인터럽트는 예외 또는 트랩이라고합니다. 예외는 자동 생성 된 소프트웨어 인터럽트이지만 트랩은 프로그래머가 초기화 한 소프트웨어 호출 인터럽트입니다. 인터럽트 (소프트웨어 또는 하드웨어)가 발생하면 제어는 인터럽트에 의해 발생하는 조건을 처리 할 수있는 ISR (인터럽트 서비스 루틴)이라는 특수 서브 루틴으로 전송됩니다.
인터럽트 란 무엇입니까?
인터럽트라는 용어는 일반적으로 하드웨어 인터럽트를 위해 예약되어 있습니다. 외부 하드웨어 이벤트로 인해 프로그램 제어가 중단됩니다. 여기서 외부는 CPU 외부에있는 것을 의미합니다. 하드웨어 인터럽트는 일반적으로 타이머 칩, 주변 장치 (키보드, 마우스 등), I / O 포트 (직렬, 병렬 등), 디스크 드라이브, CMOS 클록, 확장 카드 (사운드 카드, 비디오 카드 등). 즉, 실행중인 프로그램과 관련된 일부 이벤트로 인해 하드웨어 인터럽트가 거의 발생하지 않습니다. 예를 들어, 사용자가 키보드를 누르는 것과 같은 이벤트 또는 내부 하드웨어 타이머가 시간 초과되면 이러한 종류의 인터럽트가 발생할 수 있으며 CPU에 특정 장치의주의가 필요함을 알릴 수 있습니다. CPU가 현재하고있는 일을 중단 (즉, 현재의 프로그램을 일시 정지)하는 것과 같은 상황에서, 장치에 요구되는 서비스를 제공하고 정상적인 프로그램으로 돌아갈 것이다. 하드웨어 인터럽트가 발생하고 CPU가 ISR을 시작할 때, 다른 하드웨어 인터럽트는 디스 에이블된다 (예를 들어, 80 × 86 머신). ISR이 실행되는 동안 다른 하드웨어 인터럽트가 필요하면 인터럽트 플래그 (sti 명령 사용)를 지워서 명시 적으로 수행해야합니다. 80x86 기계에서는 인터럽트 플래그를 지우면 하드웨어 인터럽트에만 영향을 미칩니다.
함정이란 무엇입니까? 트랩은 프로그래머에 의해 시작된 제어 전달로 식별 될 수 있습니다. 트랩이라는 용어는 Exception (자동으로 발생하는 소프트웨어 인터럽트)이라는 용어와 서로 바꿔서 사용됩니다. 그러나 일부는 함정이 단순히 특별한 서브 루틴 호출이라고 주장 할 수 있습니다. 그래서 그들은 소프트웨어에 의한 인터럽트 범주에 빠지게됩니다. 예를 들어, 80 x 86 머신에서 프로그래머는
int 명령을 사용하여 트랩을 시작할 수 있습니다. 트랩은 항상 무조건적이기 때문에 컨트롤은 항상 트랩과 관련된 서브 루틴으로 전송됩니다. 트랩을 처리하기위한 루틴을 호출하는 정확한 명령어는 명시적인 명령어가 트랩을 지정하는 데 사용되므로 쉽게 식별 할 수 있습니다.
인터럽트는 하드웨어 인터럽트이며 트랩은 소프트웨어 호출 인터럽트입니다. 하드웨어 인터럽트 발생은 일반적으로 다른 하드웨어 인터럽트를 비활성화하지만 트랩에는 해당되지 않습니다. 트랩이 제공 될 때까지 하드웨어 인터럽트를 허용하지 않으려면 명시 적으로 인터럽트 플래그를 지워야합니다. 일반적으로 컴퓨터의 인터럽트 플래그는 트랩이 아닌 (하드웨어) 인터럽트에 영향을줍니다. 즉,이 플래그를 지우더라도 트랩을 방지 할 수는 없습니다. 트랩과 달리 인터럽트는 CPU의 이전 상태를 유지해야합니다.