나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2026-03-10 13:45:05

DMA


파일:다른 뜻 아이콘.svg  
#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. 
#!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 스타트렉에 등장하는 현상}}}에 대한 내용은 [[암흑 물질 변칙]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[암흑 물질 변칙#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[암흑 물질 변칙#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}
#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.

#!if 리스트 != null
{{{#!if 문서명1 != null
 * {{{#!if 설명1 != null
스타트렉에 등장하는 현상: }}}[[암흑 물질 변칙]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[암흑 물질 변칙#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[암흑 물질 변칙#|]] 부분}}}}}}{{{#!if 문서명2 != null
 * {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
 * {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
 * {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
 * {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
 * {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
 * {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
 * {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
 * {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
 * {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}

1. Direct Memory Access
1.1. Remote Direct Memory Access
2. Dynamic Memory Allocation3. Digital Markets Act4. 서울특별시 시내버스 회사 다모아자동차의 약칭

1. Direct Memory Access

직접 메모리 접근(Direct Memory Access, DMA)은 컴퓨터 주변 기기 또는 부품이 CPU를 거치지 않고 시스템 메모리(RAM)에 직접 접근하여 필요한 데이터를 가져오는 기술이다.

컴퓨터 주변 기기나 부품이 시스템 메모리에 접근하여 쓰기/읽기 작업을 수행할 경우 CPU에게 요청하여 CPU가 대신 처리하도록 해줘야 한다. 하지만 이 경우 CPU가 처리하고 있는 동안 대기해야 하므로 오버헤드가 발생하게 된다. 그래서 등장한 것이 DMA으로 CPU와는 독립적으로 동작하며 DMA 컨트롤러를 통해 CPU를 거치지 않고 바로 RAM에 접근하여 데이터를 쓰거나 불러오는 기능이다. DMA 기능을 사용하면 CPU에 부담을 주지 않으면서 빠르게 RAM에서 데이터를 쓰거나 가져올 수 있다. 그래서 대용량 메모리를 실시간으로 읽고 쓰는 주변 기기나 부품들은 기본적으로 DMA 기능을 사용하고 있다. 대표적인 예시가 HD Audio 장치로 DMA를 사용하여 오디오 버퍼를 자동으로 복사하는 동작을 구현한다.

그러나 DMA는 CPU와는 독립적으로 동작하며 아무런 제한 없이 직접 RAM에 접근하여 데이터를 읽거나 쓸 수 있다는 점에서 사실상 RAM의 모든 부분을 볼 수 있으므로 보안 문제가 발생할 수 있다. 대표적으로 Thunderbolt에서 발견된 보안 취약점인 Thunderclap는 DMA 기능을 이용한 것이다. 최근에는 게임 해킹 프로그램도 DMA를 사용하기 시작하는데 게임을 실행하는 주 컴퓨터에 DMA 카드를 장착하고 게임을 플레이하면서 DMA 카드가 게임 메모리에 접근하여 수집한 데이터를 서브 컴퓨터로 보내고 서브 컴퓨터에서 이를 분석하고 주 컴퓨터의 모니터에 정보를 표시하는 식으로 사용한다. 핵 프로그램이 주 컴퓨터가 아닌 서브 컴퓨터에서 실행하고 있기 때문에 커널 수준에서 동작하는 안티 치트도 쉽게 감지할 수 없다. [1] 물론 DMA 카드를 감지할 수 있지만 핵 사용자도 이를 알고 DMA 카드의 펌웨어를 교체하여 다른 장치로 위장시키기 때문에 완전히 잡아낼 수 없다.[2] 따라서 안티 치트는 다양한 방법들을 동원해 DMA 카드 존재 여부를 확인해야 한다.

이렇다보니 이 문제를 해결하기 위해 IOMMU[3]가 있으며 Windows에서는 이를 활용한 커널 DMA 보호가 존재한다. 일부 온라인 게임은 DMA을 이용한 핵을 막기 위해 IOMMU 활성화를 요구한다.

1.1. Remote Direct Memory Access

RDMA. DMA와의 차이점은 로컬 메모리가 아닌 원격 메모리에 액세스한다.

이 Remote Memory는 시스템 메모리가 아닌 전혀 다른 시스템에 장착된 메모리에 직접 액세스하게 되는데 원격지라는 특징에서도 유추할 수 있듯이 이더넷 카드(NIC)에서 주로 사용된다. 10Gbps가 넘어가는 시스템에서 대량의 데이터를 액세스하게 되면 기존의 네트워크 스택은 TCP/IP로 인한 CPU의 오버헤드와 메모리 복사로 인해 오버헤드가 커지지만 RDMA를 지원하면 NIC이 각 시스템의 메모리에 직접 액세스하므로 CPU로 인한 오버헤드가 줄어든다.

2. Dynamic Memory Allocation

동적 메모리 할당이라고 부르며 컴파일 당시에 메모리를 할당하는 게 아닌 프로그램 동작 중에 임의로 필요한 만큼 할당해서 사용하는 행위이다.

C나 C++에서 Malloc 함수 등을 이용해 메모리를 새로 할당하는 행위 등이 대표적인 동적 메모리 할당이며 C#이나 Java 등의 언어에서는 인터프리터, JIT가 실시간으로 메모리 할당을 자동으로 수행한다.

이 기능을 쓰면 들어오는 자료량에 따라서 필요한 메모리양을 능동적으로 줄이고, 키우고 할 수 있기 때문에 처음부터 스택 영역에 많은 메모리를 할당할 필요가 없지만 대신에 힙 영역 메모리에 임의로 공간을 추가하는 셈이라 제대로 관리를 안 할 경우 메모리 누수의 원흉이 된다.

3. Digital Markets Act

디지털 시장법. 유럽 연합(EU)이 빅테크 기업의 시장 지배력을 억제하려는 목적으로 제정을 추진하고 있는 법안. # #

시장 지배력을 이용해 소비자의 선택권을 제한하는 소수 거대 플랫폼 사업자를 게이트키퍼(gatekeeper)로 지정하여 이들 기업을 대상으로 특별 규제를 적용하는 것이 골자이다.

4. 서울특별시 시내버스 회사 다모아자동차의 약칭

파일:상세 내용 아이콘.svg   자세한 내용은 다모아자동차 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[다모아자동차#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[다모아자동차#|]] 부분을
참고하십시오.
[1] 커널 수준에서 동작하는 안티 치트도 아래 쪽에는 일절 관여할 수 없다. 예시로 인텔 CPU에서만 사용할 수 있는 핵이 있는데 이 핵은 인텔 관리 엔진의 취약점을 활용하기 때문이다. 인텔 관리 엔진은 커널보다 아래 쪽이라 안티 치트는 그대로 무력화된다.[2] 펌웨어의 경우 얼마나 정교하게 만들어졌는지에 따라 수 몇 만원에서 수 백만원이나 된다.[3] Input/Output Memory Management Unit