Generated by GPT-5-mini| IPC | |
|---|---|
| Name | IPC |
| Caption | Inter-process communication schematic |
| Type | Computing concept |
| Introduced | Early 1960s |
| Developer | Multitude of contributors |
| Usage | Operating systems, distributed systems, embedded systems |
IPC
IPC is the set of methods and structures enabling data exchange and coordination between separate execution contexts such as processes, threads, or distributed agents. It underpins interaction models across operating systems, microservices, embedded controllers, and high-performance clusters, enabling synchronization, message passing, shared state, and remote procedure calls. Implementations range from kernel-mediated primitives to user-space libraries, standardized protocols, and platform-specific facilities.
IPC covers primitives that allow distinct software entities to communicate, including message queues, pipes, sockets, shared memory, signals, and remote procedure call mechanisms. Key historical and modern examples include facilities in UNIX, Windows NT, Mach (kernel), POSIX, and BSD derivatives. IPC mechanisms mediate issues such as data serialization, synchronization, deadlock avoidance, and priority inversion, and they interact with components like the CPU scheduling, virtual memory, device drivers, and filesystem subsystems.
Early IPC ideas trace to interprocess techniques in mainframe systems and research kernels such as MULTICS, CTSS, and experiments at Bell Labs in the 1960s. The evolution continued with microkernel designs exemplified by Mach (kernel), which prioritized message passing, and monolithic kernels like Linux kernel and Windows NT, which provided hybrid primitives. The rise of networked computing led to distributed IPC forms embodied in Remote Procedure Call research at Sun Microsystems and protocols like ONC RPC and DCOM. The cloud era and service meshes introduced patterns from Amazon Web Services, Google infrastructure, and Kubernetes orchestration.
IPC encompasses synchronous and asynchronous communication, categorized into channels such as: - Message passing: examples include UNIX domain sockets, TCP/IP, UDP, and message brokers like RabbitMQ, Apache Kafka, and ZeroMQ. - Shared memory: implementations in POSIX shm_open, System V IPC, and platform APIs in Windows API. - Signals and events: notification primitives seen in POSIX, Windows NT, and real-time systems like VxWorks. - Pipes and FIFOs: classic forms from UNIX shells and Plan 9. - Remote procedure calls and object remoting: models embodied by gRPC, CORBA, Thrift, and XML-RPC. - Higher-level coordination: transactional systems from ZooKeeper, consensus protocols like Paxos, and Raft for distributed state.
Standardization influences portability and interoperability. Notable standards and specifications include POSIX, which defines APIs for message queues and shared memory; IETF protocols such as TCP, UDP, and HTTP for networked IPC; and middleware standards like CORBA IDL and DDS for real-time data distribution. Enterprise and cloud ecosystems rely on specifications from OASIS and W3C where web messaging (e.g., WebSocket) and serialization formats like JSON and Protocol Buffers play central roles.
IPC surfaces attack vectors including unauthorized access, tampering, eavesdropping, and denial of service. Threat mitigations involve access controls from Linux Capabilities, Windows Access Control Lists, namespace isolation via containers managed by Docker and Kubernetes, encryption with TLS, authentication with OAuth 2.0 and mTLS, and sandboxing approaches used by Chrome renderer processes. Formal methods and auditing leverage tools from SELinux, AppArmor, and verification frameworks pioneered in projects like seL4 microkernel.
Operating systems provide native IPC primitives: Linux kernel offers pipes, sockets, epoll, and futexes; FreeBSD and OpenBSD provide kqueue and native sockets; Windows NT provides named pipes, mailslots, and IOCP. Language runtimes embed IPC abstractions: Erlang OTP actors, Go (programming language) goroutines and channels, Java RMI, and .NET remoting. Cloud and distributed platforms integrate messaging via AWS SQS, Google Cloud Pub/Sub, and orchestration through Kubernetes Services and Istio service mesh; edge and embedded systems use protocols like MQTT and CoAP.
IPC enables coordination in user applications, system services, and distributed applications: desktop compositors and window systems such as Wayland and X.Org Server use local sockets and shared memory; database engines like PostgreSQL and MySQL use shared memory and locks for worker coordination; industrial control systems rely on real-time IPC in VxWorks and QNX; telecommunication systems employ SIP signaling and media transport over RTP; big data pipelines use Apache Kafka and Apache Pulsar for high-throughput message streaming; microservices frameworks in Spring Framework and Node.js utilize HTTP, gRPC, and message brokers for service communication.