[컴퓨터 구조] CPU의 인터럽트 사이클

CHELSEA·2020년 5월 1일
2
post-thumbnail

들어가며

이번 스터디 주제는 3주차 토픽인 컴퓨터 구조였습니다. CPU의 인터럽트 사이클을 주제로 선정했습니다. 운영체제에서도 배웠던 인터럽트지만, 이번에는 CPU의 입장에서 인터럽트를 어떻게 처리하는지 정리해 보았습니다. 실생활에 빗댄 예시로 아주 쉽게 설명했으니 재밌게 읽어 주세요!

인터럽트?

인터럽트(interrupt)는 영어로 직역하면 가로막다, 방해하다라는 뜻입니다. 컴퓨터 입장에서 가로막고, 방해하는 행위는 무엇일까요? 프로그램 실행 중에 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작이 바로 인터럽트입니다.

인터럽트가 발생하면?

만약 외부로부터 인터럽트 요구가 들어오게 된다면, CPU는 하던 일을 중단하고 요구된 인터럽트를 위한 프로그램을 실행합니다.

실생활로 알아보는 인터럽트 (1)

지금 같은 온라인 강의 기간에는 선생님의 요구에 따라 ZOOM에 접속해야 합니다. 여러분은 지금 점심을 먹으며 넷플릭스를 보고 있어요. 너무너무 재미있겠죠? 그런데 딱! 결정적인 순간에 선생님께서 ZOOM에 접속하라는 요구를 하셨어요. 넷플릭스를 더 보고 싶지만 들어가지 않으면 무슨 일이 일어날지 모르니까요. 보고 있던 넷플릭스를 일시정지 하고, ZOOM에 접속해서 선생님이 진행하시는 상담에 참여합니다. 상담이 모두 끝나고 나면 아까 봤던 곳부터 다시 보게 되죠.

'나'라는 CPU가 넷플릭스라는 프로그램을 실행하고 있던 중에 선생님이 하신 인터럽트 요구에 따라 보던 것을 잠시 중단합니다. 그리고 요구를 이행한 뒤, 하던 일로 복귀하는 것! 이게 바로 CPU의 인터럽트 수행입니다.

정리

간단하게 정리해 보겠습니다.

  1. 인터럽트가 들어오면
  2. 어떤 장치가 인터럽트를 요구했는지 확인합니다.
  3. 그리고 해당 ISR을 호출합니다.
  4. 인터럽트가 종료되고 나면 중단되었던 원래의 프로그램을 다시 실행합니다.

    ISR은 인터럽트 서비스 루틴입니다. 인터럽트를 수행하기 위해 수행되는 프로그램 루틴을 말합니다. 아까 예시에 따르면 우리가 줌을 켜고, 상담하고, 줌을 다시 끄고 복귀하기까지의 그 루틴을 말하는 거죠.

세부적으로 알아보기

조금 더 세부적으로 들어가 볼까요?

  1. 다음에 실행할 명령어 주소(프로그램 카운터의 내용)을 스택에 저장하고,
  2. ISR을 호출하기 위해 그 루틴의 시작 주소를 PC(프로그램 카운터)에 적재합니다.
  3. 현재 명령어 실행 종료 후 ISR 호출합니다.
  4. 스택에 저장해 뒀던 명령어 주소를 PC에 다시 적재합니다.

다음은 다들 아시겠죠? 프로그램 카운터 내용에 따라 CPU는 원래 실행되던 프로그램을 실행하게 되는 겁니다.

실생활로 알아보는 인터럽트 (2)

다시 아주아주 쉬운 실생활 예시로 돌아가 보겠습니다.


점심을 먹으며 넷플릭스를 보고 있는 여러분은 현재 TO-DO LIST의 33번을 실행 중입니다. 다음 할 일은 34번이겠죠?


그런데 소프트웨어 공학 선생님으로부터 인터럽트 요구가 들어왔습니다. 원래 실행할 예정이었던 TO-DO LIST 항목을 잠시 포스트잇으로 붙여 놓고, 다음에 할 일 칸에는 선생님이 요구하신 TO-DO LIST의 항목 번호를 적습니다.


접속을 한 뒤, 다음에 할 일은 상담 명령어가 되겠죠. 상담을 계속 진행합니다.


상담이 종료되네요. 상담이 종료되는 시점에는 포스트잇에 적어 뒀던 것, 즉, 인터럽트가 들어오기 전 실행하려고 했던 TO-DO LIST 항목이 다시 다음에 할 일 칸에 들어갑니다.


그러고 난 후에 다시 굿 플레이스를 시청하는 거죠. 생각보다 어렵지 않죠?

다중 인터럽트

만약 ISR 실행 중에 또 다른 인터럽트가 발생하면 어떻게 될까요? 이것을 다중 인터럽트라고 합니다.

처리 방법

다중 인터럽트는 두 가지 방법으로 처리됩니다.

중단할 수 없는 ISR일 경우

시스템 운영상 중요한 프로그램, 도중에 중단할 수 없는 입출력 동작 등 중요한 경우에는 새로운 인터럽트 요구를 무시합니다. 우리가 회사 면접을 보고 있을 때는 온라인 강의에 참여하지 못하는 것처럼 새로운 인터럽트를 받지 않는 것이죠.

그렇지 않을 경우

그렇지 않을 경우에는 우선 순위에 따라 실행합니다.

현재 실행 중인 명령어가 새로 발생한 인터럽트보다 우선 순위가

  • 낮을 경우에는 새로운 ISR을 실행합니다.
  • 높을 경우에는 새로 들어온 인터럽트를 미뤄 두고 나중에 처리합니다.

발표 자료

한글 폰트가 깨지는 현상이 발생합니다. 슬라이드를 전체 화면으로 설정하시면 문제 없이 보실 수 있습니다.
https://www.slideshare.net/ssuser889640/cpu-232709966

0개의 댓글