인터럽트 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:운영체제]][[분류:정보처리기사]]
;Interrupt
;Interrupt
;프로그램을 실행 중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 작업
;프로그램을 실행 중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 작업
10번째 줄: 9번째 줄:
* '''전원 이상 인터럽트(Power fail interrupt)''': 정전, 파워 이상 등
* '''전원 이상 인터럽트(Power fail interrupt)''': 정전, 파워 이상 등
* '''기계 착오 인터럽트(Machine check interrupt)''': CPU의 기능적인 오류
* '''기계 착오 인터럽트(Machine check interrupt)''': CPU의 기능적인 오류
* '''외부 인터럽트(External interrupt)'''
* '''외부 신호 인터럽트(External interrupt)'''
** 자원이 할당된 시간이 다 끝난 경우
** 자원이 할당된 시간이 다 끝난 경우
** 키보드로 인터럽트 키를 누른 경우(대표적으로 Control + Alt + Delete)
** 키보드로 인터럽트 키를 누른 경우(대표적으로 Control + Alt + Delete)
19번째 줄: 18번째 줄:


=== 내부 인터럽트 ===
=== 내부 인터럽트 ===
* 잘못된 명령이나 잘못된 데이터를 사용할때 발생,,
* 잘못된 명령이나 잘못된 데이터를 사용할때 발생
* '''Trap'''이라고도 함
* '''프로그램 검사 인터럽트(Program check interrupt)'''
* '''프로그램 검사 인터럽트(Program check interrupt)'''
** Division by zero
** Division by zero
28번째 줄: 28번째 줄:
* 프로그램 처리 중 명령의 요청에 의해서 발생
* 프로그램 처리 중 명령의 요청에 의해서 발생
* 대표적인 형태는 프로그램에서 감시 프로그램(SVC) 호출
* 대표적인 형태는 프로그램에서 감시 프로그램(SVC) 호출
* '''SVC(SuperVisor Call)'''
* SVC(SuperVisor Call)
** 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우
** 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우
** 복잡한 입출력 처리를 하는 경우
** 복잡한 입출력 처리를 하는 경우
40번째 줄: 40번째 줄:
#* 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.  
#* 인터럽트 원인을 파악하고 실질적인 작업을 수행한다. 처리기 레지스터 상태를 보존한다.  
#* 서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
#* 서비스루틴 수행 중 우선순위가 더 높은 인터럽트가 발생하면 또 재귀적으로 1~5를 수행한다.
#* 인터럽트 서비스 루틴을 실행할 때 인터럽트 플래그(IF)를 0으로 하면 인터럽트 발생을 방지할 수 있다.
# '''상태복구''' : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.
# '''상태복구''' : 인터럽트 발생 시 저장해둔 PC(Program counter)를 다시 복구한다.
# '''중단된 프로그램 실행 재개''': PCB의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
# '''중단된 프로그램 실행 재개''': PC의 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.
 


== 인터럽트 우선순위 ==
== 인터럽트 우선순위 ==
55번째 줄: 55번째 줄:
# '''SVC'''(SuperVisor Call)
# '''SVC'''(SuperVisor Call)


* 일반적으로 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가 높고,
* 일반적으로 하드웨어 인터럽트가 소프트웨어 인터럽트보다 우선 순위가
* 일반적으로 내부 인터럽트 보다 외부 인터럽트가 우선 순위가 높다.
* 일반적으로 높고 내부 인터럽트 보다 외부 인터럽트가 우선 순위가 높다.




=== 우선순위 판별 방법 ===
=== 우선순위 판별 방법 ===


==== 소프트웨어적인 방법(폴링) ====
==== 소프트웨어적인 방법 ====
;Polling
;Polling
* 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾고, 이에 해당하는 인터럽트 서비스 루틴을 수행한다.
* 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾고, 이에 해당하는 인터럽트 서비스 루틴을 수행한다.
68번째 줄: 68번째 줄:
* 많은 인터럽트가 있을 경우 하드웨어 적인 방법에 비해서 우선순위 판단 속도가 느리다.
* 많은 인터럽트가 있을 경우 하드웨어 적인 방법에 비해서 우선순위 판단 속도가 느리다.
* 회로가 간단하고 융통성이 있으며, 별도의 하드웨어가 필요 없다.
* 회로가 간단하고 융통성이 있으며, 별도의 하드웨어가 필요 없다.
* Polling의 주기가 짧으면 server 성능에 부담이 생기며, 주기가 길어지면 실시간성이 떨어진다


==== 하드웨어적인 방법 ====
==== 하드웨어적인 방법 ====
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)