1976 - VRTX 誕生(把多工變成可以買的元件)#
案件摘要#
1976 年,美國加州的 Hunter & Ready 公司推出 VRTX(Versatile Real-Time Executive)—— 史上第一個商業即時作業系統核心:只有幾 KB,賣給嵌入 VLSI 開發系統的廠商。 從此嵌入式多工從「每個專案自己寫一個超級迴圈」變成「買一個現成核心」——RTOS 從此成為一個產業。
前因 -- 為什麼會有這個案子#
- 前後台超級迴圈的缺陷:早期嵌入式程式是一個
while(1)大迴圈加中斷——回應時間不可預測、無法分模組。 - VLSI 開發的硬體契機:Hunter & Ready 替晶片廠開發 VLSI 測試設備,需要決定性的多工——學硬體逼出了 RTOS。
- Multics 的反面教材:主機級 OS 動輒數百萬行——嵌入式世界需要的是幾 KB 的最小核心。
線索與推理 -- VRTX 的技術面貌(1976)#
| 技術 | VRTX 狀態 | 彌補的缺陷 |
|---|---|---|
| 行程 | 優先級搶佔式多工(最多 255 級) | 超級迴圈回應不可預測 |
| 通訊 | 信號量、訊息佇列、事件旗標 | 中斷旗標輪詢的混亂 |
| 記憶體 | 無 MMU、共用位址空間 | 微控制器根本沒有 MMU |
| footprint | 約 4–8 KB ROM | 主機 OS 的 1/1000 |
| 授權 | 商用授權(royalty) | 開源 RTOS 要等 27 年 |
C 範例:前後台超級迴圈 vs RTOS 排班#
/* 以前:前後台超級迴圈——回應時間取決於迴圈位置 */
while (1) {
if (flag_sensor) read_sensor(); /* 排在後面就慢 */
if (flag_uart) handle_uart();
}
/* VRTX(1976):優先級搶佔——高優先級永遠先跑 */
task A(priority = 1) { /* 最緊急的感測任務 */
while (1) { wait(SENSOR_SEM); read_sensor(); }
}
Shell 範例:VRTX 時代的開發流程#
# 1976 年:交叉編譯 + 燒 ROM
$ cc68 -O -o app.bin app.c # 在開發機上交叉編譯
$ burnrom app.bin 0x0000 # 燒進 EPROM
$ # 沒有螢幕、沒有 shell——除錯靠 LED 和示波器
結案 -- 後果與影響#
- VRTX 被授權給 Motorola 等廠商,成為 1980 年代工業控制的標準核心。
- 徒弟出走創業潮:Ready Systems(VRTX 的兄弟 VRTX32)、Accelerated Technology、Wind River(VxWorks)——RTOS 產業成型。
- 1980 年代後期 IEEE 開始制定 POSIX 1003.4(即時擴充)——API 碎片化逼出標準(見 1993 年案件)。
- 歷史教訓:元件化(把 OS 當零件賣)= 嵌入式產業的第一步。
關鍵人物與文獻#
- J. Hunter / L. Ready:VRTX (1976)。
- D. L. Parnas:模組化與資訊隱藏(1972)——RTOS 元件化的理論基礎。
- 相關案件:
1982-QNX微核心與訊息傳遞.md、1993-VxWorks與POSIX即時標準.md。