You mention VMS. Surely you've heard of lib$spawn(), not to mention the DCL command spawn, which is the natural way of creating a subprocess to do something different from the parent (as distinct from launching a detached process, which is roughly the equivalent of a nohup). The posix layer implements fork, but this is not the native VMS way of doing or thinking about things.
Digital had a lot to do with the invention of threads. PThreads are a derivative of DecThreads, and VMS was one of the platforms on which they were originally targetted. The reason for this was that there is a substantial overhead in process creation - spawns were expensive, and threads provided a convenient way of multitasking inside a process's address space.
Oh Lord, won’t you burn me a Knoppix CD ?
My friends all rate Windows, I must disagree.
Your powers of persuasion will set them all free,
So oh Lord, won’t you burn me a Knoppix CD ?
(Missquoting Janis Joplin)