6월 27일 -인터럽트

Yullgiii·2024년 6월 28일
0
post-thumbnail

인터럽트의 원리

인터럽트란?

인터럽트란 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가 수행하는 명령

일반 명령

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

특권 명령

특권 명령은 보안이 필요한 명령으로, 입출력 장치, 타이머 등 각종 장치를 접근하는 명령이다. 운영 체제만이 수행할 수 있도록 제한되어 있다. 일반 명령과 특권 명령의 실행 가능성을 체크하기 위해 CPU 내부에 모드 비트를 둔다.

인터럽트 처리 과정

  1. 인터럽트 발생: 하드웨어 또는 소프트웨어에서 인터럽트 신호를 보낸다.
  2. 현재 명령 저장: CPU는 현재 수행 중인 명령의 위치를 PCB에 저장한다.
  3. 인터럽트 처리 루틴 실행: CPU는 인터럽트 처리 루틴으로 이동하여 인터럽트를 처리한다.
  4. 상태 복원: 인터럽트 처리가 완료되면, PCB에 저장된 이전 명령의 상태를 복원한다.
  5. 명령 재개: 저장된 위치부터 명령 실행을 재개한다.

예제

1. CPU가 프로그램 A를 실행 중이다.
2. I/O 장치에서 인터럽트가 발생하여 CPU에 신호를 보낸다.
3. CPU는 프로그램 A의 현재 상태를 PCB에 저장한다.
4. CPU는 인터럽트 처리 루틴으로 이동하여 I/O 인터럽트를 처리한다.
5. 인터럽트 처리가 완료되면, CPU는 PCB에 저장된 프로그램 A의 상태를 복원한다.
6. CPU는 프로그램 A의 이전 명령 위치부터 실행을 재개한다.

So...

인터럽트는 CPU가 여러 작업을 효율적으로 처리할 수 있도록 하는 중요한 메커니즘이다. 인터럽트가 발생하면 현재 작업의 상태를 저장하고, 인터럽트를 처리한 후 상태를 복원하여 작업을 이어서 수행한다. 이를 통해 CPU는 다양한 입출력 장치와 소프트웨어 예외 상황을 처리할 수 있다. 인터럽트 처리 과정을 잘 이해하면, 시스템의 작동 원리와 성능 최적화에 도움이 된다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글