Multics implemented a single-level store for data access, discarding the clear distinction between files (called segments in Multics) and process memory.
Thus, to interact with an application running in part as a daemon (in another process), a user's process simply performed a normal procedure-call instruction to a code segment to which it had dynamically linked (a code segment that implemented some operation associated with the daemon).