mlock() 함수를 이용하면, 프로세스의 메모리 영역의 일부를 페이징되지 못하도록 할 수 있습니다. 즉, 실제 메모리에 상주하게 되는 것이죠. 말씀하신 것처럼 메모리 공간을 지속적으로 할당해 줄 수 있습니다. mlockall() 함수를 이용하면 프로세스의 모든 메모리 영역을 페이징 방지하는 것도 가능합니다.
그렇지만 QoS라는 것이 단지 메모리의 페이징을 막는 것만으로 가능하지는 않을 듯 합니다만... 하드웨어나 실시간 OS의 제대로된 지원 없이 가능할까요?
다만, 위 방법을 사용하면 주어진 상황에서의 QoS는 최대로 이용할 수 있겠죠..
원하시는 답인지는 모르겠지만,mlock() 함수를 이용하면, 프로
원하시는 답인지는 모르겠지만,
mlock() 함수를 이용하면, 프로세스의 메모리 영역의 일부를 페이징되지 못하도록 할 수 있습니다. 즉, 실제 메모리에 상주하게 되는 것이죠. 말씀하신 것처럼 메모리 공간을 지속적으로 할당해 줄 수 있습니다. mlockall() 함수를 이용하면 프로세스의 모든 메모리 영역을 페이징 방지하는 것도 가능합니다.
그렇지만 QoS라는 것이 단지 메모리의 페이징을 막는 것만으로 가능하지는 않을 듯 합니다만... 하드웨어나 실시간 OS의 제대로된 지원 없이 가능할까요?
다만, 위 방법을 사용하면 주어진 상황에서의 QoS는 최대로 이용할 수 있겠죠..
답변고맙습니다. :D 여기서 말씀드린 QoS는 메모리 부분만 특별히
답변고맙습니다. :D
여기서 말씀드린 QoS는 메모리 부분만 특별히 말하는 것이었습니다.
만약 mlockall을 사용하는 프로세스가 두개일 때 합쳐서 요구하는 메모리 크기가 실제 물리적 메모리 보다 크면 어떻게 될지 궁금하군요.. :D
혹시 프로그램 소스코드를 고치지 않고, commmand line에서 현재 실행중인 프로세스의 메모리 사용을 통제하는 방법은 없나요?
ulimit 명령을 사용하면 upper limit는 제어가 가능합니다만,
ulimit 명령을 사용하면 upper limit는 제어가 가능합니다만, lower limit를 제어하는 방법은 모르겠습니다.
ulimit에 대해서는 다음을 참고하세요.
http://bbs.kldp.org/viewtopic.php?t=20460
댓글 달기