malloc() 함수 호출 시 호출되는 공간 (커널영역 or 프로세스 영역 or 그외 빈공간)
글쓴이: jwpark0921 / 작성시간: 월, 2013/04/29 - 10:16오전
C 함수에서 malloc()을 호출하게 되면 요구하는 특정 공간만큼의 메모리를 할당하는 것으로 알고 있습니다.
이 때에 할당되는 공간이 사실상 커널 함수에서 사용되는 힙 영역인지, 프로세스 주소 공간 상의 힙 영역인지, 아니면 사용되지 않는 영역인지를 알고 싶습니다.
다시 말씀드리면 malloc() 수행 시 실제적으로 kmalloc()을 호출하는 것인지, vmalloc()을 호출하는지에 대하여 궁금합니다.
Forums:
...
kmalloc과 vmalloc이 뭔가 하고 찾아보니 linux kernel에서 사용하는 함수인 것 같은데, 커널에서 사용하는 주소와 유저 프로세스에서 사용하는 주소는 아예 개념이 다릅니다.
malloc은 사용자 프로세스에서 쓰이는 라이브러리 함수이므로, 당연히 커널 내부 함수인 kmalloc이나 vmalloc을 부를 수 없습니다. System call을 불러야 한다면 아마도 brk/sbrk나 mmap을 부르게 됩니다. (일반적인 malloc의 경우에는 그런 걸로 알고 있습니다.)
malloc()
제가 알기론 이렇습니다.
malloc은 시스템콜을 사용할수 밖에 없지요. (왜냐면 운영체제로 부터 자원을 받아야하니까요. 리소스 얼로케이터가 OS잖아요?)
brk()인가 mmap()가 부를텐데 brk()일겁니다.
그리고 어느영역인가를 물으셨는데 해당 프로세스의 메모리에 heap영역입니다.
---------------------------------------------------------------------------------
C(++)과 php 펄등을 공부하고있습니다.
반갑습니다! 리눅스 :-)
댓글 달기