1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
+++
title = "History of Unix part I: Multics"
author = ["Michał Sapka"]
date = 2024-03-09T21:03:00+01:00
categories = ["unix-history"]
draft = false
weight = 2002
image_dir = "unix-history"
image_max_width = 480
abstract = "Unix history starts with Multics"
shortname = "Part I: Multics"
link = "part-ii-multics"
aliases = ["/bsd/history/01_multics/"]
primary_menu = "unix-history"
[menu]
[menu.unix-history]
weight = 2002
identifier = "history-of-unix-part-i-multics"
name = "1. Multics"
+++
## Origins of time-sharing {#origins-of-time-sharing}
Let's start our journey back when dinosaurs roamed the earth, engineers wore ties, and Barbie was first gaining popularity - the 60s.
Nowadays, we have grown accustom to companies selling devices at lower profit margins - with most profit coming from software subscriptions.
But 70 years ago it was the complete opposite.
Companies bought expensive computers, huge machines, and what was running on them was of lesser value.
And I really mean _expensive_.
An IBM System/360 Model 20, presented in 1964, could have been bought starting from USD 62,710 (USD 622,626 adjusted for inflation) or rented for USD 1280 (USD 12,708 adjusted)[^fn:1].
Sellers earned a lot from the devices.
But, naturally, companies making all those investments wanted a nice return.
This led to the creation of _time-sharing_.
{{< image class="centered" alt="Photo of old computer room full of tape drives. The primary color is red." source="https://www.nbcnews.com/tech/gadgets/5-reasons-love-mad-mens-new-star-ibm-360-n101716" file="ibm-360.jpg" >}}
Fig. 1.1. IBM 360 in an official photoshoot.
{{< /image >}}
This concept seems natural now: multiple processes were able to share computer resources, so multiple applications could run at the same time.
Applications could even run for different users.
Ergo, time-sharing allowed for multi-user multitask processing.
This is in stark contrast to batch-processing, where only a single program would be able to compute at any particular time.
An example of such processing would be EDSAC, the first electronic computer[^fn:2].
I won't go into detail of time-sharing, but you can read more in "Time sharing in large computers", C. Strachey, 1959.
But what is important here is how it was used.
All computation happened on a single, large server.
End users would use _computer terminals_ which were _multiplexed_ into that server, called a _mainframe_.
What is multiplexing you ask?
Simply said, it's a way to combine different signals into a shared medium.
It was used extensively for land-line telephony, where all signals were transferred over shared wires.
{{< image class="centered" alt="Black and white photo of a group of man standing next to a mechanical computer" source="https://www.datacenterdynamics.com/en/analysis/rebuilding-edsac-the-first-real-computer/" file="edsac.jpg" >}}
Fig. 1.2. EDSAC, the "first computer".
{{< /image >}}
## Multics {#multics}
Let's jump to 1969.
_Multics (MULTiplexed Information and Computing)_ was an early time-sharing operating system developed by _MIT_, _General Electrics_ and _Bell Labs_.
It pioneered many of innovations which are still widely used in the computing systems of today: hierarchical file system, redirection as interprocess communication, or the existence of a shell[^fn:3], as well as memory pages, memory protection, or the ability for a single machine to use multiple CPUs and memory[^fn:4].
It was however also huge, both in terms of memory usage (the resident kernel could occupy a huge part of memory leaving not enough for applications) and code size (it consisted of about 1,5k source modules)[^fn:3].
_Multics_ was experimental and therefore ambitious, complex - designed by trial and error.
It was delivered late, early on had performance problems, and in 1969 _Bell Labs_ withrew from the project[^fn:5].
{{< image class="centered" alt="Screenshot of SSH connection with big Multics written in ASCII" source="https://en.wikipedia.org/wiki/Multics#/media/File:Multics-Login.png" file="multics-login.png" >}}
Fig. 1.3. Multics login screen.
{{< /image >}}
{{< image class="centered" alt="Photo of two white, bearded men. They are both wearing thick glasses. The person on the left is wearing gray-blue polo shirt. The person on the right is wearing a red tshift with big X and Bell Labs Sensitive text in center" source="https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/" file="thompson-ritchie.jpg" >}}
Fig. 1.4. Ken Thompson and Denis Ritchie.
{{< /image >}}
Ken Thompson, Dennis Ritchie, Douglas McIlroy, and Joe Ossanna, frustrated with their experiences with _Multics_ Operating System are starting to work on their own alternative.
Their work will become one of the most beloved computer products of all time - _UNIX_.
The team armed with previous experience set up to create simple, manageable OS that would still fulfill all the requirements _Multics_ was to fulfill.
Currently, however, they have problems convincing _Bell Labs_ management to get them a new computer.
This has not stopped them from designing the system on black blackboards and paper.
[^fn:1]: [IBM 360 Model 20 Rescue and Restoration: Machine Overview](https://ibms360.co.uk/?p=902)
[^fn:2]: [First Operating System -- Part One](http://blog.wovenmemories.net/2023/10/30/First.Operating.System_Part.1.html)
[^fn:3]: [Multics --- {W}ikipedia{,} The Free Encyclopedia](https://en.wikipedia.org/wiki/Multics)
[^fn:4]: [Mark Allen - Before Unix: An Early History of Timesharing Systems](https://www.youtube.com/watch?v=UYb6WqWBTE0)
[^fn:5]: [The early days of Unix at Bell Labs - Brian Kernighan (LCA 2022 Online)](https://www.youtube.com/watch?v=ECCr_KFl41E)
|