https://melonicedlatte.com/computerarchitecture/2019/02/12/213856.html

  • Trap과 Interrupt는 이벤트 처리 기법
  • 둘의 이벤트 발생 요인과 처리기법이 다름

Trap

  • Trap은 동기적으로 이벤트를 처리하는 기법
  • 주로 시스템 콜을 처리하는데 이용됨
    • Interrupt와는 달리 주로 현재 처리하고 있는 프로그램에 의해 발생하게 됨
  • 발생한 이벤트는 Trap Handler에 의해 처리됨
    • Trap Handler에서는 Interrupt Handler와 비슷하게 Trap Service Routine이 존재
    • 다만 Interrupt와는 달리 동기적으로 처리하므로 현재 처리하고 있는 프로그램에 대한 Context를 저장 복원할 필요가 없음
  • Trap이 발생하여 Trap Handler가 특정 동작을 수행하고 나면 바로 기존에 수행하던 동작으로 돌아올 수 있음

Interrupt

  • Interrupt는 비동기적으로 이벤트를 처리하는 기법
  • 주로 네트워크의 Packet 도착, I/O에 대한 이벤트를 처리하는데 이용됨
  • Trap과 다르게 현재 처리하고 있는 프로그램이 아닌 특정 하드웨어에 의해 발생
    • Interrupt는 하드웨어의 우선 순위에 따라 우선 순위를 가짐
    • 따라서 하드웨어들이 동시에 Interrupt걸어도 처리 가능
  • Interrupt Handler에 의해 처리됨
    • Interrupt Service Routine를 통해 이벤트를 처리
      • Interrupt를 처리한 뒤 복귀해야 하는 프로세스가 현재 프로세스가 아닐 수도 있음
      • 따라서 Interrupt Service Routine 진입 전에 반드시 Context에 대한 기록이 요구됨
    • Interrupt에 대한 처리를 마치면 저장된 Context를 복원하여 중단된 시점부터 다시 프로세스를 처리

특징

  • Service Routine 내의 처리 도중 Interrupt
    • Trap은 처리 도중 Interrupt를 받을 수도 있음
    • Interrupt는 처리 도중 Interrupt를 받을 수 없음
      • Interrupt의 depth가 깊어짐에 따라 하나의 Interrupt가 끝나는데 긴 시간이 요구될 수도 있기 때문
      • 따라서 Interrupt Service Routine은 최대한 짧게 수행되도록 설계되어 있음
  • Trap은 프로세스의 Context를 저장하지 않아도 됨
    • Interrupt보다 가벼움
    • Trap에 대한 처리가 완료될 때까지 Block됨
  • Interrupt는 프로세스의 Context를 저장해둬야됨
    • Trap보다 무거움
    • 처리가 완료될 때까지 Block되지 않음
  • 동일한 우선순위의 Interrupt가 동시에 발생하게 되면 하나의 Interrupt를 처리하고 나머지 Interrupt는 저장하거나 무시함