본문 바로가기

운영체제를 다시 해보자

[운영체제] Interrupt - 인터럽트

[인터럽트]

일반적 컴퓨터 작업에서 키보드 입출력을 수행하는 프로그램을 고려했을 때 사용자가 키보드를 누르면, 장치 드라이버는 장치 드라이버가 컨트롤러에 적재한 적절한 레지스터를 통하여 수행할 작업을 결정한다. 그다음 컨트롤러는 로컬 버퍼로 데이터 전송을 시작하고, 데이터 전송이 완료되면 드라이버에게 작업이 완료되었음을 알린다. 완료가 된 것을 알게 된 드라이버는 데이터나 데이터에 대한 포인터를 반환한다. 그렇다면 이 과정 중에서 컨트롤러가 장치 드라이버에게 작업을 완료했다는 것은 어떻게 알리나 하면 인터럽트를 통해 이루어지게 되는 것이다.

 

[개요]

하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다.(많은 버스 중 시스템 버스는 주요 구성요소 사이의 주요 통신 경로이다.) 인터럽트가 되면 CPU는 하던일을 중단하고, 고정된 위치로 실행을 옮긴다.(이 고정된 위치는 일반적으로 인터럽트르 루이한 서비스 루틴이 위치한 시작 주소를 갖고 있다.) 그리고 나서 인터럽트 서비스 루틴이 실행되는 것이다. 서비스 루틴의 실행 완료가 되면, CPU는 인터럽트 되었던 연산을 재개하게 된다. 컴퓨터 구조의 가장 중요한 부분 중 하나인 인터럽트는, 적절한 서비스 루틴으로 제어를 전달한다. 그리고 매우 빈번하게 발생하기 때문에 많은 처리를 빠르게 처리하기 위해서 인터럽트 루틴에 대한 포인터들의 테이블을 이용해서, 간접적으로 인터럽트 루틴을 호출한다. 그리고 이러한 포인터들의 테이블은 하위 메모리에 저장을 해서 빠르게 요청을 처리할 수 있다. 

'운영체제를 다시 해보자' 카테고리의 다른 글

[운영체제] 공부 시작하기  (0) 2022.12.17