(45)
인터럽트
- 컴퓨터가 프로그램을 수행하는 동안 컴퓨터 내부 또는 외부에서 예기치 않은 사건이 발생했을 때, 응급조치를 수행한 후 계속적으로 프로그램 처리를 수행하는 운영체제의 기능
- 정상적인 명령어 인출 단계로 진행하지 못할 때 실행을 중단하지 않고 특별히 부여된 작업을 수행한 후 원래의 인출 단계로 진행하는 것
- 인터럽트 수행순서: 인터럽트 요청회로(request circuit) -> 인터럽트 처리루틴(processing circuit) -> 인터럽트 서비스 루틴
* 인터럽트 처리루틴(IPR): 상태정보 저장
* 인터럽트 서비스 루틴(ISR): 인터럽트 서비스(해결)
(1) 인터럽트가 발생하는 경우
- 정전 또는 기계적 고장
- 프로그램상의 문제
- 프로그램 조작어에 의한 의도적인 중단
- 입출력 조작에 중앙처리장치의 기능이 요청되는 경우
- 프로그램에서 오버플로나 언더플로 인터럽트 요청
(2) 인터럽트 종류
| 하드웨어적 인터럽트 - 장치관련(치명적) - 우선순위 높음 |
전원이상 | - 정전(power fail) - 가장 높은 우선 순위 가짐 |
| 기계 착오(검사) 인터럽트 | - 기계의 기능적인 오동작 - 프로그램이 실행되는 중에 어떤 장치의 고장으로 인해 제어 프로그램에 조치를 취해 주도록 요청하는 인터럽트 |
|
| 외부 인터럽트 = 외부 신호 인터럽트 |
- 정해놓은 시간이 되었을 때 타이머에서 인터럽트 발생시킴 - 콘솔에서 인터럽트 키를 눌러 강제로 인터럽트 발생시킴 |
|
| 입출력 인터럽트 | - 입력이나 출력 명령을 만나면 현재 프로그램의 진행을 정지-> 입출력 담당하는 기구(채널 등)에 입출력 이루어지도록 명령, 중앙처리장치는 다른 프로그램 실행 | |
| 소프트웨어적 인터럽트 | 프로그램 검사 인터럽트 | - 프로그램 실행 중 잘못된 데이터를 사용 또는 보호된 구역에 불법 접근하는 프로그램 자체에서 잘못되어 발생 |
| SVC (Supervisor Call Interrupt) |
- 프로그램 내에서 제어 프로그램에 인터럽트를 요청하는 명령 - 프로그래머에 의해 프로그램의 원하는 위치에 인터럽트 시키는 방법 |
(3) 인터럽트 동작방법
- 인터럽트 발생 시 주 프로그램: 일시적으로 정지 ->ISR로 분가, ISR이 실행, 연산이 수행 -> ISR 프로그램 종료 -> 주 프로그램의 중지된 부분부터 다시 수행
- 1. 인터럽트 요청: 인터럽트 발생장치로부터 인터럽트 요청
- 2. 현재 수행 중인 프로그램 저장: 제어 프로그램에서는 현재 작업 중이던 프로세서의 상태를 저장시킴 (현재 명령어까지는 수행 한 후 저장)
- 3. 인터럽트 처리: 인터럽트의 원인이 무엇인지 찾아 처리하는 인터럽트 처리 루틴을 실행
- 4. 조치: 인터럽트 처리 루틴에서는 해당 인터럽트에 대한 조치를 취함
- 5. 프로그램 복귀: 인터럽트 처리 루틴 종료 시 저장되었던 상태를 이용해 원래 작업이 계속되게 함
| ISR | ISR | ISR | |||||
| ↑발생 | ↓복구 | ↑ | ↓ | ↑ | ↓ | ||
| Main - 프로그램 중단 |
Main | Main | Main | ||||
- 인터럽트 동작 원리
| 인터럽트 요청 → | - 인터럽트 인지 - 상태 보존 → - 분기 |
- 서비스 (해결) - 제어 복귀 |
| - 상태 복귀 - 처리 재개 |
↲ | |
| 인터럽트 요청 회로 | 인터럽트 처리루틴(IPR) | 인터럽트 서비스 루틴(ISP)_ |
(4) 인터럽트 요청 회선의 연결 방법
| 단일회선방법 | - 단일회선으로 된 버스에 여러 장치를 인터페이스를 통하여 결합시키는 방법 - 중앙처리장치는 인터럽트의 원인을 판별하는 기능을 필요로 함 - S/W적 방법으로 폴링 등 |
| 다중회선방법 = 벡터인털버트 |
- 각 장치의 독립적인 전용회선을 인터페이스로 중계해 결합시키는 방법 - 각 장치마다 고유의 회선 존재 - 모든 장치들이 서로 다른 중앙처리장치의 인터럽트 요청 신호 회선들과 연결되어 있음 -> 원인 판별 빠름 |
| 혼합회선방법 | - 다중회선을 가지고 있고, 각 회선에는 여러 개의 장치들이 인터페이스를 통해 결합되어 있는 방법 - 단일회선 방법 + 다중회선방법 |
(5) 인터럽트 체제
- 인터럽트 처리 후 정상적인 프로그램 수행을 위해선 인터럽트 처리 전 중앙처리장치의 상태와 복귀주소의 저장에 관한 것들이 인터럽트 체제에서 중요함
- 중앙처리장치의 상태는 PSW(Program Status Word)에 저장함
- 복귀주소 저장은 비벡터 방법과 벡터 방법이 존재
| 비벡터 방법 | - 인터럽트 발생 시 메모리 주소 0번지에 복귀주소 보관 - 인터럽트 수행 중에 또 다른 인터럽트가 요청되면 주소 0번지에 기억한 PC의 값이 파괴될 우려 있음 |
| 벡터 방법 | - 인터럽트 발생 시 다음 실행 주소인 PC의 값을 메모리 스택에 저장 |
(6) 인터럽트 우선순위 체계
- 인터럽트가 여러 장치에서 동시에 발생될 때 우선 순위를 결정해야 함
- 우선순위가 가장 높은 것이 먼저 처리되고, 그 외의 인터럽트 요구는 모두 금지(mask)됨
- 인터럽트 우선순의 결정은 소프트웨어적 방법과 하드웨어적 방법이 존재
| Polling 방식 | - 소프트웨어적 방법 - 중앙처리장치가 각각의 주변장치들을 연속적으로 순환하며 인터럽트 요구 유무를 수시를 체크 - 주변 장치의 상태를 보존할 필요 없음 - 여러 장치에 대해 인터럽트 요구 점검(IPR필요) - 인터럽트 발생 시 우선순위가 가장 높은 자원부터 인터럽트 요청 플래그를 차례로 검사, 인터럽트 수행 - 우선순위 변경 간단, 회로가 간단하게 구성 - 인터럽트 조사하는데 많은 시간 걸릴 수 있음 -> 인터럽트 반응 속도 느림 - 중앙처리장치가 주변장치를 연속하여 감시해 입출력이 수행됨 -> 중앙처리장치의 시간이 낭비됨, 처리 효율 낮아짐 |
| 벡터 인터럽트 방식 (veclored interrupt) |
- 하드웨어적 방법 - 인터럽트 발생한 장치가 중앙처리장치에게 분기할 자원에 대한 정보를 제공 (이 정보를 인터럽트 벡터라고 함) - 폴링과 같이 장치 식별을 위한 별도의 프로그램 루틴 필요 없음 -> 응답 속도 빠름 구현방법 1. 중앙처리장치에 인터럽트 요청 신호 보냄 (IR = 1) 2. 중앙처리장치는 인터럽트에 대한 응답으로 하드웨어에 의해 인터럽트 인정신호(INTACK) 내보냄 3. 인터럽트 요청한 장치 인터페이스는 INTACK 신호에 의해 장치 번호 전송, 중앙처리장치에 가까운 쪽에 있는 장치가 우선 이 인정신호를 받게 되고 그 장치가 인터럽트를 요청한 경우에는 자신의 인터럽트 벡터를 데이터 버스를 이용해 중앙처리장치로 보냄 4. 중앙처리장치가 이 벡터를 읽어 인터럽트 요청 장치를 식별해 인터럽트를 받아들이면 IR = 0으로 함 |
| 데이지체인 (daisy chain) |
- 모든 장치들을 우선순위에 따라 직렬로 연결 - 각 장치의 인터럽트 요청에 따라 각 비트가 개별적으로 Set 될 수 있는 Mast Register를 사용 - 우선 순위는 Mask Register와 비트 위치에 의해 결정됨 * Mask Register는 우선순위가 높은 것이 서비스받고 있을 때 낮은 우선순위는 비활성화시킬 수 있음 |
(43)
입출력장치
1. 입출력장치의 주소지정
| Memory-mapped I/O 기억장치 사상 입출력 방식 |
- I/O장치와 메모리의 주소 공간을 나누어 사용 - 동일한 주소선과 제어선을 메모리와 입출력이 공유, 주소선에 실린 값으로서 메모리 주소와 입출력 주소를 구별하는 방식 - 메모리 읽기/쓰기 명령과 I/O 포트의 입출력 명령이 동일 |
| Isolated I/O 분리형 입출력 방식 |
- 메모리 공간과 I/O 공간이 분리 - 메모리 주소지정을 위한 주소 버스와 별도로 I/O 주소 라인을 사용 - 메모리 읽기/쓰기 명령과 I/O 포트의 입출력 명령어 다름 |
2. 입출력 제어 기법
| 프로그램 입출력 방식 | 프로그램 입출력 방식 | - 중앙처리장치가 프로그램 수행하는 도중 입출력과 관련된 명령 만나면 해당 입출력 모듈에 명령 보냉너 그 명령을 처리하는 방식 - 데이터의 입출력 동작이 CPU가 수행하는 프로그램의 I/O 명령에 의해 수행됨 - 중앙처리장치의 효율 낮아짐 |
| 인터럽트 입출력 방식 | - 프로그램 입출력 방식의 단점 개선하기 위한 방식 - CPU가 계속해서 입출력 상태를 검사하고 있지 X - 입출력 장치가 데이터를 전송할 준비가 되면 CPU에 인터럽트 발생시킴 |
|
| 입출력 제어장치에 의한 제어 방식 |
DMA (Direct Memory Access) |
- 기억장치의 입출력 모듈 간의 데이터 전송을 DMA 제어기가 처리 *중앙처리장치는 개입하지 않도록 함 - CPU를 거치지 않고 주변장치와 메모리 사이에 직접 데이터를 전달하도록 제어하는 인터페이스 방식 -> 고속 주변장치와 컴퓨터 간의 데이터 전송에 많이 사용 - 작업이 끝나면 CPU에게 인터럽트 신호를 보내 작업이 종료했음을 알림 - CPU를 사용하지 않아 I/O장치의 주소와 연산지정자(읽기/쓰기), 주기억장치 영역의 시작주소, 전송될 데이터 단어들의 수를 알 수 있도록 구성되야 함. - Cycle Stealing필요 - CPU가 주기억장치를 액세스하지 않는 동안 시스템의 버스를 사용하는 기능 있어야 함 |
| 입출력채널 (I/O Channel) |
- 주변장치에 대한 제어 권한을 CPU로부터 넘겨받아 CPU 대신 입출력 관리하는 입출력 전용 프로세서 - 주기억장치와 입출력장치 사이에 위치 - 입출력장치의 CPU의 속도차로 인한 단점 해결 - CPU의 제어장치로부터 입출력 전송을 위한 명령어를 받으면 CPU오는 독립적으로 동작해 입출력 완료 - 주기억장치에 기억되어 있는 채널 프로그램의 수행과 자료의 전송을 위해 주기억장치에 직접 접근 - CPU나 DMA 대신 독립적 입출력 프로세서 |
* 입출력 채널 종류
| 선택채널 (Selector Channel) |
- 고속 입출력장치와 I/O를 위해 사용(자기디스크, 자기테이프, 자기드럼 등) - 특정한 한 개의 장치를 독점하여 입출력 |
| 다중채널 (Multiplexer Channel) |
- 저속 입출력장치를 제어하는 채널(카드리더, 프린터 등) - 동시에 여러 개의 입출력장치 제어 |
| 블록 다중채널 (Block Multiplexer Channel) |
- 고속 입출력장치 제어 - 동시에 여러 개의 입출력장치 제어 |
클러스팅 컴퓨터
- 프로세서 이용률이 낮은 컴퓨터들을 네트워크로 통합해 병렬처리 시스템의 노드들로 사용 -> 유휴 사이클 유용하게 사용
- 최근 대부분의 조직이 많은 컴퓨터 보유하고 있음 -> 네트워크로 통합해 사용하면 고가의 서버 별도로 구입할 필요 없음
- 독립적인 컴퓨터들이 네트워크를 통해 상호 연결-> 하나의 통합된 컴퓨팅 자원으로서 동작하는 병렬처리 혹은 분산처리 시스템의 한 형태
시스템 구성 방법에 따른 분류
| 대칭적 다중프로세서 (SMP, Symmetric Multi Processors) |
- 주기억장치 공유 - 대략 16-64개 정도의 프로세서들로 구성되는 중형급 시스템 - 일반적으로 완전-공유 구조(shared-everything architecture)를 가짐 - 작업 스케줄링 및 파일/데이터 수준에서의 프로그램들 간 상호작용은 하나의 OS에 의해 통합적으로 지원됨 - 상호연결망의 병목현상으로 인해 시스템 규모(프로세서 수)에 한계 있음 |
| 대규모 병렬프로세서 (MPP, Massively Parallel Processors) |
- 독립적 메모리 사용 - SMP와 반대되는 설계 개념 - 고속의 상호연결망을 통해 서로 연결되는 수백 혹은 수천 개의 프로세싱 노드들로 이루어짐 - 각 노드는 일반적으로 간단한 구조의 프로세서와 기억장치로 구성됨 (여러 새의 프로세서들이 하나의 노드에 포함되기도 함) - 노드들 중에 일부분은 디스크와 같은 주변장치들과의 인터페이스를 가지고 있으며, 각 노드에는 내부 자원 관리와 통신지원을 위한 독립적인 OS가 탑재되어 있음 - 노드들 간의 통신은 메시지 - 전송 방식을 주로 사용 - 통신 거리를 최대한 단축시키고 대역폭을 높이기 위해 복잡도가 높은 상호연결망들을 사용 |
| 캐시 - 일관성 NUMA 시스템 CC-NUMA, Cache-coherent NUMA) |
- CC-NUMA에서는 노드로서 UMA 혹은 NUMA 시스템이 사용 - 노드들의 상호연결망에 의해 접속됨 |
'컴퓨터 일반' 카테고리의 다른 글
| 2. 운영체제 - 프로세스 관리 (0) | 2026.01.22 |
|---|---|
| 2. 운영체제 - 운영체제의 개념 (0) | 2026.01.22 |
| 1. 컴퓨터 구조 - 기억장치 (0) | 2026.01.21 |
| 1. 컴퓨터 구조 - 중앙처리장치 (0) | 2026.01.21 |
| 1. 컴퓨터 구조 - 자료의 표현 (0) | 2026.01.21 |