Developing communication system software is difficult since
it requires detailed knowledge of many concepts such as
(1)network addressing and remote service identification,
(2)creation, synchronization, and communication mechanisms for
processes and threads
(3)system call Application Programmatic Interfaces (API)s for local and remote IPC
(4)presentation layer conversion techniques.
Lack of Type�Security: Accidental misuse of descriptors would be detected at compile�time if the UNIX network IPC API enforced stronger type�checking.
Steep Learning Curve: The application�level APIs for these IPC mechanisms possess a general�purpose design that uses the same interface for each protocol suite. This results in a complex API that requires significant effort to learn and use effectively.
Non�Portability: It is often difficult to write portable code that uses OS IPC mechanisms This increases the complexity of developing and maintaining application source code.
Non�Extensibility: Another limitation with existing OS APIs is that it is difficult to specialize or generalize their functionality without writing new code and/or modifying existing application code.