[운영체제] 인터럽트 개념

https://www.youtube.com/watch?v=V4lp6iGoUFY&list=PLXvgR_grOs1DGFOeD792kHlRml0PhCe9l&index=5

 

인터럽트의 종류 

입출력 인터럽트 (I/O interrupt)

  • 입출력 장치가 데이터 전송을 "요구" 하거나, 전송이 "끝나" 다음 동작이 수행되어야 할 경우
  • 입출력 데이터에 이상이 있는 경우

 

내부 인터럽트

잘못된 명령이나 잘못된 데이터를 사용할 때 발생하며 Trap이라 부른다.

프로그램 검사 인터럽트 (Program Check Interrupt)

  • Division by zero : 컴퓨터의 연산은 덧셈,뺄셈으로 작동한다. 0으로 나눌 경우 무한루프에 빠지게 되며 CPU 가 하드웨어적 손실을 입게 됨
  • Overflow/Underflow
  • 기타 Exception

 

컴퓨터의 핵심은 CPU, 주기억장치 RAM과 함께동작 (밀접한 연관)

이 둘 간의 CPU 가 RAM을 직접 통제할 것이냐 간접으로 할것이냐 두 가지 선택지가 있는데, 현재는 간접적인 방식이 채택 되었다.

여기서 사용되는 것이 메모리 매니저이다.

 

 

메모리 매니저

메모리 매니저 (칩 연산장치 기능)

메모리매니저를 예전에는 "브릿지 칩셋" 이라고 불렀다. 

브릿지가 하는 일은 IO management , RAM과 IO 관리.

CPU-> 메모리 매니저 -> RAM (역도 성립)  의 순서로 실행이 이루어지는데 이 메모리매니저가 입출력 관리자이다. 

 

 

CPU 와 RAM의 성능을 최대화 하려면, 메모리매니저도 성능이 좋아야한다. 그런데 이 메모리매니저의 영향을 받다 보면 의존성이 자꾸 생기니, CPU가 RAM까지 컨트롤 하는 방향으로 진화하게 되었다. 현재는 아래와 같이 Intel Core에서 DDR5, DDR4 (RAM) 까지 관리하는 것을 확인할 수 있다.

인터럽트 동작 순서

인터럽트가 발생하면 하던 일을 멈춘다. CPU 가 연산을 하고 있었는데 연산을 중단(일시정지)한다. 인터럽트가 발생하면 인터럽트 처리 코드가 작동한다. 그 처리 코드를 ISR이라고 부름 (각 인터럽트 마다의 서비스 루틴을 작동) 코드가 완료될 때까지 정지.

 

1. 인터럽트 요청 

2. 프로그램 실행 중단 

3. 현재의 프로그램 상태 백업 : Process Control Block, PC(Program Counter) 등 

4. 인터럽트 처리루틴 실행 : 인터럽트를 요청한 장치를 식별한다

5. 인터럽트 서비스 루틴 (ISR) 실행 

 

 

 

 

IO 성능의 체감

Hello World를 출력할 때 하드웨어가 제어하는 Driver는 비디오카드.

내가 Hello World를 출력하는데, 출력할 것은 Data이며 종착지는 비디오 카드(주변기기) 이다.

 

어떻게 전달할 것인가에서 차이가 생긴다.

RAM이 이런 데이터를 출력할 때는 Printf같은 함수를 이용하는데, 내부(Kernel)에서 SystemCall을 한 뒤(항상 그런 것은 아니지만 RAM 에게 Hello World가 전달된다). 이렇게 되면 모니터에 Hello World가 출력되는 데에 많은 단계를 거쳐야 한다.

 

고성능 장치가 동작할 때는 CPU 혼자 모든 일을 처리하지 않고, Kernel 에 함수를 Call 한 이후 바로 user에게 반환한다. 그럼 이 루틴이 실행되는 동안 (반환하는 동안) 출력장치에 데이터를 찍어 처리 속도가 빨라진다.

 

 

 

 


https://raisonde.tistory.com/entry/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%9

 

인터럽트(Interrupt)의 개념과 종류

인터럽트는 컴퓨터 구조에서 CPU의 활동에 많은 영향을 끼치는 중요한 개념이다. 어느 전산 시험, 어느 회차에서도 관련 문제가 꼭 등장하므로 인터럽트에 대해서만 확실히 이해하고 가도 몇 문

raisonde.tistory.com