An early time-sharing operating system developed in Edinburgh by Robin Popplestone and others. It was inspired by MIT’ Project MAC, via a “MiniMac” project which was aborted when it became obvious that Elliot Brothers Ltd. could not supply the necessary disk storage. Multipop was highly efficient in its use of machine resources to support symbolic programming, and effective – e.g. in supporting the development of the Boyer-Moore theorem prover and of Burstall and Darlington’s transformation work.
It was not good at supporting the user programs which were then the standard fare of computing, e.g. matrix inversion. This arose from the fact that while the POP-2 compiler generated good code for function call (which is a lot of what layered systems like operating systems do) it did not generate efficient code for arithmetic or store access, because there was no way to police the generation of illegal objects statically. (Hindley-Milner type checking did not exist). Indeed, since many OS features like file-access were performed by function-call (of a closure) rather than an OS call requiring a context switch, POP-2 actually gained performance.
Multipop68 was efficient primarily because the one language, POP-2 served all purposes: it was the command language for the operating system as well as being the only available programming language. Thus there was no need to swap in compilers etc. All store management was accomplished uniformly by the garbage collector, as opposed to having store management for the OS and store management for each application.
There was a substantial amount of assembly language in Multipop68. This was primarily for interrupt handling, and it is difficult to handle this without a real-time garbage-collector.
[Edited from a posting by Robin Popplestone].
[muhl-ti-pawrt, -pohrt] /ˈmʌl tɪˌpɔrt, -ˌpoʊrt/ adjective 1. Computers. having more than one port. 2. Machinery. having separate ports for injecting fuel into each cylinder of an engine.
[muhl-tip-uh-tuh nt] /mʌlˈtɪp ə tənt/ adjective 1. having power to produce or influence several effects or results.
[muhl-tee-pros-es-ing, -uh-sing or, esp. British, -proh-ses-ing, -suh-sing] /ˈmʌl tiˌprɒs ɛs ɪŋ, -ə sɪŋ or, esp. British, -ˌproʊ sɛs ɪŋ, -sə sɪŋ/ noun, Computers. 1. the simultaneous execution of two or more programs or instruction sequences by separate CPUs under integrated control. parallel processing
[muhl-tee-pros-es-ing, -uh-sing or, esp. British, -proh-ses-ing, -suh-sing] /ˈmʌl tiˌprɒs ɛs ɪŋ, -ə sɪŋ or, esp. British, -ˌproʊ sɛs ɪŋ, -sə sɪŋ/ noun, Computers. 1. the simultaneous execution of two or more programs or instruction sequences by separate CPUs under integrated control. /ˌmʌltɪˈprəʊsɛsə/ noun 1. (computing) a number of central processing units linked together to enable […]