2012-07-23 3 views
2

공유 프로세스가 각 프로세스마다 별도로로드되거나 하나의 공유 객체가 공유됩니까? 예를 들어, 어떤 프로그램이 libc.so를 사용한다고 가정 해 봅시다. 그런 다음이 프로그램의 두 가지 프로세스가 시작됩니다. 이 공유 객체는 메모리 영역에있는 각 프로세스에 대해 두 번로드 될 것인가 아니면 한번의 메모리에로드되고 두 프로세스의 메모리에 매핑됩니까?여러 프로세스간에 공유 객체 공유

+0

공유 객체는 이유 때문에 "공유"라고합니다. –

답변

3

공유 오브젝트는 mmap()을 통해 MAP_PRIVATE 플래그로로드됩니다. 이것은 이들이 쓰기시 복사 (copy-on-write) 맵핑이라는 것을 의미하며, 처음에는 동일한 메모리를 가리 킵니다. 그러나 일단 수정되면 수정 전에 복사되고 "공유되지 않습니다".

0

확인하십시오. thread 이론적으로 각 프로세스는 각각 자신의 주소 공간을 보유하고 스레드는 그러한 목적으로 사용되어야하지만 시스템 구현의 문제입니다.

관련 문제