인터럽트를 하드웨어/소프트웨어로 나누는 이유가 무엇인가요?

misohouse의 이미지

소프트웨어 인터럽트와 하드웨어 인터럽트를 나누는 이유가 단지 인터럽트를 발생시키는 원천이 달라서 인가요?

아니면 다른 이유가 있나요?

그리고 하드웨어 인터럽트를 소프트웨어 인터럽트보다 먼저 처리해주는 이유가 뭔가요?

인터럽트에 대한 이해가 부족한듯합니다.. 고수님들의 답변 부탁드립니다. ^^

vivisection의 이미지

일단 전 로레벨 전문가는 아니고
나누는 이유는 단지 원천이 달라서인걸로 알고 있습니다

그리고 하드웨어 인터럽트를 먼저 처리하는 이유는 그렇게 작동하게 os에서 되어있고,
그래야만 os가 작동이 가능해서 그런걸로 알고있습니다

얼마전 롤 키 매핑 같은 프로그램을 만들어봤는데 이게 키보드 하드웨어 인터럽트에만 반응을 하더군요

sohn9086의 이미지

하드웨어 인터럽트는 CPU의 외부에서 어떤 일이 발생한 것을 전기적인 신호로 CPU에게 통지하는 것입니다. CPU가 하드웨어 인터럽트를 감지하면 하던일을 멈추고 그 인터럽트가 발생했을때 해야할 일이 적혀있는 곳(보통 인터럽트 핸들러라고 하는 곳) 으로 가서 그 일을 하고 원래 하던 작업으로 돌아옵니다.

소프트웨어 인터럽트는 외부에서 전기적인 신호가 도착한 것은 아니지만 CPU가 실행중인 작업이 "어떤 조건"을 만족시켰을 때, 하드웨어 인터럽트처럼 하던 일을 멈추고 소프트웨어 인터럽트 핸들러(혹은 예외 핸들러)로 가서 처리를 해 주고 원래 하던 작업으로 돌아옵니다.

소프트웨어 인터럽트의 "어떤 조건"이라는게 어떤 게 있으며 왜 그런게 필요한 지 이해하는 게 중요할 거 같네요.

생산적인 댓글을 달자