跳轉到

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
(首個響應都在 600ms 內——每人都「感覺獨佔」;長工作靠周轉時間換取互動性。)

結案 -- 後果與影響#

  • 互動式計算誕生:除錯週期從「天」變成「秒」——程式設計的生產力革命;文字編輯器、即時編譯全部由此而生。
  • 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。