(자동 찾아 바꾸기: 「할수」(을)를 「할 수」(으)로) |
편집 요약 없음 |
||
6번째 줄: | 6번째 줄: | ||
예를 들면, 키보드의 키를 하나 누르면, 눌려진 키 코드 값이 키보드 버퍼에 입력된 후 CPU에 인터럽트가 걸린다. 그럼 현재 처리하던 작업에 대한 정보를 수집하여 저장한 뒤에 인터럽트 서비스 루틴(Interrupt Service Routine)을 수행한다.(이 경우에는 키보드 버퍼에 있는 키 코드 값을 가져가는 일을 한다.) 이렇게 인터럽트 처리를 마친 후에는 다시 이전에 처리하던 작업으로 돌아간다. | 예를 들면, 키보드의 키를 하나 누르면, 눌려진 키 코드 값이 키보드 버퍼에 입력된 후 CPU에 인터럽트가 걸린다. 그럼 현재 처리하던 작업에 대한 정보를 수집하여 저장한 뒤에 인터럽트 서비스 루틴(Interrupt Service Routine)을 수행한다.(이 경우에는 키보드 버퍼에 있는 키 코드 값을 가져가는 일을 한다.) 이렇게 인터럽트 처리를 마친 후에는 다시 이전에 처리하던 작업으로 돌아간다. | ||
=== 과정 === | |||
이제 이런 인터럽트의 처리 과정을 <del>매우</del> 간단하게 정리해서 설명하면 다음과 같다. | 이제 이런 인터럽트의 처리 과정을 <del>매우</del> 간단하게 정리해서 설명하면 다음과 같다. | ||
:#기존의 작업을 처리하던 도중, 인터럽트가 발생하면 | :#기존의 작업을 처리하던 도중, 인터럽트가 발생하면 | ||
12번째 줄: | 12번째 줄: | ||
:#해당하는 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴을 처리한다. | :#해당하는 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴을 처리한다. | ||
:#인터럽트 처리 이후 저장되었던 이전 작업의 상태를 복구하고 이전 작업 수행을 재개한다. | :#인터럽트 처리 이후 저장되었던 이전 작업의 상태를 복구하고 이전 작업 수행을 재개한다. | ||
=== 종류 === | |||
인터럽트는 다양한 종류가 있다. 일반적으로 사용되는 인터럽트는 두 가지 정도가 있는데, | |||
*외부 인터럽트: 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생하는 인터럽트. | |||
*:전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우 | |||
*:기계 고장 인터럽트: [[CPU]]등의 기능적인 동작 오류가 발생한 경우 | |||
*:입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트. | |||
*내부 인터럽트: 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트 | |||
*:0으로 나누는 경우 | |||
*:오버플로우 또는 언더플로우가 발생한 경우 | |||
*:프로그램 상의 오류<ref>이상하게 메모리 장소를 참조하는 경우 등</ref> | |||
*:프로그램에서 함수등 명령어를 잘못 사용한 경우 | |||
*:소프트웨어 인터럽트: [[CPU]]가 인스트럭션을 수행하는 도중에 일어나는 인터럽트<ref>주로 기계어 레벨에서 제공되지 않는 인스트럭션을 운영 체제의 시스템 콜(System Call)의 형태로 제공되는 인터럽트</ref> | |||
{{주석}} | {{주석}} | ||
[[분류:컴퓨터 과학]] | [[분류:컴퓨터 과학]] |
2019년 11월 3일 (일) 14:15 판
개요
인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.
설명
대부분의 컴퓨터는 한 개의 CPU를 사용하고 있기에 한 순간에는 하나의 일 밖에 처리할 수 없기 때문에[1] 어떤 일을 처리하는 도중에 우선 순위가 급한 일을 처리할 필요가 있을 때 대처할 수 있는 방안이 필요하다.
예를 들면, 키보드의 키를 하나 누르면, 눌려진 키 코드 값이 키보드 버퍼에 입력된 후 CPU에 인터럽트가 걸린다. 그럼 현재 처리하던 작업에 대한 정보를 수집하여 저장한 뒤에 인터럽트 서비스 루틴(Interrupt Service Routine)을 수행한다.(이 경우에는 키보드 버퍼에 있는 키 코드 값을 가져가는 일을 한다.) 이렇게 인터럽트 처리를 마친 후에는 다시 이전에 처리하던 작업으로 돌아간다.
과정
이제 이런 인터럽트의 처리 과정을 매우 간단하게 정리해서 설명하면 다음과 같다.
- 기존의 작업을 처리하던 도중, 인터럽트가 발생하면
- 현재 컴퓨터가 처리하는 일을 중지하고 현재의 컴퓨터의 상태(CPU 내부의 레지스터, 메인 메모리 내용 등을) 저장한다.
- 해당하는 인터럽트를 처리해주기 위한 인터럽트 서비스 루틴을 처리한다.
- 인터럽트 처리 이후 저장되었던 이전 작업의 상태를 복구하고 이전 작업 수행을 재개한다.
종류
인터럽트는 다양한 종류가 있다. 일반적으로 사용되는 인터럽트는 두 가지 정도가 있는데,
- 외부 인터럽트: 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생하는 인터럽트.
- 전원 이상 인터럽트: 정전이나 전원이 이상이 있는 경우
- 기계 고장 인터럽트: CPU등의 기능적인 동작 오류가 발생한 경우
- 입출력 인터럽트(I/O Interrupt): 입출력의 종료 등의 이유로 CPU의 수행을 요청하는 인터럽트.
- 내부 인터럽트: 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트