리눅스 네임 스페이스는 pid, 마운트 포인트, 네트워크 등을 분리 할 수 있습니다. 나는 Linux 네임 스페이스를 사용하여 OS 레벨의 가상 머신 (가상 서버 및 LXC)을 구현하지만, 종종 메모리가 부족합니다. 서로 다른 네임 스페이스에 두 개의 프로세스가 있고 동일한 공유 라이브러리를 사용하는 경우 라이브러리가 실제 메모리에 한 두 번로드 될 것인가라는 질문이 있습니다. 게다가, 프로세스 간의 라이브러리 공유의 밑에있는 메커니즘은 무엇입니까? IPC와 같은가요?다른 리눅스 네임 스페이스의 공유 라이브러리 사용
1
A
답변
1
모두가 동일한 파일에 액세스하는 경우 메모리를 공유해야합니다. 메커니즘은 매우 간단합니다. 각 프로세스는 공유 객체를 열고 mmap(2)
입니다. mmap()
은 프로세스의 주소 공간에서 사용 가능한 파일에 대한 VFS 페이지 캐시를 만들기 때문에 동일한 파일을 여러 파일에 동일한 페이지로 가져 오는 경우.
당신은 파일 시스템이 여러 번 장착이 그래서 단 하나 개의 복사본이 있어야 — 여러 마운트는 VFS 층 —에서 처리하는 하나 개의 파일 시스템 인스턴스있다 (이것은 여러 네임 스페이스의 마운트 및 마운트 할을 결합하는 것입니다) 캐시의 각 파일
공유 라이브러리는 메모리 부족을 일으킬 가능성이 거의 없습니다. 그것들은 디스크에있는 파일의 읽기 전용 캐시이기 때문에 커널은 메모리가 부족해지면 프로그램을 호출 (예 : 함수를 호출하거나 라이브러리의 메모리에 액세스) 할 때마다 디스크를 읽게합니다.
관련 문제
- 1. 다른 네임 스페이스의 변수 액세스
- 2. 다른 네임 스페이스의 부분 렌더링
- 3. 한 네임 스페이스가 다른 네임 스페이스의 클래스를 찾을 수 없습니다.
- 4. 네임 스페이스의 특수 문자
- 5. XAML에서 다른 네임 스페이스의 메서드를 호출하는 방법
- 6. XSD 스키마에서 다른 네임 스페이스의 특성 필요
- 7. 다른 네임 스페이스의 클래스간에 강제 캐스팅
- 8. 다른 네임 스페이스의 열거 형 액세스
- 9. 다른 네임 스페이스의 사용법을 거의 정의하지 않아도됩니까?
- 10. 다른 네임 스페이스의 함수를 어떻게 호출합니까?
- 11. rails 캐싱 : 다른 네임 스페이스의 expire_action
- 12. 네임 스페이스의 xmlns
- 13. 네임 스페이스의 이상한 동작
- 14. 가져온 네임 스페이스의 별칭
- 15. System.Windows.Automation 네임 스페이스의 문제점
- 16. 네임 스페이스의 클래스와 구조체
- 17. Javascript가있는 네임 스페이스의 엄격 모드
- 18. 다른 .net 네임 스페이스의 클래스를 내 네임 스페이스의 클래스로 표시 할 수 있습니까?
- 19. 네임 스페이스의 이름은 어떻게 생겼습니까?
- 20. 네임 스페이스의 외부/내부로로드가로드되는 경우로드하십시오.
- 21. XML 네임 스페이스의 사용법이 맞습니까?
- 22. 레일 로케일 네임 스페이스의 차이점
- 23. Rails 3.1 다른 네임 스페이스의 컨트롤러 메소드 스위프
- 24. halo와 mx 네임 스페이스의 차이점
- 25. 네임 스페이스의 클래스 충돌 - 제안
- 26. 카피스트라 네임 스페이스의 목적은 무엇입니까?
- 27. PHP 네임 스페이스의 글로벌 키워드는
- 28. Clojure 네임 스페이스의 java.lang. * 제외
- 29. 시스템 네임 스페이스의 클래스 바꾸기
- 30. 익명 네임 스페이스의 정적 구조체