On the Duality of Operating System Structures This 1978 paper from Xerox PARC argues that Operating Systems design has taken two paths up to this point, that of the message-oriented system and that of the procedure-oriented system. The paper claims that these two different paradigms are duals, and that they are logically identical. The paper goes on to empirically examine existing message-oriented and procedure-oriented systems and it then derives a canonical, idealized model for each type of system. For message-passing systems, it notices that the process structure and hierarchy of the system is fairly fixed. You have a number of long-term processes communicating through existing channels, passing messages. You have a synchronized mailboxes that are processes in sequential order. Meanwhile, in a procedure-based system, you have lots of ephemeral processes that are quick and dirty to create. Processes have access to everything, and there is an emphasis on locking to protect shared data. Where in message-passing relative state seemed more important, in process-based systems, globally-scoped data structures are the norm. From these two sets of data, the authors derived idealized models of both systems. In message-passing, you have a uniquely-identifiable message with a header and some variable data portion. These messages are transmitted via some communication medium and may be subject to queueing. Processes are constructed around inter-process communication. In procedure-based systems, everything is much more modularized and self-contained, with the ability to access any global state (with appropriate consistency protection mechanisms in place). Processes are created and then waited upon. Where message-based systems can be think of as locally distributed, procedure-based systems are instead localized, modular code that gathers the resources it needs and then does everything for itself. The coolest part about the paper was the argument that these systems are essentially logically equivalent, and are perhaps even easily transformed from one into the other. As people had spent decades designing and arguing about the design and implementation of operating systems, this paper unifies those two tracks of thought and says "It's alright -- you're both doing ok, and you're not that different." If considered in modern times, the authors might argue that there is no point in arguing about the difference between the MacOS and Windows, up to a constant factor of crashes.