Search

예외 종류

 인터럽트(Interrupt)

하드웨어가 CPU에게 어떤 이벤트를 알리기 위해 보내는 신호 : 비동기적으로 발생하며, 현재 실행 중인 프로그램과는 무관하게 발생 가능
발생 원인
I/O 인터럽트: 디스크에서 파일 읽기/쓰기와 같은 I/O 작업이 완료되었을 때 발생
타이머 인터럽트: 운영체제가 CPU 스케줄링을 위해 주기적으로 발생시키는 인터럽트
외부 장치 인터럽트: 키보드 입력, 마우스 클릭 등 외부 장치에서 발생한 이벤트
처리
CPU는 인터럽트를 받으면 현재 작업을 잠시 멈추고, 인터럽트 벡터 테이블(Interrupt Vector Table)을 참조하여 해당 인터럽트 핸들러를 실행
Q) CPU가 인터럽트를 처리하는 과정

 트랩(Trap) 또는 시스템 콜(System Call)

사용자 프로그램이 의도적으로 운영체제의 서비스를 요청하기 위해 발생시키는 소프트웨어적인 예외(동기적으로 발생하며, 시스템 콜이 대표적인 예시)
발생 원인
파일 열기/쓰기: open(), read(), write() 등 파일 관련 작업을 할 때
메모리 할당: malloc()과 같은 함수로 메모리를 할당받을 때
프로세스 생성: fork()와 같은 함수로 새로운 프로세스를 생성할 때
처리
사용자 프로그램은 특정한 시스템 콜 명령어를 실행하고, CPU는 트랩이 발생하면 커널 모드로 전환하여 운영체제 코드를 실행

 오류(Fault)

프로그램 실행 중에 발생하는 예상치 못한 문제로, 대개 프로그램의 버그나 잘못된 동작으로 인해 발생. 오류는 복구 가능
발생 원인
페이지 폴트 (Page Fault) : 접근하려는 가상 메모리 페이지가 물리 메모리에 없는 경우
운영체제가 디스크에서 페이지를 가져와 복구
세그멘테이션 폴트 (Segmentation Fault): 유효하지 않은 메모리 영역에 접근을 시도할 때 발생
일반적으로 프로그램이 비정상적으로 종료
처리
운영체제가 오류를 감지하고, 해당 오류를 처리하는 루틴을 실행. 페이지 폴트의 경우처럼 복구하여 프로그램을 재개시키거나, 복구가 불가능하면 프로그램을 종료시킴

 중단(Abort)

복구할 수 없는 심각한 오류가 발생하여 프로그램의 실행을 즉시 중단시키는 예외
발생 원인
하드웨어 오류: 하드웨어 결함으로 인해 실행을 계속할 수 없을 때
일관성 오류: 운영체제가 관리하는 데이터 구조에 치명적인 손상이 발생했을 때
처리
운영체제는 중단 예외가 발생하면 해당 프로그램을 즉시 종료하고, 시스템의 안정성을 유지하기 위해 필요한 조치를 취함. 사용자에게는 일반적으로 "프로그램이 비정상적으로 종료되었습니다"와 같은 메시지를 표시