Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

인터럽트에 대해 설명해주세요 #85

Open
dailynj opened this issue Jan 27, 2022 · 6 comments
Open

인터럽트에 대해 설명해주세요 #85

dailynj opened this issue Jan 27, 2022 · 6 comments

Comments

@dailynj
Copy link
Contributor

dailynj commented Jan 27, 2022

No description provided.

@co3oing
Copy link
Member

co3oing commented Feb 3, 2022

인터럽트란 CPU가 특정 기능을 수행하는 도중에 다른 일을 처리하기 위해 사용하는 기능입니다.

인터럽트의 과정은 다음과 같습니다.

  1. CPU가 특정 기능을 수행하는 도중 인터럽트가 발생합니다.
  2. 처리하던 일을 중지하고 현재 상태를 저장합니다. 저장하는 상태에는 CPU 내부의 레지스터, 메인 메모리 내용 등이 포함됩니다.
  3. 다른 일을 처리합니다.
  4. 이전의 작업 상태를 복구한 후 기존의 작업 수행을 재개합니다.

@sustainable-git
Copy link
Member

인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리해야할 때에 사용하는 기능입니다. 작업을 처리하다가 인터럽트가 발생하면 현재 상태(register, memory 등)를 PCB에 저장하고, 인터럽트 서비스 루틴을 처리한 후, 이전 작업을 복구해 수행을 재개합니다.
인터럽트는 외부 인터럽트와 내부 인터럽트로 구분할 수 있습니다. 외부 인터럽트는 전원 이상, 기계 고장, 입출력에 의해 발생하고, 내부 인터럽트는 0으로 나누는 경우, overflow 또는 underflow, 프로그램의 오류, 명령어를 잘못 사용한 경우, 소프트웨어 인터럽트가 있습니다.

@inuinseoul
Copy link
Collaborator

  • 인터럽트란 CPU가 특정 기능을 수행하는 도중 급하게 다른 일을 처리하고자 할 때 보내는 신호입니다.
  • 기존의 작업을 처리하던 중 인터럽트가 발생하면 현재 처리하던 작업을 중지하고 그 상태를 저장합니다. 그다음 인터럽트에 대한 처리를 ISR(Interrupt Service Routine)을 통해 수행하고 나면 저장된 상태를 불러오고 기존에 수행하던 작업으로 되돌아가 이에 대한 수행을 재개합니다.
  • 이런 인터럽트가 동시에 발생할 때를 대비한 우선순위도 존재합니다. 주로 전원 공급이나 기계 오류 등의 심각한 인터럽트가 우선 처리됩니다.
  • 인터럽트에는 소프트웨어적인 방법과 하드웨어적인 방법이 있습니다. 소프트웨어적인 방법은 사용자 프로그램이 스스로 인터럽트를 지정하고 발생시키지만, 하드웨어 인터럽트는 CPU가 아닌 다른 하드웨어 장치에 문제가 생겼을 때 이를 알리기 위해 발생합니다.

@tmfrlrkvlek
Copy link
Collaborator

인터럽트는 프로그램 실행 중 예상하지 못하였으나 발생한 사건으로 실행 중 오류 발생, 입출력 작업의 완료, 사용자나 다른 프로그램 등에 의한 의도적 중단 등에 의해 발생합니다.

인터럽트에는 외부 인터럽트, 내부 인터럽트, SW 인터럽트가 있습니다.

외부 인터럽트는 정전, 파워 이상 등 기계적 고장, 입출력장치의 데이터 전송 요구나 전송 완료(I/O 인터럽트), 키보드 인터럽트 키(Ctrl+Alt+Del) 입력 등 사용자의 의도적 행의 등에 의해 발생합니다. 내부 인터럽트는 잘못된 명령이나 데이터의 사용, Division by zero, over/under-flow, exception 등에 의해 발생합니다. 마지막으로 SW 인터럽트는 사용자가 supervisior 호출을 수행하거나 다른 프로세스를 실행시키면서 시분할 처리를 위한 자원 할당 등을 수행한 경우 발생합니다.

인터럽트는 다음과 같은 과정을 통해 처리됩니다.

  1. CPU가 원래 프로그램 수행을 중단
  2. 현재 수행중인 프로그램 레지스터 값들(PC, ...)을 스택에 저장
  3. 어떤 장치가 인터럽트를 요구했는지 확인
  4. ISR 수행
  5. ISR 처리 후 스택에 저장된 레지스터 값들을 복원하여 원래 프로그램을 재개

@duyeonnn
Copy link
Collaborator

duyeonnn commented Feb 3, 2022

인터럽트란 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우 CPU에게 알려 처리할 수 있도록 하는 것을 말한다.

인터럽트는 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나뉜다.

  • 하드웨어 인터럽트: 하드웨어가 발생시키는 인터럽트로 CPU가 아닌 다른 하드웨어 장치가 CPU에게 어떤 사실을 알려주거나 CPU 서비스를 요청해야 할 때 발생시킨다.
    • 전원이상
    • 기계문제
    • 키보드 등 I/O 관련 이벤트
    • Timer 이벤트
  • 소프트웨어 인터럽트: 소프트웨어가 발생시키는 인터럽트로 주로 프로그램 내부에서 잘못된 명령이나 잘못된 데이터 사용시 예외상황이 발생하는 것이다.
    • 0으로 나눴을 때
    • 사용자 모드에서 허용되지 않은 명령 또는 공간 접근시 (시스템콜)
    • 계산 결과가 Overflow/Underflow 날 때

@dailynj
Copy link
Contributor Author

dailynj commented Feb 3, 2022

Interrupt 란 CPU 가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생해 처리가 필요한 경우 마이크로프로세서에게 알려 처리할 수 있도록 하는 것을 말합니다.

  • 내부 인터럽트 (소프트웨어 인터럽트)
    내부 인터럽트는 프로그램 내부에서 0으로 나누는 상황이 발생하거나 계산결과가 overflow, underflow 이거나 잘못된 주소에 접근을 하게 되면 발생하는 것입니다.
  • 외부 인터럽트(하드웨어 인터럽트)
    외부 인터럽트는 프로그램의 외부인 하드웨어 일어나는 것으로 키보드, 프린터, 마우스의 입출력이나 타이머 이벤트들이 이에 해당합니다.

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

6 participants