내가 읽고있다도커 작동 중이런 문장도 있습니다.
Docker는 기본적으로 각 컨테이너에 대해 고유한 IPC 네임스페이스를 생성합니다. Linux IPC 네임스페이스는 명명된 공유 메모리 블록, 세마포어 및 메시지 대기열과 같은 공유 메모리 기본 요소를 분할합니다.
이러한 예에도 불구하고 나는 여전히 그 뒤에 있는 개념이 무엇인지 이해하지 못합니다.메모리 프리미티브, 이 용어를 설명해 주실 수 있나요?
답변1
사람 네임스페이스에 관한 섹션이 있습니다.IPC 네임스페이스.
IPC 네임스페이스는 특정 IPC 리소스, 즉 System V IPC 개체를 격리합니다(참조:슈퍼멤버(7)) 및 (Linux 2.6.30부터) POSIX 메시지 대기열(참조:mq_개요(7)). 이러한 IPC 메커니즘의 일반적인 특징은 IPC 객체가 파일 시스템 경로 이름 이외의 메커니즘으로 식별된다는 것입니다.
man svipc
세 가지 유형의 객체가 있다고 가정해 보겠습니다. 공유 메모리 객체, 메시지 큐, 세마포어 세트(세마포어는 세마포어의 보다 일반적인 경우입니다)뮤텍스). 각 개체에는 파일 시스템 경로가 아닌 숫자 ID가 있습니다.
POSIX 메시지 대기열은 파일 이름과 유사한 이름으로 식별됩니다. (Linux 구현에서는 를 통해 액세스되는 가상 파일을 사용합니다 /dev/mqueue/
).
System V IPC는 더 이상 사용되지 않으며 사용하기 어려운 것으로 간주되어야 합니다.
- System V 공유 메모리 개체는 POSIX SHM으로 대체될 수 있습니다.남자 shm_개요.
- 시스템 V 세마포어는 다음을 사용하여 대체될 수 있습니다.POSIX 공유 메모리의 POSIX 뮤텍스.
- 짐작하셨겠지만, System V 메시지 대기열은 POSIX 메시지 대기열로 대체될 수 있습니다.
Linux IPC 네임스페이스는 다음을 수행합니다.아니요POSIX SHM을 분리합니다. Linux는 가상 파일 시스템 /dev/shm/
을 통해 액세스 개체를 구현합니다 tmpfs
. POSIX SHM을 분리하려면 마운트 네임스페이스를 사용하여 마운트된 파일 시스템을 변경할 수 있습니다 /dev/shm/
.
답변2
기계 문제는 프로세스 제어, 신호 관리, 파이프 및 공유 메모리에 기본 요소를 사용합니다. Unix의 기본 요소는 다음과 같습니다.
• Process Control
fork:
exec:
• Signal Management
sigset:
kill:
• Pipes and Files
pipe:
mknod:
unlink:
read/write:
• Shared Memory
shmget:
shmat:
• Semaphores (System V style)
semget:
semop:
• ipcs: This command reports on the status of inter-process communication facilities. Allows you to monitor the correct use and operation of the interprocess communication primitives in your program.
• ipcrm: Remove a message queue, semaphore set, or shared memory ID. This comes in handy if your program does not clean up things correctly.
• kill: Terminate or signal a process. Comes in handy to clean up your processes.
• ps: Report on process status. This at least lists all your processes.