면접 질문 정리 - 인터럽트

코난·2023년 10월 16일
0

CS 면접 정리

목록 보기
11/67

인터럽트란?

  • CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
  • 프로그램 실행중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에 알리는 것
  • 지금 수행중인 일보다 더 중요한 일이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야 함

인터럽트의 종류

  • 외부 인터럽트 : 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생하는 인터럽트

  • 내부 인터럽트 : 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트

  • 소프트웨어 인터럽트 : 프로그램 처리 중 명령의 요청에 의해 발생한 인터럽트

  • 외/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생

  • 소프트웨어 인터러브는 명령어의 수행에 의해 발생

인터럽트 발생 처리 과정

  • 현재 수행중인 프로그램을 멈추고 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 감. (인터럽트 서비스 루틴이 끝난 뒤 다시 원래 작업으로 돌아와야 하기 때문에 잠시 저장)
  • 인터럽트 기능이 없었다면 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 함(이를 폴링이라고 함)
  • 자세한 과정
    1. 장치가 CPI에게 인터럽트 신호를 보냄
    2. 인터럽트를 받으면 그 전까지 실행해던 프로그램이 인터럽트 처리 후 다시 실행되어야 하기 때문에 현 상태의 정보값을 스택에 저장함
    3. 인터럽트 처리 루틴의 시작주소를 PC에 넣어 실행시킴
    4. 인터럽트가 끝나면 이전에 저장했던 정보들을 재저장한 후, 프로그램을 이어서 실행함

인터럽트 VS 폴링

  • 폴링
    • CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식
    • 자원들은 폴링 신호를 받은 후 자신의 상태를 CPU에 알려야 함. 이 때 폴링의 간격을 적절히 정해야 함.
    • 동시에 각 자원은 직전 폴링 이후 변화된 자신의 상태를 다음번 폴링때까지 알릴 수 없음
    • 아무일이 없어도 CPU는 폴링에 일정량의 시간을 들여야 하는 부담도 발생
  • 인터럽트
    • 각 자원들이 능동적으로 자신의 상태변화를 CPU에게 알리는 방식
    • 하드웨어적으로 변화를 체크해야 함
    • 채널과 중앙처리장치 간의 통신은 일반적으로 인터럽트에 의해 이루어짐

인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있으나 폴링에 비해 신혹한 대응이 가능함. 실시간 대응이 필요할때는 필수적인 기능!
인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법임.


참고

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Interrupt.md
https://velog.io/@hyun0310woo/7.-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C
https://itdexter.tistory.com/388

profile
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!

0개의 댓글