0

나는 (적어도 조립 수준)에 적합한이 없었다 ... 나는 SO에 Interrupts and exceptions이 질문을 발견, 예외 및 인터럽트 구별을 위해예외 및 인터럽트

일부 답변을 검색 할 때 :

"예외는 소프트웨어 버전의 인터럽트"그러나 소프트웨어 인터럽트가 있습니다!
"인터럽트는 비동기이지만 예외는 동기식입니다."맞습니까?

위와 같이같은 "인터럽트는 하드웨어 구현 트랩 있습니다 예외가 소프트웨어 구현" "인터럽트는 정기적으로 발생!"
나는 사람이 더 나은 해답을 제공 할 수 있다면 또한 내가 감사 할 것, 이러한 답변의 일부를 잘한다면 찾을 필요가


...

감사합니다!

답변

2

인터럽트는 일반적으로 하드웨어 상태의 변경을 알리는 방법입니다. 주변 장치는 전기 신호에 의해 인터럽트 컨트롤러에 연결되어 주소 벡터를 각 가능한 신호에 우선 순위를 부여하고 할당합니다. 인터럽트 컨트롤러는 감지 된 인터럽트 조건을 CPU로 전달하며, 인터럽트가 활성화되었는지 여부 및/또는이 특정 입력이 마스크 불가능한지 여부에 따라 신호 실행 상태 변경을 처리하기 위해 현재 실행 상태를 '인터럽트'할 수 있습니다. 일부 아키텍처에서는 인터럽트 조건이 하드웨어 입력 외에 소프트웨어 (예 : int 니모 닉이있는 x86)에 의해 시작될 수 있습니다.

예외 구현 범위가 더 넓습니다. 68K와 같은 일부 CPU 아키텍처에서 예외는 인터럽트와 유사하지만 처리해야하는 일부 CPU 상태에 의해 생성됩니다. 예를 들어, 0으로 나누기, 잘못된 명령어, I/O 버스 타임 아웃 등과 같은 예외가 발생하는 조건이 있습니다. 이러한 예외를 처리하면 명령을 에뮬레이션하고 명령 집합을 가상으로 확장하는 등의 작업을 수행 할 수 있습니다.

예외는 특정 오류 조건을 트랩하고 처리 할 수있는 C++ 언어와 같은 소프트웨어 전용 개념 일 수도 있습니다.

일반적으로 유효성을 찾으려는 진술은 적용하려는 정확한 플랫폼에 따라 참 또는 거짓 일 수 있습니다.

1

일반적으로 사용되는 예외는 프로그램의 비즈니스 논리가 오류 처리 논리에 포함되지 않도록 프로그램의 정상적인 논리 흐름 외부의 이벤트를 처리하기 위해 프로그래밍 언어에서 제어 흐름의 한 형태입니다. 예외의 '처리'는 상황에 따라 다릅니다. 유용했던 많은 유스 케이스에 대해 GoTo와 비슷합니다.

인터럽트는 타이머 틱이나 INT21을 "호출하는"프로그램처럼 특정 이벤트가 발생할 때 특정 동작을 트리거하는 하드웨어 지원 '트랩'입니다. 미리 정의 된 것을 수행하는 등록 된 핸들러가 있습니다.

모두 동기식 또는 비동기식 일 수도 있고 아닐 수도 있습니다.