정의\
시스템 호출(system call)은 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다. 보통 C나 C++과 같은 고급 언어로 작성된 프로그램들은 직접 시스템 호출을 사용할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법이다.
즉 user-level의 다양한 프로그램들은 하드웨어를 완벽히 이용하기 위해 kernel의 도움을 받아야하고 이는
system call을 통해서 이뤄진다.
이렇게 두가지 모드로 나눈 이유는 모드의 전환을 통해 낮은 수준의 시스템에 방해가 되지 않고 안정성과 보안을 유지하는데 도움이 되기때문이다.
Interrupt
우리가 흔히 말하는 Interrupt는 하드웨어 인터럽트, 비동기식 인터럽트라고 한다.
정해진 기준없이 예측불허하게 이벤트가 발생한다. ex ) I/O interrupt, ketboard event, etc
Trap
트랩은 0으로 나누기 오류 또는 종료요청 과 같은 특정 조건에 대한 응답으로 프로그램의 정상적인 실행을 중단하는데 사용되는 메커니즈이다. 흔히 소프트웨어 인터럽트라고 한다.
또 CPU 내부 인터럽트라고 불리는만큼 동기적으로 작동하며, 어느정도 예상이 가능하다.
Exception
정상적인 제어흐름을 방해하는 실행에 발생하는 이벤트입니다.
Trap vs Exception\
Trap은 Exception과 비교해서 저수준 메커니즘이다. 즉 더 low level로 구현되어 속도와 성능에 중요성을 둔다. Exception은 high level로 구현되어 구조화가 되고 관리가능한 오류처리메커니즘을 허용합니다.
정의\
인터럽트 서비스 루틴(Interrupt Service Routine)는 인터럽트 핸들러 라고도 하며 실제 인터럽트를 처리하는 루틴으로 실행 중이던 레지스터와 PC를 저장하여 실행중이던 CPU의 상태를 보종하고 인터럽트 처리가 끝나면 원래 상태로 복귀합니다. 운영체제 코드 부분에는 각종 인터럽트 별로 처리해야 할 내용이 이미 프로그램이 되어 있습니다.
위와 같은 과정을 가지고 문제가 해결된다.
Polling vs Interrupt\
Interrupt : 하드웨어의 변화를 감지하여 외부로부터의 입력을 CPU가 알아채는 방법이다. 인터럽트는 이벤트를 수행하라는 IRQ를 받으면, 인터럽트 핸들러를 통해 ISR이 동작하게 된다.\
Polling : 하드웨어의 변화를 지속적으로 읽어 들이며 이벤트의 수행 여부를 주기적으로 검사하여 해당 신호를 받았을때 이벤트를 실행하는 방식이다.\
즉, polling은 하드웨어에게 응답이 오기를 계속 기다리고 묻는것이라면, interrupt는 직접 하드웨어가 보내주는 것이다.