심심해서 하는 블로그 :: [컴퓨터 구조] 인터럽트와 I/O 장치

1. Interrupt

집에서 열심히 라면을 끓이고 있다. (가난한 학생이니까 ㅠㅠ) 라면 물을 끓이고 스프를 넣고 면을 넣고 이제 대망의 계란을 넣을려고 냉장고로 갈려는 순간 갑자기 물이 끓어 넘칠려고 한다. 여러분의 아래의 두 개의 선택지 중에 어떤 것을 선택하겠습니까?


1. 나는 나의 길을 간다. 계란 꺼내고 불을 낮추러 간다.

2. 엄마한테 뒤지게 혼나기 싫다. 불부터 낮춘다. 


대다수의 사람들은 2번을 선택하였을 것이다. 엄마한테 뒤지게 혼나는건 둘째치고 잘못되서 화재라도 나면 살기 위해서 라면 하나 먹다가 인생 하직할순 있으니까..ㅜㅜ 



인터럽트의 개념은 방금 제시한 상황과 비슷하다. CPU가 열심히 프로그램을 수행하는 과정에서

예외나 I/O 장치등 우선순위가 높은 사건이 발생하면 하던 걸 잠시 멈추고 접수받은 내용을 처리하는 과정을 인터럽트라고 한다. 이 때 예외라고 한다면 오버플로우, 0으로 나누기 등등이며 I/O 장치는 하드 디스크, 키보드, 마우스 등등을 의미한다. 컴퓨터 구조 과목에서는 I/O 장치에 대하여 더욱 중점을 둔다.


2. I/O 장치

하드디스크와 같은 I/O 장치들은  프로세서와 직접 데이터를 교환할 수 있고 프로세서는 I/O 모듈에 대하여 쓰기 또는 읽기를 할 수 있다. 프로세서는 I/O들을 구별하기 위해 주소를 사용한다. 

인터럽트가 발생하게 되면 I/O 장비의 상태를 점검하고 준비가 되면 전송하게끔 하는데 인터럽트를 신속 정확하게 처리하고 멈춘 프로그램을 다시 수행해야 하는 CPU에게는 기나긴 시간 낭비이다. 따라서 CPU는 이러한 과정을 I/O 장치에게 시킨다. "그냥 니가 점검해"


I/O 장치가 또 CPU에게 부담을 주는 것은 I/O 장치의 많은 데이터이다.

이 데이터들이 직접 CPU를 거치게 된다면 I/O 인터럽트가 많이 발생해서 CPU는 다른 일은 할 수가 없다.

따라서 CPU의 효율적인 운영을 위해서 DMA(직접 메모리 접근) 기법을 사용한다. 이 방법에서는 I/O장치들이 메인 메모리에 직접 접근하여 입출력을 할 때 CPU에게 시작 인터럽트, 데이터를 Block단위로 쓰고 읽으며 작업이 끝난 후에 CPU에게 종료를 알리는 인터럽트만 보내주면서 CPU의 부담을 확 줄였다.

더나아가 입출력 과정에서 CPU의 부담을 최소로 하면서 병렬적으로 입출력과 연산과정이 동시에 진행할 방법이 필요해지면서 입출력 프로세서(I/O Processor)가 등장하였다. 




,