존재하다맨페이지top
,
"커널에 의해 공유(SHR)로 처리"된다면 #3의 "프로그램 이미지 및 공유 라이브러리"가 "프로세스 비공개로 간주"되는 이유는 무엇입니까?
"프로그램 이미지 및 공유 라이브러리" "프로세스 비공개"는 어떤 의미에서 "비공개"로 간주됩니까? "프로그램 이미지 및 공유 라이브러리"는 읽기 전용입니까?
"프로그램 이미지 및 공유 라이브러리"는 "커널에서 공유(SHR)로 간주"된다는 의미에서 "공유"됩니까?
"스왑 파일에는 #1부터 #3까지만 포함됩니다. 수정 시 사분면 #4의 메모리는 자체 개인 스왑 파일로 작동합니다." "프로그램 이미지 및 공유 라이브러리"도 자체 개인 스왑 파일로 작동합니까?
감사해요.
이러한 각 프로세스에 대해 각 메모리 페이지는 아래 표의 사분면으로 제한됩니다. 물리적 메모리와 가상
메모리 모두 이 네 가지 유형의 메모리 중 하나를 포함할 수 있습니다.스왑 파일에는 #1부터 #3까지만 포함됩니다. 수정 시 사분면 #4의 메모리는 자체 개인 스왑 파일로 작동합니다.Private | Shared 1 | 2 Anonymous . stack | . malloc() | . brk()/sbrk() | . POSIX shm* . mmap(PRIVATE, ANON) | . mmap(SHARED, ANON) -----------------------+---------------------- . mmap(PRIVATE, fd) | . mmap(SHARED, fd) File-backed . pgms/shared libs | 3 | 4
다음은 확장 가능한 열로 표시되는 프로세스 수준 메모리 값을 해석하는 데 도움이 될 수 있으며 "3a. 필드 설명" 항목에서 설명합니다.
SHR - subset of RES (excludes 1, includes all 2 & 4, some 3)
노트:프로그램 이미지와 공유 라이브러리는 프로세스 전용으로 간주되지만 커널에서는 여전히 공유(SHR)로 간주됩니다.
답변1
다이어그램은 실행 중인 프로세스의 관점에서 개인용과 공유를 구별합니다. 왼쪽에 표시된 페이지는 커널에서 공유할 수 있지만(즉메모리 또는 백업 저장소의 동일한 물리적 위치에 매핑됨) 오른쪽에 표시된 페이지는 잠재적으로 여러 프로세스에 의해 공유되며 엄격한 개인 정보 보호 기대치가 없습니다.
따라서 프로그램 이미지와 공유 라이브러리는 메모리에서 변경된 사항이 변경을 수행하는 프로세스에만 표시된다는 점에서 비공개입니다. 실행 파일과 라이브러리에서 매핑된 대부분의 페이지는 쓰기가 불가능하지만 반드시 그럴 필요는 없습니다.
커널의 관점에서 보면 공유된 물리적 영역에 매핑되기 때문에 동시에 공유됩니다. (필요한 경우 공유를 공유 해제할 수 있도록 쓰기 중 복사를 사용하십시오.) 공유는 커널 수준의 세부 사항이며 프로세스에 보이지 않습니다.
Swap은 더티 페이지의 백업 저장소입니다.즉로드 이후 변경된 메모리입니다. 더티가 아닌 페이지는 교체할 필요가 없습니다. 소스(일반적으로 메모리 매핑된 파일)는 백업 저장소이며, 메모리 부족으로 인해 실제 메모리에서 제거해야 하는 경우 간단히 삭제할 수 있습니다. 물리적 메모리에서 공유되지 않은 더티 페이지를 제거하려면 일종의 백업 저장소가 필요합니다. 대부분의 경우 이는 스왑이지만 파일 지원 공유 메모리에는 이를 백업하는 파일이라는 또 다른 자연적인 백업 저장소가 있습니다. 실제 메모리에서 제거해야 하는 파일 백업 공유 메모리 페이지는 스왑 작업 없이 백업 파일에 기록되고 삭제될 수 있습니다.