본문 바로가기

인터럽트와 예외

외부 인터럽트와 동기 예외를 구분하고 저장·처리·복귀 및 우선순위의 의미를 추적합니다.

CPU가 계산 중일 때 네트워크 수신이 완료됐습니다. 계산이 모두 끝난 후에만 수신을 확인하면 장치 대응이 늦어집니다. 인터럽트는 현재 실행 흐름에 외부 사건을 알리고 정해진 처리 경로로 이동하게 하는 메커니즘입니다.

사건의 원인이 다릅니다

일반적인 구분에서 장치·타이머 같은 외부 인터럽트는 현재 명령 실행과 비동기적으로 발생합니다. 잘못된 명령·페이지 접근 같은 예외(exception)는 현재 명령 실행과 동기적으로 연결됩니다. 소프트웨어가 명시적으로 시스템 호출용 명령을 실행하는 경우도 있습니다. 실제 ISA가 사용하는 trap·interrupt·exception 용어와 분류는 규격을 확인해야 합니다.

“인터럽트는 모든 상황에서 명령의 중간 상태를 그대로 멈춘다”는 설명을 피하세요. 교육용 모델은 명령 경계에서 요청을 확인합니다. 정밀 예외를 제공하는 구현에서는 어느 명령까지 완료됐는지 분명한 상태로 처리 경로에 들어가도록 구현합니다.

복귀할 상태를 보존합니다

처음 PC=12이고 R1=7이며 다음 명령이 시작되기 전에 요청을 받아들였다고 합시다. 교육용 모델에서 ①복귀 PC=12와 필요한 상태 저장 ②처리 루틴 주소로 이동 ③장치 원인 확인·데이터 처리·필요한 알림 해제 ④보존한 상태 복원 ⑤PC=12로 복귀합니다. 처리 루틴이 R1을 임시로 사용한다면 원래 R1=7을 복원해야 합니다.

어떤 상태를 하드웨어가 저장하고 소프트웨어가 저장할지는 ISA·OS 규약마다 다릅니다. 장치 요청을 처리했는지 확인하지 않고 복귀하면 같은 요청으로 다시 들어올 수 있습니다. 처리 루틴은 짧은 사건 처리와 더 큰 후속 작업을 나눌 수도 있습니다.

벡터·마스크·우선순위

인터럽트 벡터는 원인에 대응하는 처리 위치를 찾는 정보입니다. 마스크는 일부 요청을 잠시 받아들이지 않게 합니다. 요청이 사라졌다는 뜻이나 무조건 다시 받을 수 있다는 뜻은 아니며 장치·컨트롤러의 보류 규칙이 필요합니다.

여러 요청의 우선순위와 중첩 허용 여부를 정해야 합니다. 우선순위가 높은 요청이 낮은 우선순위의 요청을 처리하는 중에 들어오도록 허용하면 중첩 상태 보존도 필요합니다. 모든 예외를 무시할 수 있는 것은 아니며, 일부 사건은 일반 마스크 대상과 다릅니다.

공식 규칙의 예는 RISC-V privileged architecture입니다. 이 절의 PC=12 모델을 실제 RISC-V 트랩 저장·복귀 규칙이라고 단정하지 않습니다.

독립 문제: 반환 주소와 데이터 상태

명령 4 실행을 완료해 PC=5, R=10이 됐을 때 타이머 인터럽트를 받습니다. 처리 루틴이 R을 99로 바꾸고 종료합니다. PC만 5로 복원했을 때 문제가 무엇인지 쓰세요. 이어 인터럽트 전후 R을 보존해야 하는 이 모델의 최소 복귀 정보를 제안하세요.

힌트

원래 프로그램은 다음 명령에서 R=10이라고 기대할 수 있습니다. 실행 위치만이 상태의 전부가 아닙니다.

풀이와 오개념

PC가 맞아도 R=99이면 원래 프로그램의 계산 결과를 훼손합니다. 적어도 복귀 PC=5·R=10과 이 모델에서 필요한 상태 플래그를 보존해야 합니다. 처리에 사용하지 않는 레지스터까지 반드시 모두 저장한다는 결론은 호출·인터럽트 규약 없이 나오지 않습니다.

흐름을 그릴 때 사건 원인·처리 경로·복귀 상태를 따로 표시하세요. 다음 파이프라인에서는 여러 명령이 겹친 상태에서 왜 완료 순서가 중요해지는지 봅니다.