CS 공부 & 면접 맛보기 0x0F [운영체제] : 인터럽트와 트랩
2025. 1. 20. 23:00ㆍ코딩 도구/CS 면접 도구
반응형
인터럽트와 트랩
질문
인터럽트(Interrupt)와 트랩(Trap)의 차이점은 무엇인가요?
면접 답변
인터럽트(Interrupt)와 트랩(Trap)은 모두 CPU의 정상적인 명령어 흐름을 제어하는 메커니즘입니다. 그러나 발생 원인과 동작 방식에서 차이가 있습니다.
- 인터럽트(Interrupt):
- 외부 하드웨어 장치(키보드, 마우스, 타이머 등)에 의해 발생.
- 비동기적으로 발생하며, 현재 실행 중인 프로세스를 일시 중지하고 처리.
- 트랩(Trap):
- 소프트웨어에 의해 발생하는 예외 상황이나 시스템 호출로 발생.
- 동기적으로 발생하며, 예외 상황(예: 0으로 나누기) 처리 또는 OS 서비스 요청.
1. 인터럽트(Interrupt)란?
정의: 인터럽트는 CPU가 프로그램 실행을 일시 중단하고 외부 장치의 요청을 처리하기 위해 발생하는 신호입니다.
특징:
- 비동기적 발생 (외부 이벤트)
- 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉨
하드웨어 인터럽트 예시:
- 키보드 입력
- 마우스 클릭
- 타이머 인터럽트
소프트웨어 인터럽트 예시:
- 시스템 콜(System Call)
C++ 인터럽트 예제 (시뮬레이션 코드):
#include <iostream>
#include <csignal>
using namespace std;
void signalHandler(int signum) {
cout << "Interrupt signal (" << signum << ") received.\n";
exit(signum);
}
int main() {
signal(SIGINT, signalHandler);
cout << "Press Ctrl+C to trigger an interrupt." << endl;
while (true);
return 0;
}
2. 트랩(Trap)이란?
정의: 트랩은 소프트웨어적으로 발생하는 예외 상황이나 시스템 호출을 처리하기 위해 CPU가 발생시키는 신호입니다.
특징:
- 동기적 발생 (현재 실행 중인 명령어와 직접 관련)
- 예외 상황과 시스템 호출을 포함
예외 상황 예시:
- 0으로 나누기
- 메모리 접근 오류
시스템 호출 예시:
- 파일 읽기/쓰기
- 메모리 할당 요청
C++ 트랩 예제 (0으로 나누기 시뮬레이션):
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 0;
try {
cout << "Result: " << (a / b) << endl;
} catch (const exception& e) {
cerr << "Exception caught: Division by zero!" << endl;
}
return 0;
}
인터럽트와 트랩의 비교표
구분인터럽트(Interrupt)트랩(Trap)
발생 원인 | 외부 장치 (키보드, 타이머 등) | 소프트웨어 (예외, 시스템 호출) |
발생 시점 | 비동기적 (외부 이벤트) | 동기적 (현재 명령어와 직접 관련) |
예시 | 키보드 입력, 타이머 신호 | 0으로 나누기, 시스템 호출 |
핸들러 필요 여부 | 필요 (인터럽트 핸들러) | 필요 (예외 핸들러) |
결론
- 인터럽트와 트랩은 모두 CPU의 흐름을 중단하고 특정 작업을 처리하는 메커니즘입니다.
- 인터럽트는 외부 이벤트에 의해 발생하고, 비동기적으로 동작합니다.
- 트랩은 소프트웨어 예외 및 시스템 호출로 인해 발생하며, 동기적으로 동작합니다.
반응형
'코딩 도구 > CS 면접 도구' 카테고리의 다른 글
CS 공부 & 면접 맛보기 0x11 [운영체제] : 페이징이란 (0) | 2025.01.24 |
---|---|
CS 공부 & 면접 맛보기 0x10 [운영체제] : Process 상태 변화 과정 (0) | 2025.01.22 |
CS 공부 & 면접 맛보기 0x0E [운영체제] : 데드락(Deadlock)의 해결 방법 (0) | 2025.01.17 |
CS 공부 & 면접 맛보기 0x0D [운영체제] : 데드락(Deadlock) (0) | 2025.01.15 |
CS 공부 & 면접 맛보기 0x0C [운영체제] : Race Condition을 방지하는 방법 (0) | 2025.01.13 |