바이너리를 실행하지 않고 메모리에 로드하는 것이 가능합니까?

바이너리를 실행하지 않고 메모리에 로드하는 것이 가능합니까?

Linux를 사용할 때마다 Google 크롬을 사용하는 것처럼(아마도) Linux를 열 때 자동으로 시작되는 것을 원하지 않습니다. 수동으로 열 수는 있는데 HDD가 있어서 처음 로딩이 귀찮아서 실제로 실행하지 않고 그냥 로딩하고 캐싱만 하면 HDD에서 RAM으로 크롬을 로딩할 수 있는 방법이 없을까 궁금합니다. RAM에.

답변1

나는 사용한다vmtouch.

vmtouch명령줄에 제공된 각 파일은 열리고 가상 메모리에 매핑됩니다 mmap(2). 매핑이 읽기 전용으로 열립니다. 모든 디렉터리를 재귀적으로 크롤링하고 그 안에 있는 모든 파일에 대해 동일한 작업을 수행합니다.

[…]

-t
가상 메모리 페이지를 터치하세요. 파일의 각 페이지에서 1바이트를 읽습니다. 페이지가 메모리에 없으면 페이지 부재가 생성되고 페이지가 디스크에서 파일 시스템의 메모리 캐시로 읽혀집니다.

참고: 각 페이지는 메모리에 배치되지만 vmtouch명령이 완료되면 페이지가 메모리에서 제거될 수 있습니다.

위의 설명에 언급된 문제를 극복하기 위해 나는 vmtouch -l(루트로) 다음을 사용합니다.

-l
페이지를 실제 메모리에 잠급니다. 이 옵션은 모든 메모리 맵을 -t호출 mlock(2)하고 완료 시 설명자를 닫지 않는다는 점을 제외하면 이와 동일하게 작동합니다 . 가져오기가 끝나면 성공하면 vmtouch무기한 차단됩니다. 파일은 vmtouch프로세스가 종료될 때까지 실제 메모리에 잠겨 있습니다 .

내 사용 사례는 상대적으로 느린 네트워크 연결을 통해 상대적으로 느린 NFS 서버에서 상대적으로 큰 미디어 파일을 선제적으로 캐싱하는 것입니다. 그것은 아주 잘 작동합니다. 그것은 당신에게 도움이 될 것입니다. 로드하려는 파일을 식별하기만 하면 됩니다. 이 질문이 유용할 수 있습니다.런타임에 어떤 동적 라이브러리 실행 파일이 로드되는지 확인하는 방법은 무엇입니까?

관련 정보