kmalloc - 해당되는 글 1건

커널에서는 malloc()나 free()를 이용해 동적 메모리를 사용할 수 없다.

malloc,free와 유사하며 디바이스드라이버에서 많이 사용되며 할당 속도가 빠르다.

DMA같은 디바이스가 사용하는 연속된 물리 메모리 주소가 필요한상황
DMA는 물리 주소 밖에 모르고 그렇기 때문에 연속된 물리 주소에만 기록가능
DMA사운드 UART등에서 DMA를 사용할때 heap처럼 malloc을 사용할 수 없다.
펌웨어 단계에선 물리 메모리를 쓰듯이 써서DMA를 그냥 사용한다.
리눅스는 가상주소사용 DVICE드라이버에서 가상메모리의 연속적인 주소도
실제보면 물리적인 메모리에서 연속되지 않을 수 있기 때문에 DMA는 물리적으로 연속된
공간에서만 CPU의 간섭을 받지않고 직접쓰기 때문에 커널에서 제공하는 메모리를 할당하는
API를 사용한다.

인터럽트랑 동작할때와  동작중이지 않을때 커널에 API가 필요할수도 있고 필요하지 않을수있다.
      리눅스  |  2007. 10. 23. 09:48



sokoban's Blog is powered by Daum & Tattertools