Post

인터럽트의 원리

인터럽트의 원리

인터럽트의 원리

인터럽트란?

  • CPU가 어떤 프로그램을 실행하고 있을 때, 입출력 하드웨어 혹은 소프트웨어에 의해 예외상황이 발생하여 처리가 필요한 경우, CPU에게 이를 알려주는 것을 말한다.
  • 예를 들어, A라는 프로그램이 CPU를 할당받고 명령을 수행하고 있는데, 인터럽트가 발생하면 A는 현재 수행 중인 명령의 위치를 저장해 놓는다. 그 후, 운영 체제 내부의 코드인 인터럽트 처리 루틴으로 가서 인터럽트를 처리한 후, 다시 돌아와 A의 이전 작업 지점부터 수행을 계속 이어나간다.
  • 그렇다면 인터럽트가 발생했을 때, 수행 중이던 프로세스의 정보는 어디에 저장이 되는 것일까??
  • 운영 체제는 현재 실행 중인 모든 프로그램을 관리하기 위한 자료구조는 커널에 존재한다. 이 자료 구조를 프로세스 제어 블록 PCB(Process Control Block)라 부른다.
  • PCB에는 인터럽트가 발생했을 때, 그 프로그램의 어느 부분까지 수행했는지를 저장하기 위한 영역이 존재한다.

컴퓨터 시스템의 작동 개요

CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터를 프로그램 카운터(Program Counter, 이하 PC)라 부른다. 즉, CPU는 매번 PC가 가리키는 메모리 영역의 명령을 처리하게 된다. PC는 항상 바로 다음 주소의 명령을 가리키게 되어 순차적인 수행이 이루어진다.

컴퓨터 시스템을 구성하는 하드웨어로는 CPU와 메모리가 있고, 이 밖에 각 입출력 장치와 이들 장치를 전담하는 작은 CPU와 메모리가 있으며, 이는 각각 입출력 컨트롤러(I/O controller)와 로컬 버퍼라고 부른다. (입출력 장치별로 존재!)

메모리에는 사용자 프로그램들과 운영 체제가 같이 올라가 수행된다.

예를 들어, PC가 메모리 주소 중 운영체제가 존재하는 부분을 가리키고 있다면, 현재 운영 체제의 코드를 수행 중이며, 이 경우 CPU가 커놀 모드에서 수행 중이라고 이야기 한다.

반대로 PC가 사용자 프로그램이 존재하는 메모리 위치를 가리킬 경우, 그 메모리 위치에 올락가 있는 사용자 프로그램이 수행 중이며, 이 경우 사용자 모드에서 CPU가 수행되고 있다고 이야기 한다.

CPU가 수행하는 명령

1) 일반 명령

  • 메모리에서 자료를 읽어와서 CPU에서 계산하고 결과를 메모리에 쓰는 일련의 명령들.
  • 이러한 일반 명령은 모든 프로그램이 수행할 수 있다.

2) 특권 명령

  • 보안이 필요한 명령으로 입출력 장치, 타이머 등 각종 장치를 접근하는 명령.
  • 운영 체제만이 수행할 수 있도록 제한.

일반 명령과 특권 명령의 실행 가능성을 체크하기 위해 CPU 내부에 모드 비트를 둔다.

책에서 설명하고 있는 내용은 앞 Chapter인 [컴퓨터 시스템의 동작 원리] 부분에서 나온 내용과 거의 동일하므로, 더 이상 정리하지 않고 이를 참고하길 바란다.

MIT 라이선스에 따른 출처 표기

This post is licensed under CC BY 4.0 by the author.