3장에서 배운 Interrupt에 대해 내가 이해한 내용~
우선 인터럽트라는 단어는 대학교때 컴퓨터 구조 or OS 수업을 들으면서
모두 들어본 단어라고 생각한다.
1. Interrupt란
컴퓨터 작동 중에 예기치 않은 문제가 발생한 경우라도 업무 처리가 계속될 수 있도록 하는 컴퓨터 운영체계의 한 기능.
무엇인가 길게 쓰여져 있다.
간단하게 설명하면 다음과 같다.
우리 일상생활에서 어떤 일을 하다가 배가 아파 화장실을 간다고 하자.
(좀 비유가..^^;)
그런 경우 해당 일을 그만 두고 우선 화장실을 가게 된다.
컴퓨터 CPU도 같은 기능을한다.
단일 프로세서를 탑재한 컴퓨터라 가정을 했을때
긴급한 event가 발생한 경우 진행 중인 작업을 잠시 중지하고 긴급한 event를 실행하게 된다.
이것을 Interrupt라고 한다.
[그림1] Interruption Exception 처리 방법
즉 위의 그림과 같이 Interruption과 Exception이 발생하면 커널은 Trap Handler 호출을 하여 장치 드라이버를 통해 내부 커널 루틴을 실행하게 된다.
여기서 Trap Handler는 다음과 같이 해당 이벤트(여기선 Interrupt, Exception)이 발생하면
해당 이벤트를 어떻게 처리하여 누구에게 전달해주는지를 결정하는 방식이다.
[그림2] Trap dispatching(Windows)
위와 같이 MS에서는 각각의 이벤트를 처리하는 Trap handler가 존재하며 해당 handler는 이벤트가 발생 시 해당 thread를 캡처하여 정해진 처리 방식에 따라 처리가 되어진다.
즉 TCP/IP의 리스너 처럼 어떤 응답이 오기까지 대기하고 있는 루틴이라 생각하면 된다.
위의 그림 1을 보신분은 Interruption과 Exception의 차이에 대해 궁금할 것이다.
Interrupt
프로세스의 실행과 관계없는 비동기 이벤트(Windows Inside 책에 써있다.)
즉 프로세스 실행과는 상관없이 언제 일어날지 모르는 이벤트들을 말한다.
컴퓨터에서는 우리가 사용하는 키보드와 마우스가 가장 대표적인 예라 하겠다.
윈도우 운영에 필요한 프로세스가 돌다가도 우리가 키보드를 타이핑하면 해당 타이핑된 결과물을
컴퓨터는 받아야한다. 이럴때 Interrupt가 발생하게 된다.
Exception
특정 프로그램 실행으로 인한 동기적 조건(역시 Windows Inside 책에 써있다.)
Exception은 자바와 C#같은 언어를 공부해신 분은 쉽게 알 수 있을것이다.
즉 프로그램이 수행되다가 예외적인 처리가 발생하여 발생하는 것이다.
가장 대표적인 오류는 0으로 나누었을때 나오는 Exception과 같은 것이다.
이번 장에서는 Interrupt에 대한 간단한 내용에 대해 알아 보았다.
다음 장에서는 실제 Interrupt가 어떻게 구동되는지 알아보도록 하겠다.
ps. 해당 그림 파일은 김민성 블러그에서 퍼온 것이며
해당 그림은 Windows Inside에 나와있는 그림이다.
우선 인터럽트라는 단어는 대학교때 컴퓨터 구조 or OS 수업을 들으면서
모두 들어본 단어라고 생각한다.
1. Interrupt란
컴퓨터 작동 중에 예기치 않은 문제가 발생한 경우라도 업무 처리가 계속될 수 있도록 하는 컴퓨터 운영체계의 한 기능.
작동 중인 컴퓨터에 예기치 않은 문제가 발생한 경우 CPU(중앙처리장치:central processing unit) 자체가 하드웨어적으로 상태를 체크하여 변화에 대응하는 것을 말한다. 인터럽트가 발생하면 그 순간 운영체계 내의 제어프로그램에 있는 인터럽트 처리 루틴(routine)이 작동하여 응급사태를 해결하고 인터럽트가 생기기 이전의 상태로 복귀시킨다.
인터럽트가 발생하는 원인으로는 프로그램을 실행하는 도중 갑작스런 정전이나 컴퓨터 자체 내에서 기계적인 문제가 발생한 경우(기계검사 인터럽트), 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우(외부 인터럽트), 입출력의 종료나 입출력의 오류에 의해 CPU의 기능이 요청되는 경우(입출력 인터럽트), 프로그램 실행 중 보호된 기억공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램의 문제가 발생한 경우(프로그램검사 인터럽트) 등이 있다.
프로그래밍 방식에는 인터럽트 방식과 폴링(polling) 방식이 있는데 인터럽트 방식을 사용하면 두 가지 이상의 프로세서(processor:처리장치)를 동시에 수행할 수 있고, 이상(異常) 현상을 쉽게 파악할 수 있어 훨씬 효율적이다.
무엇인가 길게 쓰여져 있다.
간단하게 설명하면 다음과 같다.
우리 일상생활에서 어떤 일을 하다가 배가 아파 화장실을 간다고 하자.
(좀 비유가..^^;)
그런 경우 해당 일을 그만 두고 우선 화장실을 가게 된다.
컴퓨터 CPU도 같은 기능을한다.
단일 프로세서를 탑재한 컴퓨터라 가정을 했을때
긴급한 event가 발생한 경우 진행 중인 작업을 잠시 중지하고 긴급한 event를 실행하게 된다.
이것을 Interrupt라고 한다.
[그림1] Interruption Exception 처리 방법
즉 위의 그림과 같이 Interruption과 Exception이 발생하면 커널은 Trap Handler 호출을 하여 장치 드라이버를 통해 내부 커널 루틴을 실행하게 된다.
여기서 Trap Handler는 다음과 같이 해당 이벤트(여기선 Interrupt, Exception)이 발생하면
해당 이벤트를 어떻게 처리하여 누구에게 전달해주는지를 결정하는 방식이다.
[그림2] Trap dispatching(Windows)
위와 같이 MS에서는 각각의 이벤트를 처리하는 Trap handler가 존재하며 해당 handler는 이벤트가 발생 시 해당 thread를 캡처하여 정해진 처리 방식에 따라 처리가 되어진다.
즉 TCP/IP의 리스너 처럼 어떤 응답이 오기까지 대기하고 있는 루틴이라 생각하면 된다.
위의 그림 1을 보신분은 Interruption과 Exception의 차이에 대해 궁금할 것이다.
Interrupt
프로세스의 실행과 관계없는 비동기 이벤트(Windows Inside 책에 써있다.)
즉 프로세스 실행과는 상관없이 언제 일어날지 모르는 이벤트들을 말한다.
컴퓨터에서는 우리가 사용하는 키보드와 마우스가 가장 대표적인 예라 하겠다.
윈도우 운영에 필요한 프로세스가 돌다가도 우리가 키보드를 타이핑하면 해당 타이핑된 결과물을
컴퓨터는 받아야한다. 이럴때 Interrupt가 발생하게 된다.
Exception
특정 프로그램 실행으로 인한 동기적 조건(역시 Windows Inside 책에 써있다.)
Exception은 자바와 C#같은 언어를 공부해신 분은 쉽게 알 수 있을것이다.
즉 프로그램이 수행되다가 예외적인 처리가 발생하여 발생하는 것이다.
가장 대표적인 오류는 0으로 나누었을때 나오는 Exception과 같은 것이다.
이번 장에서는 Interrupt에 대한 간단한 내용에 대해 알아 보았다.
다음 장에서는 실제 Interrupt가 어떻게 구동되는지 알아보도록 하겠다.
ps. 해당 그림 파일은 김민성 블러그에서 퍼온 것이며
해당 그림은 Windows Inside에 나와있는 그림이다.