인터럽트

HEUKWU·2023년 11월 15일
0

초기의 컴퓨터에는 CPU가 입출력장치와의 통신을 위해 폴링(polling) 방식을 주로 사용했다. 폴링은 CPU가 입출력장치의 상태를 주기적으로 검사하여 데이터를 처리하는 방식으로 CPU가 주 기능 외의 모든 입출력까지 관여해야 하므로 작업효율이 떨어지는 단점이 있었다.

이 문제를 해결하기 위해 등장한 기술이 인터럽트이다. 인터럽트는 CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영해 효율을 높인다.

입출력장치나 다른 하드웨어 디바이스가 CPU에게 특정 사건 발생을 알리는 메커니즘으로 CPU는 필요할 때만 해당 이벤트에 대한 처리를 할 수 있게 된 것이다. 따라서 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있다.

동작 과정

1. 입출력 요청
CPU가 입출력 관리자에게 입출력 명령을 보낸다.
2. 데이터 전송
입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.
3. 인터럽트 발생
데이터 전송이 완료되면 입출력 관리자는 CPU에 완료 신호를 보낸다.

직접 메모리 접근

과거의 폴링방식은 CPU가 입출력을 직접 관리하기 때문에 CPU가 메모리나 주변장치에 대한 모든 권한을 가지고 있었다. 하지만 인터럽트 방식을 쓰면서 입출력 관리자가 입출력을 맡게 되었다. 따라서 입출력 관리자는 CPU의 허락 없이 메모리에 접근이 불가하다.

입출력 관리자는 CPU의 허락 없이 메모리에 접근할 수 있는 권한이 필요한데 이것을 직접 메모리 접근(DMA)라고 한다.

출처 - https://www.techtarget.com/whatis/definition/Direct-Memory-Access-DMA

메모리 맵 입출력

직접 메모리 접근을 사용하면서 메모리에는 CPU가 사용하는 데이터와 입출력 장치가 사용하는 데이터가 섞여있다. 따라서 섞여 있는 메모리를 나누어 사용하는 방법이 도입되었다. CPU가 사용하는 메모리 공간과 직접 메모리 접근을 통해 필요한 공간을 분리함으로써 메모리의 일정 공간을 입출력에 할당하는 기법을 메모리 맵 입출력이라고 한다.

사이클 훔치기

이렇게 메모리는 CPU와 입출력 장치 모두 접근 가능하게 되었다. 그렇다면 만약 CPU와 입출력 장치가 동시에 메모리에 접근하면 어떻게 될까? CPU의 작업 속도보다 입출력 장치의 속도가 느리기 때문에 보통 CPU가 양보한다. 순서를 훔쳤다는 의미에서 사이클 훔치기(cycle stealing) 이라고 한다.

0개의 댓글

관련 채용 정보