인프런 커뮤니티 질문&답변

이곰님의 프로필 이미지
이곰

작성한 질문수

그림으로 쉽게 배우는 운영체제

인터럽트

인터럽트 발생 시점과 비동기 방식

해결된 질문

작성

·

455

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요.

  1. 인터럽트 발생 시점

강의에서 인터럽트 방식은 CPU가 입출력 명령을 내리고 다른 작업을 계속한다고 하셨습니다.

출력인 경우 cpu가 입출력 관리자에 출력을 요청하고 다른 작업을 하다가 출력이 완료되면 입출력 관리자가 인터럽트를 발생시키는 건가요?

입력인 경우는 cpu가 입출력 관리자에 입력을 요청할 필요가 있나요??

키보드 등으로 입력이 들어오면 메모리 매니저를 통해서 cpu에 입력이 왔다고 인터럽트를 발생시키는 건가요?

 

  1. 비동기 방식

cpu가 입출력 관리자에 입출력을 요청하고 다른 작업을 한다고 하셨는데 입출력을 요청한 작업외 다른 작업을 하는 건가요?

인터럽트가 발생하면 cpu가 연산을 일시정지한다고 알고 있는데 입출력을 요청한 작업과 다른 작업 모두 정지되는 건가요 아니면 다른 작업은 계속 진행하나요??

왜 연산을 정지해야 하나요?

 

이해가 많이 부족하여 질문이 중구난방이라 죄송합니다ㅠㅠ

감사합니다

답변 2

1

이곰님의 프로필 이미지
이곰
질문자

친절한 답변 너무 감사합니다!

1

감자님의 프로필 이미지
감자
지식공유자

안녕하세요.

  1. 인터럽트 발생 시점

강의에서 인터럽트 방식은 CPU가 입출력 명령을 내리고 다른 작업을 계속한다고 하셨습니다.

출력인 경우 cpu가 입출력 관리자에 출력을 요청하고 다른 작업을 하다가 출력이 완료되면 입출력 관리자가 인터럽트를 발생시키는 건가요?
맞습니다.
입출력 관리자가 CPU에게 입출력이 있다고 알리는 것이 인터럽트입니다!

입력인 경우는 cpu가 입출력 관리자에 입력을 요청할 필요가 있나요??
CPU는 굉장히 소중한 자원입니다.
CPU는 최대한 많은 시간을 계산만 할 수 있도록 해야 합니다.
만약 CPU가 입출력 관리자 없이 입력을 스스로 처리하려면 계산 도중에 입력을 계속 확인해야 할겁니다.
그럼 계산하는 시간이 줄어들기 때문에 CPU를 낭비하게 됩니다.
대신 입출력 관리자를 두고 입출력 관리자가 입력을 받게 하고 CPU는 해당 입력에 대해 핸들링(인터럽트 핸들러)만 하면 되기 때문에 CPU를 더 효율적으로 사용할 수 있게 됩니다.

키보드 등으로 입력이 들어오면 메모리 매니저를 통해서 cpu에 입력이 왔다고 인터럽트를 발생시키는 건가요?
인터럽트는 입출력 관리자가 발생시킵니다.

  1. 비동기 방식

cpu가 입출력 관리자에 입출력을 요청하고 다른 작업을 한다고 하셨는데 입출력을 요청한 작업외 다른 작업을 하는 건가요?
맞습니다. 예를 들면 다른 프로세스에서 계산을 하는 명령을 처리하는 작업을 수행합니다.
입출력이 발생한 프로세스에선 계산을 하지 못하는 상황이 있기 때문에 계산할 수 있는 다른 프로세스를 실행하는 것입니다!

인터럽트가 발생하면 cpu가 연산을 일시정지한다고 알고 있는데 입출력을 요청한 작업과 다른 작업 모두 정지되는 건가요 아니면 다른 작업은 계속 진행하나요??
CPU가 연산을 정지했다는 것은 모든 프로세스가 정지했다는 뜻입니다.
(CPU는 어느 한 순간에는 하나의 프로세스를 처리한다고 했었죠?)

인터럽트가 발생하면 해당 인터럽트에 대한 인터럽트 서비스 루틴을 실행하고 다시 이전에 실행하던 상태로 돌아와서 스케줄러에 의해서 프로세스들을 스케줄링에 맞게 실행시킵니다.

왜 연산을 정지해야 하나요?
인터럽트라는 단어는 (말·행동을) 방해하다[중단시키다/가로막다] 라는 뜻을 가지고 있습니다.
인터럽트가 탄생하게 된 이유는 어떠한 작업을 하고 있을 때 그것보다 더 중요한 이벤트를 처리하기 위해서 입니다.
CPU가 어떤 프로세스의 작업을 처리하다가 중요하고 위급한 이벤트를 처리해야 하는 상황이 발생하는데 그것을 인터럽트가 하는 것이죠.
CPU는 한 순간에 하나의 프로세스를 실행하는데 인터럽트를 처리하려면 현재 실행하고 있는 프로세스를 정지해야 다른 처리를 할 수 있습니다.

궁금증이 해결되셨나요?😊

이곰님의 프로필 이미지
이곰

작성한 질문수

질문하기