Don't forget that fork predates not just threads but virtual memory so cloning all of the volatile memory of a process was really cheap (because there was only a few K of it). Look at the source code for fork in Lyons book on the version 6 kernel and you'll see how simple it used to be.