2.3 인터럽트의 일반적 기능

Mar 19, 2019


-> 목차

운영 체제 커널에는 인터럽트가 들어왔을 때 해야할 일을 미리 다 프로그래밍해서 보관하고 있다.

그 중 한 가지가 인터럽트 처리 루틴이다. 인터럽트 처리 루틴은 다양한 인터럽트에 대해 각각 처리해야 할 업무들을 정의하고 있다.

인터럽트는 컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅하는 하드웨어 인터럽트

소프트웨어가 그 일을 수행하는 소프트웨어 인터럽트가 있다.

CPU의 서비스가 필요한 경우, CPU 옆에 있는 인터럽트 라인에 신호를 보내어서 인터럽트가 발생했음을 알려주는 방식은 동일하다.


운영 체제는 할 일을 쉽게 찾아가기 위해 인터럽트 벡터(interrupt vector)를 가지고 있다.

인터럽트 벡터란 인터럽트 종류마다 번호를 정해서, 번호에 따라 처리해야 할 코드가 위치한 부분을 포인터로 가리키고 있는 자료구조를 말한다.

실제 처리해야 할 내용은 인터럽츠 서비스 루틴(interrupt service routine)이라는 다른 곳에 정의된다.


통상적으로 프로그램은 여러 개의 함수로 구성된다. 프로그램의 메모리 주소를 조사해보면 크게

코드(code), 데이터(data), 스택(stack)등의 영역으로 나뉜다.

  • 스택이란

호출된 함수의 종료후 원래 함수의 실행중이던 위치로 돌아가기 위해 복귀 주소를 저장하는 영역이다.

  • 데이터 영역이란

전역 변수 등 프로그램이 사용하는 각종 데이터가 저장되는 공간이다.

동일한 프로그램 내의 모든 함수들이 공유해 사용할 수 있게 된다.

  • 코드 영역이란

프로그래머가 작성한 코드가 기계어 명령 형태로 저장되는 영역이다.

CPU는 매 시점 코드 부분에 있는 명령을 하나씩 읽어와서 수행하게 된다.



위 글은 운영 체제와 정보 기술의 원리 -반효경책을 정리하기 위해 쓴 글입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=4392911