Manpages

이 름

mlock − 메 모 리 의 일 정 영 역 에 대 한 페 이 징 을 금 지 시 킨 다 .

사 용 법

#include <sys/mman.h>

int mlock(const void *addr, size_t len);

설 명

mlockaddr부 터 len 바 이 트 만 큼 의 메 모 리 에 대 한 페 이 징 을 금 지 시 킨 다 . 지 정 된 메 모 리 범 위 의 일 부 를 포 함 하 는 모 든 페 이 지 들 은 mlock 시 스 템 콜 이 성 공 했 을 때 RAM에 상 주 하 는 것 이 보 장 된 다 . 그 리 고 이 페 이 지 들 은 munlock이 나 munlockall에 의 해 잠 금 이 풀 릴 때 까 지 또 는 프 로 세 스 가 종 료 할 때 까 지 또 는 exec에 의 해 다 른 프 로 그 램 이 시 작 할 때 까 지 RAM에 상 주 하 는 것 이 보 장 된 다 . fork에 의 한 자 식 프 로 세 스 는 페 이 지 잠 금 을 상 속 받 지 않 는 다 .

메 모 리 잠 금 은 주 로 두 가 지 경 우 에 응 용 된 다 : 실 시 간 알 고 리 즘 과 high-security 데 이 타 처 리 . 실 시 간 응 용 프 로 그 램 의 경 우 는 결 정 론 적 인 타 이 밍 과 스 케 줄 링 같 은 것 이 요 구 되 는 데 , 이 때 페 이 징 은 예 상 치 못 한 프 로 그 램 실 행 지 연 을 야 기 하 는 주 요 원 인 이 다 . 또 한 실 시 간 응 용 프 로 그 램 은 보 통 sched_setscheduler로 실 시 간 스 케 쥴 러 를 사 용 한 다 . 암 호 보 안 소 프 트 웨 어 는 데 이 터 로 암 호 나 보 안 키 같 은 중 요 바 이 트 를 처 리 한 다 . 페 이 징 결 과 , 이 데 이 터 가 지 속 적 인 스 왑 저 장 장 치 에 저 장 되 며 보 안 소 프 트 웨 어 가 RAM에 서 이 데 이 터 를 지 우 고 끝 난 후 에 도 오 랫 동 안 외 부 에 노 출 될 수 있 다 .

메 모 리 잠 근 은 스 택 이 아 니 다 . 즉 , mlock이 나 mlockall이 여 러 번 호 출 되 어 여 러 번 잠 겼 던 페 이 지 는 상 응 하 는 범 위 에 대 한 munlock이 나 munlockall를 단 한 번 호 출 하 여 잠 금 을 풀 수 있 다 . 여 러 위 치 나 여 러 프 로 세 스 에 의 해 잠 겨 진 페 이 지 는 적 어 도 하 나 의 위 치 나 프 로 세 스 에 의 해 잠 겨 져 있 는 한 RAM에 서 계 속 적 으 로 잠 금 이 유 지 된 다 .

mlockmunlock를 이 용 할 수 있 는 POSIX 시 스 템 에 서 _POSIX_MEMLOCK_RANGE는 <unistd.h>에 정 의 되 어 있 으 며 <limits.h>에 서 PAGESIZE는 페 이 지 당 바 이 트 수 를 가 리 킨 다 .

반 환 값

성 공 시 , mlock은 0을 리 턴 한 다 . 에 러 시 , −1이 리 턴 되 며 , errno는 적 절 한 값 으 로 설 정 된 다 . 그 리 고 해 당 프 로 세 스 의 주 소 공 간 의 잠 금 에 어 떠 한 변 화 도 일 어 나 지 않 는 다 .

에 러

ENOMEM

지 정 된 주 소 의 일 정 부 분 이 해 당 프 로 세 스 주 소 공 간 의 페 이 지 와 일 치 하 지 않 거 나 , 프 로 세 스 가 허 용 되 는 잠 금 페 이 지 의 최 대 수 를 초 과 했 다 .

EPERM

호 출 한 프 로 세 스 가 올 바 른 권 한 을 갖 고 있 지 않 다 . 단 지 루 트 프 로 세 스 에 만 페 이 지 의 잠 금 을 허 용 된 다 .

EINVAL

len이 양 수 가 아 니 다 .

호 환

POSIX.1b, SVr4. SVr4는 EAGAIN 에 러 조 건 을 추 가 적 으 로 기 술 한 다 .

관 련 항 목

munlock(2), mlockall(2), munlockall(2)

역 자

정 강 훈 <skyeyes [AT] soback.net>, 2000년 5월 20일