DMA
DMADirect Memory Access는 주변 장치(I/O 장치)가 CPU의 개입 없이 직접 메모리와 데이터를 주고받을 수 있게 해주는 방식이다. 일반적으로 데이터 이동은 CPU가 복사 명령을 통해 수행하지만, DMA는 이를 대신 수행하여 CPU를 다른 작업에 집중할 수 있게 한다. 주로 임베디드 시스템이나 OS 커널, 드라이버 레벨에서 사용되는 개념으로, CPU의 부담을 줄여 성능을 향상시킬 수 있다.
DMA는 CPU의 중재 없이 주변장치가 메모리에 직접 접근하여 데이터를 읽고 쓸 수 있게 해주는 시스템의 한 기능이다. DMA를 사용함으로써, 데이터 전송 과정에서 CPU가 필요하지 않으므로, CPU는 다른 작업을 수행하는 데 더 많은 시간을 할애할 수 있다. 이는 시스템 성능의 향상으로 이어지는데, 특히 I/O 작업이 많은 시스템에서 그 이점이 두드러진다.
왜 DMA가 필요할까?
🔸 일반적인 데이터 전송 방식 : CPU에 큰 부하를 주고, 성능 저하를 유발할 수 있다.
- I/O 장치가 인터럽트를 발생시켜 CPU에 알림
- CPU가 데이터를 한 바이트씩 메모리로 복사
- 전체 전송이 끝날 때까지 CPU는 바쁘게 동작
🔹 DMA 방식 : CPU는 다른 작업을 수행할 수 있어 병렬 처리 및 시스템 효율성 향상에 기여할 수 있다.
- CPU는 초기 설정만 하고 DMA 컨트롤러에게 데이터 전송 요청
- DMA 컨트롤러가 CPU의 개입 없이 메모리와 I/O 장치 간 데이터 전송 수행
- 전송 완료 후 인터럽트를 통해 CPU에 완료 알림
DMA의 동작 방식
- CPU가 DMA 컨트롤러에 시작 주소, 전송 크기, 방향 등을 설정
- DMA 컨트롤러가 메모리와 I/O 장치 간 데이터 전송 시작
- 전송이 완료되면 DMA 컨트롤러가 CPU에 인터럽트를 발생시켜 완료 알림
DMA는 일반적으로 버스를 통해 메모리와 주변 장치 사이에서 작동하며, 메인 메모리를 직접 읽고 쓸 수 있는 권한이 있다.
DMA의 전송 모드
- Burst Mode: 데이터를 한 번에 몰아서 전송. 빠르지만 버스 독점 가능성 있음.
- Cycle Stealing Mode: CPU와 번갈아가며 버스를 사용. CPU 영향 적음.
- Transparent Mode: CPU가 버스를 사용하지 않을 때만 전송. CPU 영향 거의 없음.
DMA의 장점
🔹 CPU의 부하가 감소하여 전체 시스템의 효율성이 증가한다.
🔹 데이터 전송 속도가 향상되므로, 전반적인 시스템 응답 시간이 단축된다.
- CPU의 개입을 최소화하여 CPU 사용률 감소
- 데이터 전송 속도 향상
- 고속 I/O 장치와의 병렬 작업 가능
- 멀티미디어, 네트워크, 대용량 파일 처리에서 유리
DMA 사용 시 주의할 점
- DMA 컨트롤러가 메모리를 접근하기 때문에 동기화 문제가 발생할 수 있음
- DMA를 통한 전송 중 메모리 접근 충돌 방지를 위한 버스 제어가 필요
- 하드웨어 복잡성 증가
실제 활용 예시
- 디스크 ↔ 메모리 전송
- 네트워크 카드 ↔ 메모리 버퍼
- 오디오 스트리밍 (사운드 카드 ↔ 메모리)
- 센서 데이터 처리 (임베디드 시스템)
이더넷
이더넷Ethernet은 근거리 통신망Local Area Network (이하 LAN)을 구현하기 위해 가장 널리 쓰이는 유선 통신 기술이다. 컴퓨터, 라우터, 스위치 등 여러 장비를 하나의 네트워크로 연결할 수 있도록 하는 프레임 기반의 통신 프로토콜이다.
- 표준: IEEE 802.3
- 매체: 주로 UTP 케이블 (Cat 5e, 6 등), 광섬유도 사용 가능
- 전송 방식: 패킷(프레임) 기반 비연결형 통신
이더넷의 구조
이더넷 프레임은 헤더 + 데이터 + 트레일러로 구성되어 있으며, 다음과 같은 필드가 존재한다.
| 필드 | 설명 |
| Destination MAC | 목적지 MAC 주소 |
| Source MAC | 출발지 MAC 주소 |
| Type/Length | 상위 프로토콜 식별 (IPv4, ARP 등) |
| Data | 실제 데이터 (최소 46 ~ 최대 1500바이트) |
| CRC | 오류 검출용 FCS 값 |
이더넷은 MAC 주소MAC address 기반으로 통신을 수행한다. 이는 장비 고유의 식별자다.
이더넷의 동작 방식
- 이더넷은 기본적으로 브로드캐스트 기반이다. 데이터를 전송하면 네트워크에 연결된 모든 장비에 해당 프레임이 전송되며, 그 중 목적지 MAC 주소가 일치하는 장비만 수신한다.
- 초기에는 CSMA/CDCarrier Sense Multiple Access with Collision Detection 기법을 사용하여 충돌을 감지하고 재전송했지만, 스위치 기반 이더넷이 보편화되면서 충돌Collision은 거의 발생하지 않는다.
허브 vs 스위치
- 허브Hub: 프레임을 단순히 모든 포트로 전달 → 비효율적, 충돌 발생 가능
- 스위치Switch: MAC 주소 테이블을 기반으로 해당 목적지로만 프레임 전달 → 효율적, 충돌 없음
요즘은 거의 모든 이더넷 네트워크에서 스위치 기반 장비를 사용한다.
이더넷의 장점
- 표준화된 프로토콜로 장비 간 호환성이 높음
- 저렴하고 유지보수가 쉬움
- 다양한 전송 속도 지원
- 구성과 확장 용이 (허브 → 스위치 → 라우터)
이더넷의 단점
- 이동성 측면에서 물리적 제약이 존재함 (자유로운 로밍 불가)
- 네트워크를 확장에 있어 추가 비용이 발생하고 시간이 걸림
- 설치가 어려움
- 하나의 케이블로 하나의 특정 컴퓨터에만 연결할 수 있음
실제 사용 예시
- 가정용 및 기업용 유선 인터넷
- 산업용 자동화 장비 간 통신
- 데이터 센터 내부 네트워크
- 임베디드 시스템의 네트워크 기능
'Krafton Jungle > 2. Keywords' 카테고리의 다른 글
| [WEEK08] 네트워크 계층 (0) | 2025.05.01 |
|---|---|
| [ALWAYS] 정글 공부 키워드 (0) | 2025.04.30 |
| [WEEK07] 가비지 컬렉션과 메모리 관련 오류들 (0) | 2025.04.28 |
| [WEEK07] System Call (0) | 2025.04.28 |
| [WEEK07] Demand-zero Memory (0) | 2025.04.28 |