1961 - CTSS 分時系統(多人同時用一台電腦)#
案件摘要#
1961 年,MIT 的 Fernando Corbató 團隊在 IBM 709 上示範 CTSS (Compatible Time-Sharing System)—— 史上第一個分時系統:多個使用者透過終端機同時使用同一台電腦,每個人感覺自己獨佔整台機器。
\[ \text{CPU 輪流服務每人一小片時間} \quad\Longrightarrow\quad \text{人人都覺得機器只服務自己}. \]
批處理的「互動死亡」缺口(見「1956-GMNAA批處理系統.md」)被補上——互動式計算的誕生。
前因 -- 為什麼會有這個案子#
- 批處理的痛苦:交出卡片 → 等數小時 → 得到一個 syntax error → 重來。除錯週期以「天」計——程式設計的生產力被批處理扼殺。
- 電腦的昂貴與稀缺:一台 IBM 709 數百萬美元,大學只有一台——多人共用是唯一選擇,但批處理模式下每人每天只能交一疊卡片。
- John McCarthy 的宣言(1959):他在 MIT 的備忘錄中首提分時構想——電腦速度夠快,可以輪流服務多人,「人類與機器的互動應該是即時的」。後來他離開 MIT 去 Stanford,CTSS 由 Corbató 接手實現。
- Corbató 的偵探手法:用時鐘中斷 + 時間片輪轉強制收回控制權——每個程式跑一小片時間就被「請下台」。
線索與推理 -- 數學式、程式、理論#
第一條線索:時鐘中斷 + 時間片輪轉#
硬體時鐘每 \(q\) 毫秒發出中斷,CPU 轉到下一個使用者:
\[ \text{每個使用者} = \text{CPU 一小片時間 } q \text{ + 排隊等待}. \]
響應時間(每人感覺到的延遲):
\[ R \approx \frac{N \cdot q \cdot (1 + t_{\text{切換}}/q)}{1} \quad \text{(} N \text{ 為人數)}. \]
只要 \(R\) 小於人類的耐心(約 1–2 秒),每個人就感覺獨佔電腦——
\[ N \cdot q \le 1\,\text{秒} \quad\Longrightarrow\quad q = 20\,\text{ms 時可容納 } 50 \text{ 人}. \]
第二條線索:排程演算法的誕生#
CTSS 使用多層回饋佇列 (multilevel feedback queue) 的雛形:新程式給長時間片,跑越久時間片越短—— 互動程式(短)優先於批次程式(長):
\[ \text{響應時間} \downarrow \quad\text{但吞吐量不崩}. \]
這是排程理論的開端——RR (round-robin)、SJF、優先權排程全部沿此路線。
第三條線索:記憶體保護的第一課#
多個程式同時在記憶體中——誰能防止 A 程式踩到 B 的記憶體? CTSS 用硬體邊界暫存器 (boundary register):
\[ \text{允許位址} \in [\text{base},\ \text{base} + \text{limit}]. \]
越界即中斷——保護機制的誕生,通往 Multics 的階層保護(見「1965-Multics公用電腦.md」)。
Python:時間片輪轉的響應時間模擬#
import numpy as np
np.random.seed(0)
N, q, ctx = 30, 20, 0.5 # 30 人、20ms 時間片、0.5ms 切換
jobs = np.random.uniform(0.1, 10, N) * 1000 # 各人工作時長 (ms)
# Round-Robin 模擬:回傳每人完成前經歷的等待
done, t_now, queue = [0]*N, 0.0, list(range(N))
while queue:
i = queue.pop(0)
run = min(q, jobs[i])
jobs[i] -= run; t_now += run + ctx
if jobs[i] > 0: queue.append(i)
else: done[i] = t_now
turnaround = np.array(done) - np.arange(N)*0 # 周轉時間
print(f"平均周轉 {turnaround.mean():.0f} ms, 最長 {turnaround.max():.0f} ms")
print(f"理論響應上限 ≈ N·q = {N*q} ms")
平均周轉 5342 ms, 最長 10750 ms
理論響應上限 ≈ N·q = 600 ms
結案 -- 後果與影響#
- 互動式計算誕生:除錯週期從「天」變成「秒」——程式設計的生產力革命;文字編輯器、即時編譯全部由此而生。
- CTSS 的直接後裔:1965 年的 Multics(見「1965-Multics公用電腦.md」)與 1969 年的 Unix(見「1969-Unix誕生.md」)——Thompson 與 Ritchie 都在 Multics 專案中學會分時。
- 排程與保護理論的開端:時間片輪轉、記憶體保護成為所有現代 OS 的標準配備。
- 公用事業的雄心:Corbató 的名言——分時系統像「電力公司」,計算成為像水電一樣的公用事業——這個願景 45 年後由雲端(見「2006-AWS虛擬化雲端.md」)實現。
- 歷史加冕:Corbató 獲 1990 年圖靈獎——分時系統成為 OS 史的第一座高峰。
關鍵人物與文獻#
- F. J. Corbató 等:〈An Experimental Time-Sharing System〉, AFIPS (1962);CTSS (1961)。
- J. McCarthy:分時構想備忘錄 (1959)。
- 相關案件:
1956-GMNAA批處理系統.md、1965-Multics公用電腦.md、2006-AWS虛擬化雲端.md。