天天看點

微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

作者:不秃頭程式員

曾幾何時,有不少網友在問答社群發問:“為什麼微軟不把一些老舊的作業系統給開源出來呢,畢竟那些系統都沒有商業價值了?”

如今看來,舊系統的不開源隻是時候未到,或者說沒人想得起來。

時下幸得一位研究人員的提醒與争取,微軟和 IBM 于近日決定将 MS-DOS 4.0 版本開源出來,還将代碼釋出在了 GitHub 上(https://github.com/microsoft/MS-DOS),以供大家研究學習。

微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!
微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

36 年後,微軟将 MS-DOS 4.0 開源

距離 1988 年首次釋出,MS-DOS 4.0 至今已有近 36 年的曆史,此次微軟開源的 MS-DOS 4.0 項目是在 MIT 許可下釋出,具體包含了源代碼、二進制檔案、磁盤映像和文檔等内容,允許修改、釋出。

這一次 MS-DOS 4.0 得以開源,很大程度上要歸功于前微軟首席技術官 Ray Ozzie 和一位名叫 Connor(Starfrost)Hyde 的年輕英國研究員之間的通信。

對此,微軟開發者社群副總裁 Scott Hanselman 和微軟開源項目辦公室負責人 Jeff Wilcox 還特地釋出了一篇《開源 MS-DOS 4.0》的公告進行了介紹。

微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

公告指出,相較之下,DOS 4.0 版本背後有着一段複雜而迷人的曆史,微軟與 IBM 合作開發了部分代碼,但也建立了一個名為“多任務 DOS”(MT-DOS)的 DOS 分支,但并未廣泛釋出。

不久前,這位研究員 Connor(Starfrost)Hyde 和微軟前首席技術官 Ray Ozzie 就自己手頭收藏的一些軟體進行了交流。在收藏的軟碟中,Ray Ozzie 驚訝地發現了一些未釋出的 DOS 4.0 測試版二進制檔案。

基于此,研究員 Starfrost 聯系了微軟開放源代碼計劃辦公室 (OSPO),希望他們能夠釋出 DOS 4 的源代碼,因為他正在研究記錄 DOS 4、MT-DOS 和 IBM的 OS/2 之間的關系。這些多任務 DOS(MT-DOS)二進制檔案的一些後期版本可以在網際網路上找到,但這些新的多任務 DOS beta 版二進制檔案似乎更早,尚未釋出,而且還包括 ibmbio.com 源代碼。

在了解這些資訊之後,微軟開發者社群副總裁 Scott Hanselman 在網際網路檔案管理者和愛好者 Jeff Sponaugle 的幫助下,對這些原始磁盤進行了成像,并仔細掃描了“Ozzie Drop”中的原始印刷檔案。微軟和 IBM 研究員都認為,這是作業系統曆史上值得分享的精彩片段。

微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

随後,微軟開源項目辦公室負責人 Jeff Wilcox 去了微軟檔案館(Microsoft Archives),但是他們沒能找到 MT-DOS 的完整源代碼,卻發現了 MS-DOS 4.0,這才有了如今的開源。

微軟表示,“如果你想親自運作 MS-DOS 4.0 軟體并進行探索,我們已經成功地在原始 IBM PC XT、較新的 Pentium 電腦以及開源 PCem 和 86box 模拟器上直接運作了該軟體。 ”

  • GitHub 位址:https://github.com/microsoft/MS-DOS
微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

MS DOS 源碼陸續釋出中

這并不是微軟第一次釋出 MS-DOS 源代碼。

十年前,微軟将 MS-DOS 1.25 和 2.0 的源代碼釋出到計算機曆史博物館,而後在 2018 年于 GitHub 上重新開源了 MS-DOS(https://github.com/microsoft/MS-DOS)。這段代碼在曆史上占有重要地位,對于僅 45 年前完全用 8086 彙編代碼編寫的作業系統而言,具有非常好的研究意義。

多年來,其他 DOS 版本也已開源。PC-MOS/386 是總部位于佐治亞州諾克羅斯的 The Software Link 公司推出的多使用者 MS-DOS 克隆版,于 2017 年開源(https://github.com/roelandjansen/pcmos386v501)。它可以運作大多數标準 DOS 和 386 的保護模式應用程式。

微軟開源傳奇作業系統MS-DOS 4.0,重溫30多年前的技術風采!

回看 DOS 發展史

事實上,現下的 MS-DOS 4.0 并不能稱之為是更好的 DOS 作業系統。回看 DOS 發展曆史,這款作業系統也曾引起巨大争議。

要知道,在 Windows 出現之前,從 1981 年到 1995 年的 15 年間,DOS 在 IBM PC 相容機市場中占有舉足輕重的地位。

其曆史要追溯到 20 世紀 80 年代,一名美國計算機程式員 Tim Paterson 在為自家的西雅圖計算機産品公司開發一種使用新的英特爾 8086 16 位處理器的新産品時,發現沒有任何作業系統可用。

于是從 1980 年初開始,Tim Paterson 用不到一年的時間内開發了一款名為 QDOS 的作業系統旨在填補這一空白,起初他的目的也比較簡單,就是讓應用程式能輕松地從 CP/M 移植過來。将一個應用程式從 CP/M 移植到這個新作業系統的過程,隻需将 8080 或 Z80 彙程式設計式轉換為 8086(使用 Tim Paterson 編寫的另一個工具)并進行手工優化即可。

後來,這款系統更改為 86-DOS,微軟收購了該作業系統,Tim Paterson 随之加入微軟,全職開發該作業系統。顯然,沒過多久,他立即被告知是在為 IBM 工作。随後,該作業系統再次被重新命名:如果在 IBM 系統上運作,則更名為 PC-DOS;如果不在 IBM 系統上運作,則更名為 MS-DOS(因為微軟是合法所有者)。

而這一段曆史,可以從上文提到的那位年輕的英國研究員 Starfrost 的叙述中可見一斑:

微軟公司于 1975 年由比爾·蓋茨和保羅·艾倫創立,為 MITS Altair 8800(最早的個人電腦之一)開發 BASIC 解釋器。最初版本的産品在 30 天内開發完成,并成功地向 MITS 創始人(被譽為個人電腦之父)進行了示範。接下來的事情便不展開細說。

從根本上說,在短短幾年内,微軟就成為了最受歡迎的 BASIC 解釋器開發商,并擁有大量其他産品——這是一家相當成功的工具和語言公司,盡管他們也銷售各種“SoftCards”,以允許計算機運作針對其他架構的程式,因為在這一時期,個人電腦行業遠未實作标準化。

到 1980 年,微軟公司的收入達到了幾百萬美元,但這與後來的發展相比簡直是小巫見大巫——公司真正的“重大突破”是在 1980 年。那時,科技巨頭 IBM 拟定一份合同,想要一次性支付約 8 萬美元,從微軟手中購買 MS-DOS 作業系統的永久使用權,用于即将推出的個人電腦。IBM 還獲得了微軟的 BASIC 程式設計語言、該公司的所有其他語言以及一些新開發的應用程式的使用權。聰明的做法應該是蓋茨堅持收取專利使用費,這樣他的公司就可以從 IBM 出售的每台個人電腦中賺取一小筆錢。

通過一系列争論激烈的事件,蓋茨“不太聰明”地拒絕了這一合同。

他堅持将 MS-DOS 授權給任何需要的人,微軟總共為收購 MS-DOS 支付了 75,000 美元,其中 25,000 美元用于授權,50,000 美元用于直接購買,再加上 IBM PC 的開放式結構,MS-DOS 幾乎立即被克隆,成為個人電腦的事實标準。這使得微軟從 OEM 收入中獲得了無限的印鈔機,盡管這在幾年内還不會顯現出來。

事實證明,這是一次極其幸運的運氣,再加上一些精明的商業洞察力,最終使微軟公司成為世界上最大的公司之一,比爾·蓋茨也多年來一直是世界上最富有的人。

雖然 MS-DOS 讓微軟賺得盆滿缽滿,但問題是,即使以當時的标準來看,它也很糟糕。

由于 Tim Paterson 當時是為了滿足迫切的需求而匆忙推出的 QDOS 系統,從字面了解 QDOS 就是“快速而肮髒的作業系統”的意思,即使以當時有限的标準來看,該作業系統也缺少了許多基本功能,如缺少子目錄、裝置驅動程式、硬碟支援等等。

1983 年,微軟對 MS-DOS 進行了全面重寫,釋出了 MS-DOS 2.0,新增了不少功能,還允許 160KB 和 320KB 軟碟變為 180KB 和 360K。由于增加了急需的功能,這次更新受到了普遍歡迎,但也有一些人批評它增加了記憶體使用量。

然而,随着技術的發展,使用者仍然需要更多功能。他們想在當時功能強大的新電腦上同時做多件事,是以需要一個作業系統來實作,而 MS-DOS 這個單一任務的作業系統根本無法勝任。此外,自 MS-DOS 1.x 釋出以來,微軟公司就承諾在未來對 MS-DOS 進行擴充--多使用者、網絡、多任務。

于是,微軟于 1983 年 1 月召集了一些最優秀的程式員,旨在開發新版的 MS-DOS 3.0(MS-DOS 2.5 作為臨時版本在同一代碼庫中同時開發,目的是為微軟和 IBM 的網絡産品增加基本的網絡重定向器支援),它将是一個真正的多任務作業系統,具有搶占式優先排程程式、多線程、命名管道、sempahores、會話管理使用者界面和許多其他功能。

然而,編寫一個與已有的為單任務環境編寫的成千上萬個應用程式相容的作業系統難度實屬不易。 Starfrost 對此剖析道:

許多 MS-DOS 應用程式,由于 API 缺陷,會進行一些諸如直接寫入顯示記憶體的操作——這在多任務處理的作業系統上是無法完成的,因為使用者可以選擇顯示哪個應用程式,并且“螢幕”随時可以改變。

由于新作業系統将被搶占式地進行多任務處理,任何應用程式都可能在任何時間被作業系統搶占進行上下文切換;許多 DOS 應用程式在這方面的相容性表現不佳。應用程式還會直接從外圍裝置進行寫入和讀取,如果作業系統正在等待這些裝置的資料,這在多任務處理環境中可能是緻命的。

也許是由于這些複雜性等原因,當時 MS-DOS 3.0 被迅速推遲了很長時間。後來,MS-DOS 4.0 又進一步地進行了改進,甚至突破了 640KB 的記憶體限制,并且支援 32MB 以上的硬碟空間,還增加了支援滑鼠的目錄界面。

不過,MS-DOS 4.0 與很多知名程式不相容,有些漏洞甚至會導緻使用者資料被破壞。

對此,也有不少使用者吐槽,當時流行的程式,比如 WordPerfect 5.1、Lotus 1-2-3 和 Doom,在 MS-DOS 4.0 上總是出問題。你可能正在做任務,突然間,程式可能就完全卡住了。在我們了解和讨厭 Windows 的藍屏當機之前,MS-DOS 4.0 就已經讓 PC 使用者感到恐慌了。

至于其中緣由,外媒 ZDNET 稱,這主要是因為 MS-DOS 4.0 使用了 92KB 的記憶體。但在當時高端 PC 隻有 640K 記憶體時,這是一件大事,MS-DOS 4.0 使用的記憶體比以往任何版本的 DOS 都多。

甚至這一版的大跌的口碑讓很多使用 DOS 系統的開發商避之不及,當時數字研究公司開發了一款名為 DR-DOS 的 DOS 作業系統,自其釋出以來,其版本号最初是模仿 MS-DOS 版本号的,以顯示前者将與後者一樣工作。但是本來到了釋出 DR-DOS 4.0 版本時候,數字研究公司在 1989 年将其新版本命名為 DR-DOS 5.0,以防止任何人認為它與 MS-DOS 4.0 有任何關系。

是以,即使是在 DOS 4.0 釋出後一年,軟體零售商 Egghead Software 的資料仍然顯示,DOS 3.3 的銷量為 DOS 4.0 的 2 倍。

事實上,也許 1991 年這麼多人準備嘗試一種新的類 Unix 作業系統 Linux 的原因之一是 MS-DOS 4.0 惹惱了這麼多使用者。

後來,微軟推出了 Windows 作業系統,尤其是 Windows 95 的釋出标志着微軟向圖形使用者界面(GUI)的轉變,導緻 MS-DOS 走向了滅亡。

曾經這款 MS-DOS 4.0 雖然備受争議,但是如今其帶來的開源還是讓不少作業系統愛好者感到興奮,截至目前,這一倉庫已經獲得了 26.2k 個 star 數,Fork 數達到了 3.6k。

參考連結:

https://cloudblogs.microsoft.com/opensource/2024/04/25/open-sourcing-ms-dos-4-0/

https://starfrost.net/blog/001-mdos4-part-1/index.html

https://www.zdnet.com/article/its-baaack-microsoft-and-ibm-open-source-ms-dos-4-0/

繼續閱讀