본문 바로가기
컴퓨터 일반

1. 컴퓨터 구조 - 입출력장치 및 병렬처리

by 쬑께께 2026. 1. 21.

(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 시스템이 사용
- 노드들의 상호연결망에 의해 접속됨