인터럽트와 폴링(Polling)

OS/Theory 2016. 4. 6. 10:48

<폴링>

CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식

자원들은 폴링 신호를 받은 후 자신의 상태를 CPU에게 알려 주게 될 텐데, 이 때 폴링의 간격을 적절히 정해야 한다. 동시에 각 자원들은 직전 폴링 이후 변화된 자신의 상태를 다음번 폴링 때까지는 알릴 수 없다는 점이 문제다.

아무 일이 없었는데도 CPU는 폴링에 일정량의 시간을 들여야 하는 부담도 발생한다.

<인터럽트>

각 자원들이 능동적으로 자신의 상태변화를 CPU에게 알리는 방식

채널과 중앙처리장치 간의 통신은 일반적으로 인터럽트(interrupt)에 의해 이루어짐

[동작 방법]



 

1. 장치가 CPU에게 인터럽트 신호를 보낸다. (이 때, CPU가 명령어를 실행중이면 그 명령어를 실행 완료 한 후, 인터럽트 신호를 받는다.)

왼쪽 그림은 인터럽트 직전의 상황을 말해준다. PC의 값이 N+1인 것은 현재 실행중인 명령어가 N번지에 있다는 것을 의미한다.

2. 인터럽트를 받으면 그 전까지 실행했던 프로그램이 인터럽트 처리 후 다시 실행되야 하기 때문에 현 상태의 정보값을 스택에 저장한다.

인터럽트가 시작되기 직전에 CPU에서 처리하던 정보(N+1, a,b,c,d, T)들을 제어 스택에 저장한다. 인터럽트가 시작되어 Y의 주소번지가 PC에 적재된다. 스택 포인터에는 인터럽트가 끝난 후, 프로그램이 이어서 시작되어야 하는 제어 스택의 주소를 저장한다. , T-4가 됨

3. 인터럽트 처리 루틴의 시작주소를 PC에 넣어 실행시킨다.

Y주소를 적재하여 인터럽트 시작

4. 인터럽트가 끝나면 이전에 저장했던 정보들을 재저장한 후, 프로그램을 이어서 실행한다.

인터럽트가 끝나면 Y+L+1이 저장되는데 이것은 Y+L다음의 주소값을 말한다. 그때 스택포인터에 있는 T-4를 활용해 N+1을 불러온다.



<중첩 인터럽트>

중첩 인터럽트는 두 가지가 있다.

1. 순차적 처리

인터럽트를 처리하는 동안에 발생하는 인터럽트는 현재 처리가 끝난 뒤 바로 처리해주는 방식. 순차적으로 차례대로 처리하고자 할 때 사용

2. 중첩 처리

현재 처리중인 인터럽트를 잠시 접어두고 또 다른 인터럽트로 실행을 옮길 수 있도록 하는 방식. 인터럽트의 중요도에 따라서 우선순위가 더 높은 경우 사용

 

 



 

 

Copyright2014 By 휴먼사이언스

posted by 경원구