본문 바로가기

OS-서버

인터럽트와 트랩

반응형

 

 

   인터럽트(비동기적)

 

프로그램을 실행 중 입출력 하드웨어 등의 장치같은 곳에서 예외상황이 발생하여 처리가 필요할 경우에

CPU에게 알려 예외 처리를 할 수 있도록 하는 기법이다.

 

프로그램 외부 상황에 따라 발생 시점이 일정하지 않다.

 

  종류

 

SVC(SuperVisor Call) : 새 프로그램 실행시 발생 -  오퍼레이터(사용자)의 대화시도
입출력 인터럽트 : HW적 인터럽트로 입출력과 관련된 중단인터럽트
외부 인터럽트 : CPU를 사용하기 위한 시간 간격(timeslice) 시간할당량이 있고 OS가 관리하는 

                     인터럽트 시계에 의해서 프로세스가 종료됨
재시작 인터럽트 : Reset 버튼이나 Kill을 했을 때 발생
프로그램 검사 인터럽트 : 실행중인 프로그램에서 오버플로우나 언더플로우 , 분모가 0인 나눗셈을 

                                 처리하는 경우 발생
기계검사 인터럽트 : 컴퓨터 시스템 고장으로 발생

 

  발생
인터럽트 주소 저장하는 곳은 CPU 레지스터에 PC(Program Counter)다.

인터럽트 처리는 스택메모리에서 하고 , 스택에 있는 인터럽트 자료를 PC(계수기)에 옮기고 실행한다.

 

발생 조건은 연산오류나 메모리 보호 구역 접근 , 입출력 완료 됬을 때이다. 

 

   트랩(동기적) 

항상 프로그램의 고정된 영역에서 발생한다.


예시로 프로그램 실행 시 "분모 0이 되면 이 루틴을 수행한다" 와 같은 특별한 조건을 부여하는 것이다.

 

  유형
에러트랩 : 복원루틴 제공
디버깅트랩 : 현 프로그램 중지 후 상태 분석

반응형