SWI(소프트웨어 인터럽트) 궁금한 점이 있습니다.

lis21lis의 이미지

보통 마우스나 키보드 입력을 하면
운영체제는 하던 일을 멈추고 벡터 테이블로 점프하고 다시 IRQ로 점프를 해서 하드웨어 입력을 처리하는 것으로 압니다.

이것이 제가 아는 하드웨어 인터럽트이고요

그런데 소프트웨어 인터럽트는 무엇을 말 하는지 잘 모르겠어요

익명사용자의 이미지

역시 하는 동작은 같습니다. 지정된 벡터 테이블로 점프하죠. 하드웨어 인터럽트도 마찬가지입니다. 정확한 순서는 IRQ 신호가 CPU로 들어오면 IRQ에 매핑된 벡터 테이블로 점프하는겁니다. IRQ 신호 대신 명령어로 인터럽트를 발생시키는거죠.

소프트웨어 인터럽트는 주로 유저모드와 커널모드가 분리된 운영체제에서 system call을 수행할 때 사용합니다. 유저모드와 커널모드가 분리되어 있을 경우 유저모드의 권한으로 커널의 함수를 수행할 수는 없기 때문에 소프트웨어 인터럽트를 발생시켜 커널모드로 context switching을 하는 겁니다.