
On Mon, 29 Mar 2021 09:47:36 +1300, Peter Reutemann quoted:
'Another key concept in its design is that of a per-process name space: services can be mapped on to local names fixed by convention, so that programs using those services need not change if the current services are replaced by others providing the same functionality.'
The comparison section in the Wikipedia article <https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Comparison_to_contemporary_operating_systems> points out limitations of the Plan 9 design: protocols are implemented by reading and writing files, but it seems they neglected to provide a standard introspection mechanism so you could discover the necessary data formats. Also the per-process name space means a process cannot pass a meaningful service name to another entirely separate process. Talking of name spaces, the Plan 9 “namespace” corresponds most closely in Linux to the concept of a “filesystem namespace”. In Linux, you have namepaces for many other things as well <https://man7.org/linux/man-pages/man7/namespaces.7.html>. Combinations of these lead to such interesting uses as “containers”, where entirely separate userlands are able to run under the same kernel.