아이티-잉

공부하며 정리하는 IT블로그

Today   Total  
2023년! 복 많이 받으세요

[운영체제] 인터럽트(Interrupt) :: 개념, 처리루틴, 문맥교환

2016. 4. 22. 08:40

인터럽트 Interrupt

 

 

처리기(CPU, 프로세서)가 프로그램의 수행 중 예기치 못한 상황을 만나거나,

다른 장치의 처리가 먼저 이뤄져야할 때, 이를 처리기에게 알리는 일종의 신호다.

 

그리고 폴링(Polling)은 이러한 인터럽트에 우선순위를 두어 감시하는 것을 말한다.

 

 

 


~ 광고 타임 ~


 

 

인터럽트 처리 루틴(ISR; Interrupt Service Routine)

 

이건 그림으로 봐야 편하므로 다시 한번 그림판 작업을 해봤다.

 

 

 

1) 인터럽트가 발생하면 운영체제에게 처리권한을 넘긴다.

2) 운영체제는 문제가 발생한 *PC값을 따로 백업해둔다.

3) 인터럽트 정보를 분석하여 ISR 주소값을 획득한 뒤 해당 루틴으로 제어권을 넘긴다.

4) 해당 인터럽트 처리 루틴이 기존의 *레지스터를 백업한 후 문제를 해결한다.

5) 인터럽트 시점의 기억주소로 복귀하고 백업한 레지스터 또한 복구한다.

6) 인터럽트 처리가 완료되면 PC값을 복구하여, 중단 이후 프로세스로 돌아간다.

 

 

*PC(Program Counter)

마이크로프로세서에서 사용되는 특수 기억 장치다.

프로그램의 다음 명령어 주소를 저장하는 장소로 쓰인다.

 

PC는 명령어 단위가 실행될 때마다 값이 하나씩 증가하며,

다음 명령어가 실행될 수 있도록 돕는 역할을 한다.

 

*레지스터(Register)

처리기(CPU) 내에서 자체적으로 데이터를 보관할 수 있는 저장공간을 레지스터라고 한다.

위의 PC 또한 레지스터의 종류이며, 특수 레지스터로 분류된다.

 

메모리가 거실 냉장고에 있는 초코우유를 마시는 것이라면,

레지스터는 내 방에 있는 초코우유를 마시는 것과 같다.

 

즉, 훨씬 빠르다.

 

 

 


~ 광고 타임 ~


 

 

 

종류

 

크게 두 가지로 구분할 수 있다.

 

 

1) 내부적 인터럽트(Internal Interrupt)

0으로 값을 나누거나, 오버플로우(Overflow) 또는 언더플로우(Underflow)가 발생하는 등

 

2) 외부적 인터럽트(External Interrupt)

정전이나 입출력 하드웨어 장치의 인터럽트, 고장 등

 

 

 

 

문맥교환(Context Switching)

 

 

처리기(CPU)가 다른 프로세스로 작업을 변경할 때 일어나는 작업을 말한다.

현재 처리기가 점유한 프로세스의 상태(문맥)를 저장한 뒤,

인터럽트 처리루틴을 이용하여 새로운 프로세스를 적재(교환)한다.

 

때문에 교환하는 동안 여러 처리비용이 발생하게 되는데, 이를 *오버헤드라고 한다.

 

 

*오버헤드(Overhead)

간접처리비용이라는 의미로, 실행되기까지 발생할 수 있는 시간적, 메모리적 자원을 말한다.

 

예를 들어, 친구와의 약속이 오후 1시라고 생각해보자.

우리는 그전에 일어나서 씻고 옷입고 집을 떠나게 된다.

아직 만나서 놀지도 않았는데 시간이라는 비용이 들고 있다.

 

그렇다, 이것이 오버헤드다.

 

때문에 오버헤드는 낮을 수록 효율이 좋다.

 

 

 


~ 광고 타임 ~


 

 

 

마치며

 

스케쥴링까지 다루려고 했는데,

내용이 길어질 것 같아서 다음 포스팅에 다루겠다.

 

 

끝.