memory lock Linux/C/C++ 2012. 7. 16. 10:31

int mlock (const void *addr, size_t  len)

int mlockall (int flags)

int munlock(const void *addr, size_t len) 페이지 잠금 호출은 스택되지 않기 때문에 한번 같은 메모리 주소에 대해 여러 번 잠금 호출되었다고 하더라도 잠금을 해제할 때는 한번만 해주면 됨, 잠금 해제하는 메모리 범위에 포함된 모든 페이지들은 같이 잠금이 해제됨

int munlockall (void)


* 페이지 잠금은 fork에 의해 상속 받지 않는다


페이지 잠금 호출 :

int mlock (const void *addr, size_t  len)

int mlockall (int flags)


해제 호출 :

int munloock(const void *addr, size_t len)

int munlockall (void)


int mlock (const void *addr, size_t  len)

지정 된 메모리 주소 addr로 부터 len 길이만큼 페이징 금지

int mlockall (int flags)

해당 프로세스의 모든 메모리의 페이징을 금지하고, flag에 두 개의 지정 가능한 이수를 가짐

- MCL_CURRENT 현재 상태에서의 프로세스에 대응된 모든 페이지를 잠근다.

- MCL_FUTURE 앞으로 발생하는 모든 대응된 페이지를 잠근다. ( 새로운 메모리맵, 공유 메모리, 힙, 스택 모두에 대해서 적용된다 )