Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 클라우드 자원 관리자
- 수평적 확장
- 정수형 데이터타입
- 자원 풀링
- DHCP 설치
- Virtual Private Cloud
- 가상 프라이빗 클라우드
- 클라우드 보안 취약성
- Error 1720
- 수직적 확장
- 클라우드 제공자
- 온 프레미스
- DHCP 설정
- VMWare vSphere
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 멀티테넌시
- VMWare View Connection Serve
- 운영관리제어의 축소
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- 온디맨드식
- View Connection
- 제한된 이식성
- VMware
- 커뮤니티 클라우드
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 클라우드 서비스 소유자
- Community Cloud
- 클라우드 소비자
- IT 자원
- dhcp
Archives
- Today
- Total
한 걸음씩..
Linux Driver 메모리 할당 - kmalloc / kfree 본문
반응형
할당 속도가 빠르고 사용법이 간단해 디바이스 드라이버에서 가장 많이 사용된다.
char *buff;
if( buff != NULL ) { kfree( buff ); } else { printk( "kmalloc error\n ); }
사용법은 malloc(), free()함수와 유사하다.
kmalloc()함수를 사용할 때는 할당 가능한 크기가 32xPAGE_SIZE라는 점에 주의해야 한다.
대부분의 시스템에서 PAGE_SIZE의 크기는 4096이므로 131072Byte 이상은 메모리를 할 당할 수 없다.
malloc()함수와 다른점은 메모리 할 당시점에 처리 방식을 매개변수 값으로 준다.
GFP_KERNEL : 동적 메모리 할당이 항상 성공하도록 요구
#include <linux/slab.h>
buff = kmalloc(1024, GFP_KERNEL);
GFP_ATOMIC : 커널에 할당 가능한 메모리가 있으면 무조건 할당, 없으면 즉시 NULL반환
프로세스가 잠드는 경우는 없지만 할당에 실패할 경우를 대비해 예외처리 필수
GFP_DMA : 연속된 물리 메모리를 할당받을 때 사용
디바이스 드라이버가 동작하는 메모리 공간은 물리적인 메모리가 아닌 가상 주소 메모리.
할당된 메모리를 프로세스 입장에서 보면 가장 주소 공간이 연속적으로 보여도 실제 물리적 공간은 분할되어 있을 수 있다.
그런데 이렇게 물리적 공간이 여러 곳으로 나뉘어 있으면 DMA컨트롤러에서는 사용할 수 없다 이럴때 사용.
반응형
'프로그래밍' 카테고리의 다른 글
PCI Driver - IRP_MN_START_DEVICE 에서 주의 할 점 (0) | 2013.07.20 |
---|---|
Keyboard Memory Dump 발생시키기 (0) | 2013.07.19 |
드라이버에서 프로세스 검색 (0) | 2013.07.17 |
[VxWorks] Critical Section 구현 (0) | 2013.07.15 |
EUC-KR 과 KSC5601 의 차이점 (0) | 2013.07.15 |