[운영체제] DMA(Direct Memory Access) & 입출력 처리 방식
CPU 개입없이 메모리 접근하는 기법
CPU를 대신하여 I/O장치와 Memory사이의 데이터전송을 담당하는 장치를 지칭
CPU의 개입 없이 주변장치(입출력장치)와 주기억장치와의 데이터 전송이 이루어지는 방법을 통칭
CPU와 주기억장치만이 시스템 버스에 접근할 수 있고 입출력장치는 DMA와 같은 입출력 제어기에 의해 시스템 버스에 접근할 수 있다.
DMA(Direct Memory Access)의 특징

- CPU의 개입 없이 주변장치와 주기억장치와의 데이터 직접 전송
- 프로그램 수행 중 입출력을 위한 인터럽트의 발생 횟수를 최소화하여 컴퓨터 시스템의 효율을 높임
- CPU는 DMA와 상태정보 및 제어정보만을 주고 받음
- 속도가 빠른 디스크, 테이프 등에 사용됨
- DMA는 기억장치 접근을 위해 CPU의 시스템 버스 사용권을 일시적으로 뺏는 사이클 스틸링(Cycle Stealing)을 수행한다. 시스템 버스에 대해 CPU보다 DMA의 우선순위가 높다.
- DMA제어기와 CPU가 시스템 버스를 공유한다.

실제 CPU가 Control하는 건 DMAC (DMA Controller)를 Control 해주는 과정을 의미합니다.
입출력 처리 방식의 종류

- 채널에 의한 I/O
- 메모리 직접 접근 I/O(DMA)
- 인터럽트 처리에 의한 I/O
- 프로그램에 의한 I/O
프로그램에 의한 I/O
- CPU상에서 실행되는 프로그램에 의해 입출력이 직접 제어
- CPU는 입출력 장치에 명령을 보낸 후 동작이 완료될 때까지 대기
- CPU는 주기적으로 주변장치의 상태를 반복적으로 검사, 폴링 방식
- CPU는 자원낭비 발생
인터럽트 처리에 의한 I/O
- 입출력 인터페이스가 주변장치의 상태를 검사하여 준비상태가 되면 인터럽트 신호를 발생하여 입출력 처리를 요구하는 방식
- CPU는 그전에 수행되던 프로그램의 상태를 스택에 저장한 후 Context Switching과정을 통해 인터럽트 서비스 프로그램 수행
- 주변장치에 명령을 보낸 후 주변장치로부터 결과가 올 때까지 CPU는 다른 작업을 수행할 수 있으므로 효율성 증가
- 프로그램에 의한 I/O 문제점 개선
- 순서
메모리 직접 접근 I/O(DMA)
- 인터럽트 방식이 프로그램에 의한 입출력 방식보다는 효율적이지만 입출력을 위한 상태정보, 제어정보, 데이터 전송을 위해서는 여전히 CPU의 능동적인 개입이 요구됨
- CPU는 상태정보, 제어정보만을 교환하게 하고 데이터 전송은 주변장치와 주기억장치간에 직접 교환하게 하는 방식이 더 효율적
- DMA를 사용하기 위해서는 시스템 버스상에 모듈이 하나 추가
- DMA모듈은 CPU를 통하지 않고 한번에 한 단어씩 직접 기억장치로부터 모든 데이터 블록을 전송
- 전송이 완료되면 DMA모듈은 CPU에게 인터럽트 신호를 보내고 CPU는 전송의 시작과 끝 부분에만 관여
채널에 의한 I/O
- DMA 개념을 확장하여 구현한 입출력만을 위한 전용처리장치
- CPU처럼 독자적으로 주기억장치에 저장된 명령어를 처리할 수 있는 능력
- 입출력 채널은 CPU의 개입없이 입출력 처리를 수행
- 두가지 종류의 채널
'전산 관련 시험 > 전산학(컴퓨터일반) 개념정리' 카테고리의 다른 글
Deadlock(데드락) - 정의, 발생 조건, 해결 방법 (0) | 2022.06.08 |
---|---|
컴파일러, 인터프리터, 어셈블러 (0) | 2022.06.08 |
CPU 스케줄링 (0) | 2022.06.08 |
트랜잭션(Transaction) 관리자 (0) | 2022.06.08 |
전산학 오답노트 (0) | 2022.05.27 |
댓글