兼容時分系統(CTSS):人類歷史上第一次實現 CPU 時間分片與遠端終端互動#
1961 年 11 月:四個終端機上的歷史時刻#
1961 年 11 月,MIT 計算中心一樓,一台改裝過的 IBM 709 前連著四台 Flexowriter 電傳打字機。Fernando Corbató 的團隊啟動了 CTSS(Compatible Time-Sharing System,「兼容」指它與 IBM 的 Fortran Monitor System 批次系統共存於同一台機器——工程上的政治智慧:不推翻舊秩序,而是與它分時共享機器)。這是人類史上第一個對一般使用者開放的分時系統投入運作。
CTSS 的核心機制如今已是教科書常識,但在當年是石破天驚:把 CPU 時間切成極短的片(time slice),在多個使用者之間輪轉。每個使用者的程式與資料在輪到自己時被搬入記憶體(低階機器沒有足夠記憶體同時容納所有人),到期後被「換出」到磁鼓,下一位登場。電傳打字機慢到每秒只印十幾個字元,使用者敲鍵盤與讀輸出的空隙,足以讓系統神不知鬼不覺地完成多次切換。
sequenceDiagram
participant U1 as 使用者1終端
participant K as CTSS 監督程式
participant M as 記憶體
participant D as 磁鼓
U1->>K: 敲鍵盤(中斷喚醒)
K->>M: 換入 U1 的程式
K->>M: U1 跑一個時間片
K->>D: 換出 U1,換入 U2...
K->>U1: 回送輸出(U1 毫無所覺)
Note over K: 使用者以為機器專屬於自己技術細節:為什麼 4K words 也敢做分時#
CTSS 原始版本的硬體寒酸得驚人:IBM 709 約 32K words 記憶體,還得與批次系統共享。Corbató 團隊的工程手段成為後世範本:
- Aconic 切換與專用硬體:後來的 IBM 7094 加上一個僅含兩個字的「交換暫存器」專供監督程式使用,這個為分時而添的硬體小改動,是硬體為 OS 需求服務的最早實例之一。
- 檔案系統:CTSS 首創帶使用者名稱的階層式檔案命名(如
USER1 PROG1 MAD),這個命名法直接啟發了後代 Multics 與 UNIX 的樹狀檔案系統。 - 郵件系統:1965 年,Tom Van Vleck 與 Noel Morris 在 CTSS 上寫出史上第一個電子郵件程式之一——分時系統不經意地創造了人類新的通訊方式。
- 密碼檔案:CTSS 還因一個事故留名史冊——1960 年代中期,曾有人在磁帶上發現整個密碼檔案明文列印的紀錄,此事故促使 Phyllis Fox 等人推動單向雜湊密碼的研究( Salt 與 hash 之思想源頭),影響了 Multics 與 UNIX 的密碼設計。
效果驚人:150 個使用者與圖形介面的曙光#
到 1963 年,CTSS 支援約 30 個並發終端、註冊使用者數百人;到 1960 年代中期,單機同時服務 150 個使用者。更關鍵的是生產力證據:McCarthy 的 AI 學生可以互動式地跑 Lisp(CTSS 上的 Lisp 是最早的人機互動語言環境之一);Sketchpad 之父 Ivan Sutherland 的前身專案、以及 Douglas Ross 的 MAD 語言編譯器,都在互動模式下以「分鐘級」迴圈完成開發——而批次時代這是「一天級」的流程。
1968 年,計算機協會 ACM 的会议上一段 CTSS 影像與演示震撼學界。不過 CTSS 最重要的後裔是 1964 年啟動的 Multics:Project MAC 與奇異公司(GE)、貝爾實驗室結盟,要把分時推到「一台機器服務整座城市」的規模。貝爾實驗室派來的年輕工程師中,有一位剛從加州大學柏克萊分校畢業的 Ken Thompson——他將在 Multics 的廢墟上點燃 UNIX 的火種(第 3 章)。
制度遺產:按時計費與電腦公用事業的先聲#
CTSS 不只是技術系統,還是一套社會制度。它是最早實行「按使用量計費」的系統之一:連線時間、CPU 秒數、紙張張數都記帳,學生有配額。這個「運算即水電」的計費模型,正是 McCarthy「電腦公用事業」構想的第一個落地實驗——六十年後的 AWS 按秒計費,血緣直追 CTSS 的帳本。
教育層面的影響同樣深遠:第一批透過終端機學會程式設計的學生誕生於 CTSS 之上。互動式學習改寫了教育法:錯了馬上改、改了馬上跑。1960 年代末,這批在終端機前長大的學生散佈到全美,成為分時產業(TSS、GE Information Services、Tymshare)與學術界的骨幹——分時系統不只分配了 CPU 時間,更分配了未來一代人的知識結構。
flowchart LR
A[IBM 709 + 4台 Flexowriter<br/>1961.11] --> B[CTSS 機制:<br/>時間片輪轉+整程式換出]
B --> C[150 使用者並發<br/>郵件+密碼雜湊誕生]
C --> D[Multics 結盟 1964<br/>GE+貝爾實驗室]
D --> E[Thompson 加入<br/>→ UNIX 伏筆]
B --> F[按量計費制度<br/>→ 雲端運算願景]
B --> G[互動式程式教育<br/>→ 新一代工程師]Corbató 的晚年總結#
Corbató 晚年回顧 CTSS 時說過一句話,道盡分時革命的本質:「我們當時的目標很謙卑——縮短人的等待。沒想到縮短等待之後,人類與電腦的關係整個改變了。」2012 年 IEEE Computer Society 以電腦先驅獎表彰他時,使用的措辭是:他讓電腦從「計算的機器」變成「溝通的場所」。分時系統的時間片,切開的不只是 CPU 的秒數,而是一個全新數位文明的分娩時刻。