CS Operating System - Interrupt

Huisu·2025년 1월 16일
0

CS

목록 보기
10/25
post-thumbnail

인터럽트가 무엇인지 설명해 주세요

인터럽트란 무엇인가요?

인터럽트란 CPU에게 커널 모드로 변경됨을 알리는 신호이다. 일반 소프트웨어는 권한이 있는 명령을 수행하지 못하기에, 인터럽트를 발생시켜서 커널 모드로 전환한 뒤 운영체제에게 대신 일을 맡긴다.

예를 들어 어떤 소프트웨어는 키보드 입력을 받기 위해 CPU에게 Interrupt를 발생시킬 수 있다.

인터럽트는 어떻게 처리하나요?

인터럽트 신호가 발생했을 때 CPU는 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 확인한다. 인터럽트를 받아들일 수 있다면 CPU는 현재 작업을 백업하고, 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행한다. 인터럽트 서비스 루틴이 끝나면 CPU는 백업해 둔 작업을 복구하여 실행을 재개한다.

인터럽트 처리 절차

  1. 입출력장치가 CPU로 인터럽트 요청 신호를 보낸다.
  2. 실행 사이클이 끝나고 명령어 인출 전 CPU 인터럽트 여부를 확인한다.
  3. 인터럽트 요청을 확인하고, 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 확인한다.
  4. 인터럽트를 받아들일 수 있다면 CPU는 현재 작업을 백업한다.
  5. 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행한다.
  6. 인터럽트 서비스 루틴이 끝나면 백업해 둔 작업을 복구하여 실행을 재개한다.
인터럽트 요청 신호인터럽트를 요청하는 신호
인터럽트 플래그하드웨어가 인터럽트를 받아들일지 결정하는 플래그
인터럽트 서비스 루틴인터럽트를 처리하기 위한 프로그램으로 인터럽트를 처리하는 방법 포함
인터럽트 벡터인터럽트 서비스 루틴의 시작 주소를 알게 해 인터럽트 서비스 루틴을 식별하기 위한 정보

Polling 방식에 대해 설명해 주세요

CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식이다. 각 자원들이 능동적으로 자신의 상태 변화를 CPU에 알리는 Interrupt 방식과 다르게 작동한다. 자원이 폴링 신호를 받으면 자신의 상태를 적어 놓을 수 있는 곳에 저장시키고, CPU는 그것을 폴링 때마다 읽어 보는 방식이다. 비유하자면 교수님이 10분마다 학생들에게 질문 있냐고 물어보는 것이다.

이 방식은 아무 일이 없어도 CPU가 일정 시간이 되면 폴링을 해야 하며, 각 자원은 직전 폴링 이후 다음 폴링까지 자신의 상태를 알릴 수 없기 때문에 사용되지 않는다.

HW/SW 인터럽트에 대해 설명해 주세요

하드웨어 인터럽트

하드웨어 인터럽트는 하드웨어가 발생시킨 인터럽트를 의미한다.

  • CPU에게 키보드 입력을 마쳤음을 알리기 위한 인터럽트
  • 프로세스의 CPU 사용 시간이 끝났음을 알리기 위한 인터럽트
  • 마우스 클릭 이벤트를 알리기 위한 인터럽트

일반적으로 Interrupt라고 하면 하드웨어 인터럽트를 의미한다.

소프트웨어 인터럽트

소프트웨어 인터럽트는 Trap이라고도 불린다.

Exception 프로그램이 오류를 범하여 예외가 발생한 경우

System Call 프로그램이 커널 함수를 호출하는 경우

동시에 두 개 이상의 인터럽트가 발생하면, 어떻게 처리해야 하나요?

동시에 인터럽트가 발생하면 CPU는 인터럽트 우선 순위를 기준으로 인터럽트를 처리한다. 이때 선점형 방식으로 동작한다.

인터럽트 처리 절차

  1. 인터럽트 요청 중 가장 높은 우선순위를 가진 인터럽트를 식별한다.
  2. 현재 작업 중인 작업의 상태를 저장한다.
  3. 우선순위 순서대로 인터럽트 서비스 루틴 혹은 인터럽트 핸들러가 실행된다.
  4. 인터럽트 처리 중 더 높은 우선순위의 인터럽트가 발생한다면 해당 인터럽트가 처리된다.
  5. 인터럽트 처리가 모두 완료되었다면 이전에 저장한 작업을 복원하여 작업을 재개한다.

0개의 댓글