IPC Anatomy

Inter-Process Communication Anatomy

āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (Interprocess communication - IPC) āđ€āļ›āđ‡āļ™āļāļĨāđ„āļāļŠāļģāļ„āļąāļāđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āđāļĨāļāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ‹āļķāđˆāļ‡āļāļąāļ™āđāļĨāļ°āļāļąāļ™ āđ„āļĄāđˆāļ§āđˆāļēāļˆāļ°āļ­āļĒāļđāđˆāļ āļēāļĒāđƒāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļŦāļĢāļ·āļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ­āļēāļˆāļˆāļ°āļ­āļĒāļđāđˆāļ•āđˆāļēāļ‡āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļ•āđˆāļ–āļđāļāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļœāđˆāļēāļ™āļĢāļ°āļšāļšāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļŠāđˆāļ™ āļāļēāļĢāđ€āļĢāļĩāļĒāļāļ„āļģāļŠāļąāđˆāļ‡āļœāđˆāļēāļ™āđ€āļŠāļĨāļĨāđŒāđ‚āļ”āļĒāļœāļĨāļĨāļąāļžāļ˜āđŒāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĢāļāļˆāļ°āļŠāđˆāļ‡āđ„āļ›āđ€āļ›āđ‡āļ™āļ­āļīāļ™āļžāļļāļ—āđƒāļŦāđ‰āļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠāļ–āļąāļ”āđ„āļ› āļ”āđ‰āļ§āļĒāļāļēāļĢāđƒāļŠāđ‰āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒ "|" (Pipe)

$ ls -al | grep "source"
drwxr-xr-x 24 root root     4096 2013-09-25 04:51 linux-source-2.6.32

āļ‹āļķāđˆāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ—āđˆāļ­āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ (link) āļ™āļąāđ‰āļ™āļˆāļ°āļĄāļĩāļ”āđ‰āļ§āļĒāļāļąāļšāļŠāļ­āļ‡āļĢāļđāļ›āđāļšāļšāļ„āļ·āļ­āđāļšāļšāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§āđāļĨāļ°āđāļšāļšāļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡ āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ—āđˆāļ­āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļąāļ™āđāļĨāđ‰āļ§āđ‚āļ›āļĢāđ€āļ‹āļŠāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĢāļ·āļ­āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ (message) āļ–āļķāļ‡āļāļąāļ™āđ„āļ”āđ‰āļĄāļēāļāđ€āļžāļĩāļĒāļ‡āđƒāļ”āļāđ‡āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļ„āļ§āļēāļĄāļˆāļļāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ§āđˆāļēāļĄāļĩāđ€āļ—āđˆāļēāđ„āļŦāļĢāđˆ āđāļĨāļ°āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒ

āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļāļąāļšāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ›āļĢāļ°āđ€āļ āļ—āļāļēāļĢāļāļĨāđ„āļāļŠāļ·āđˆāļ­āļŠāļēāļĢ IPC

āļˆāļēāļāļ•āļēāļĢāļēāļ‡āļ‚āđ‰āļēāļ‡āļĨāđˆāļēāļ‡āđāļŠāļ”āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āđāļšāļšāļ•āđˆāļēāļ‡āđ† āđāļĨāļ°āļ—āļĩāđˆāļ–āļđāļāļĢāļ­āļ‡āļĢāļąāļšāļŠāļģāļŦāļĢāļąāļšāđāļ•āđˆāļĨāļ°āļĄāļēāļ•āļĢāļēāļāļēāļ™āđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ UNIX/LINUX

āļ•āļēāļĢāļēāļ‡āđāļŠāļ”āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđƒāļ™āđāļšāļšāļ•āđˆāļēāļ‡āđ†āļ‚āļ­āļ‡ IPC

āļŠāļ™āļīāļ”āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ
āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒ
āļĢāļ­āļ‡āļĢāļąāļšāļĢāļ°āļšāļš

āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āļŠāļąāļāļāļēāļ“āļ‚āļ­āļ‡āļĢāļ°āļšāļšāđƒāļ™āļĢāļ°āļ”āļąāļšāļĨāđˆāļēāļ‡āđ„āļ›āļ‚āļąāļ”āļˆāļąāļ‡āļŦāļ§āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āđ€āļžāļ·āđˆāļ­āļšāļ­āļāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļģāļ•āļēāļĄāļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļ‚āļ­āļ‡āļŠāļąāļāļāļēāļ“āļ™āļąāđ‰āļ™āđ† āļŦāļĢāļ·āļ­āļ­āļēāļˆāļˆāļ°āđƒāļŠāđ‰āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āļŠāļąāļāļāļēāļ“āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ”āđ‰āļ§āļĒāļāļąāļ™

POSIX, System V, BSD

āļŠāļ•āļĢāļĩāļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļžāļĢāđ€āļ‹āļŠāļŠāļ™āļīāļ”āļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļŦāļĢāļ·āļ­ half duplex

POSIX, System V, BSD

āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļœāđˆāļēāļ™āđ„āļŸāļĨāđŒāļšāļ™āļĢāļ°āļšāļšāđ„āļŸāļĨāđŒāđāļ—āļ™āļĄāļēāļ•āļĢāļāļēāļ™ input āđāļĨāļ° output

POSIX, System V, BSD

āļŠāļ•āļĢāļĩāļĄāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđ„āļĄāđˆāļĢāļ°āļšāļļāļ„āļĨāđ‰āļēāļĒāļāļąāļšāđ„āļ›āļ›āđŒ āđāļ•āđˆāđ€āļāđ‡āļšāđāļĨāļ°āđ€āļĢāļĩāļĒāļāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđƒāļ™ āđāļžāđ‡āļāđ€āļāļˆ

POSIX, System V

Locks, Mutexes, and Condition Variables

āđ€āļ—āļ„āļ™āļīāļ„āļ—āļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āđ„āļĄāđˆāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĒāđˆāļ‡āļāļąāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āđƒāļŠāđ‰āļ—āļĢāļąāļžāļĒāļēāļāļĢāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļžāļĢāđ‰āļ­āļĄāļāļąāļ™

POSIX, IRIX

āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļĄāļēāļ•āļĢāļāļēāļ™āļ—āļĩāđˆāļ›āļĢāļ°āļŠāļēāļ™ thread āļŦāļĢāļ·āļ­āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļĩāđˆāļāļĢāļ°āļ—āļģāļāļąāļšāļ—āļĢāļąāļžāļĒāļēāļāļĢāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™

POSIX, IRIX, System V

āđ€āļ›āđ‡āļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ›āđ„āļ§āđ‰āđƒāļ™āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļ—āļĩāđˆāđāļŠāļĢāđŒāđƒāļŦāđ‰āļāļąāļš āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ†āđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āđ„āļ”āđ‰

POSIX, IRIX, System V

āđāļĄāļžāđ„āļŸāļĨāđŒāđ„āļ›āļĒāļąāļ‡ RAM āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āđāļāđ‰āđ„āļ‚āđ„āļ”āđ‰āđ‚āļ”āļĒāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļ—āļĩāđˆāļ­āļĒāļđāđˆāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāđ‚āļ”āļĒāļ•āļĢāļ‡

POSIX, IRIX, System V

āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ›āļĒāļąāļ‡āđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāđ€āļ™āđ‡āļ—āđ€āļ§āļīāļĢāđŒāļ„āļšāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđ€āļ”āļĩāļĒāļ§āļāļąāļ™āļŦāļĢāļ·āļ­āđ„āļ›āļĒāļąāļ‡āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļ­āļ·āđˆāļ™

BSD

āļāļēāļĢāļĢāļ­āļ‡āļĢāļąāļšāđāļ•āđˆāļĨāļ°āļĢāļđāļ›āļ‚āļ­āļ‡āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ IPC āļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļĄāļēāļ•āļĢāļēāļāļēāļ™āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāļļāļ›āđ„āļ”āđ‰āļ”āļąāļ‡āļ™āļĩāđ‰

  • āļĄāļēāļ•āļĢāļēāļāļēāļ™ POSIX āļˆāļ°āļĄāļĩ system calls āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļąāļāļāļēāļ“ (signal), shared memory, semaphores, mutexes, condition variables, āđāļĨāļ° message queues

  • āļĄāļēāļ•āļĢāļēāļāļēāļ™ IRIX āļˆāļ°āļĄāļĩ library calls āļĢāļ­āļ‡āļĢāļąāļšāļŠāļģāļŦāļĢāļąāļš shared memory, semaphores, locks, āđāļĨāļ° barriers āđ‚āļ”āļĒ IRIX āļˆāļ°āļĄāļĩāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļĄāļēāļāļāļ§āđˆāļē POSIX āđāļ•āđˆāđƒāļ™āļšāļēāļ‡āļāļĢāļ“āļĩāļˆāļ°āđ„āļ”āđ‰āđ€āļ›āļĢāļĩāļĒāļšāļāļ§āđˆāļē POSIX āđƒāļ™āļāļĢāļ“āļĩāļ—āļĩāđˆāđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđāļšāļš multiprocessors āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļĒāļąāļ‡āļĄāļĩāļŸāļąāļ‡āļāđŒāļŠāļąāļ™ poll() āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļ™āļģāđ„āļ›āđƒāļŠāđ‰āļāļąāļš semaphores

  • āļĄāļēāļ•āļĢāļēāļāļēāļ™ AT&T System V (system five) Release 4 āļˆāļ°āļĄāļĩ system calls āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļąāļāļāļēāļ“ (signal), shared memory, semaphores, message queues, āđāļĨāļ° file locking āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļēāļāļēāļ™āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļāļąāļšāļāļēāļĢāļ™āļģāđ„āļ›āđƒāļŠāđ‰āđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļˆāļ°āļ–āļđāļāļ™āļģāđ„āļ›āļ—āļģāļ‡āļēāļ™āļ­āļĒāļđāđˆāļšāļ™āđāļ•āđˆāļĨāļ°āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄ (porting software) āđāļ•āđˆāļ­āļĒāđˆāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄāļ­āļēāļˆāļˆāļ°āđ„āļĄāđˆāđ„āļ”āđ‰āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđ€āļ•āđ‡āļĄāļ—āļĩāđˆ

  • āļĄāļēāļ•āļĢāļēāļāļēāļ™ BSD UNIX āļˆāļ°āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļąāļāļāļēāļ“ (signal), file locking, āđāļĨāļ° socket

āđ‚āļ”āļĒāļ•āļąāļ§āļĄāļēāļ•āļĢāļēāļāļēāļ™ POSIX āļ™āļąāđ‰āļ™āļ–āļ·āļ­āļ§āđˆāļēāđ€āļ›āđ‡āļ™āļ•āļąāļ§āļĨāđˆāļēāļŠāļļāļ” āļ‹āļķāđˆāļ‡āļ–āđ‰āļēāļžāļīāļˆāļēāļĢāļ“āļēāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ system calls āđƒāļ™āļ āļēāļžāļĢāļ§āļĄāļ•āļąāļ§ POSIX āļˆāļ°āđ€āļŦāļĄāļēāļ°āļŠāļĄāđāļĨāļ°āđ„āļ”āđ‰āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ” āļ™āļ­āļāļˆāļēāļāļ™āļąāđ‰āļ™āļ–āđ‰āļēāļˆāļ°āđƒāļŠāđ‰āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āđƒāļ™āļĄāļēāļ•āļĢāļēāļāļēāļ™āļ‚āļ­āļ‡ System V āļāđ‡āļˆāļ°āđ€āļŦāļĄāļēāļ°āļāļąāļšāļŦāļ™āđˆāļ§āļĒāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ MIPS āļ—āļĩāđˆāđƒāļŠāđ‰āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ āļēāļĒāđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđāļšāļš ABI (Application Binary Interface) āļĢāļ§āļĄāļ—āļąāđ‰āļ‡āļāļēāļĢāļ™āļģāđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ›āļ—āļģāļ‡āļēāļ™āļšāļ™āđāļžāļĨāļ•āļŸāļ­āļĢāđŒāļĄāļ­āļ·āđˆāļ™āđ†āļ—āļĩāđˆāđƒāļŠāđ‰āļĄāļēāļ•āļĢāļēāļāļēāļ™ System V āđ€āļŠāđˆāļ™āđ€āļ”āļĩāļĒāļ§āļāļąāļ™

Last updated

Was this helpful?