DOS 系統和 Windows 系統有什麼關係?

為什麼windows系統下可以執行dos命令?這兩者有何關係?


噗,話癆來襲……

因為不同的系統都叫 Windows ,這些系統在界面上也有一定連續性並且因此可能造成誤解,所以有必要稍微梳理一下幾個不同的 Windows 系統。

首先是 DOS 上的一個圖形界面 Windows 1.0 ,它帶了畫圖、記事本等程序。

DOS 上的這些圖形界面程序當然也是16位的,並一直發展到 Windows 3.1 (不過Windows 3.1對應的中文版的版本號是3.2)。

在這個時候因為 DOS 總是作為 Windows 的基礎運行的,在運行Windows 的時候當然可以回到 DOS 下運行 DOS 命令。

接下來就是劃時代的 Windows 95,這個系統下它不是直接運行在 DOS 上,而是在 DOS 啟動的時候直接跳到一個 Windows 圖形界面。 Windows 95 上的程序是32位的,不過操作系統的核心還是 DOS 下的那一套,雖然圖形方面當然是32位的。

這個時候的 Windows 還是可以運行16位下的 DOS 程序。

Windows 95、 Windows 98 再接下來是 Windows ME ,這就是32位的仍然沒有擺脫 DOS 的三個Windows 版本。

接下來就是 Windows NT 3.5,Windows NT 4.0,Windows 2000,Windows XP/Windows 2003 開始的這一代了,也包括 Windows 7 ,Windows 8 等,我們叫做 NT 內核的 Windows ,它的核心就完全是32位的,跟從前彙編編寫的代碼庫完全告別了。這個時候操作系統只是在最初的時候從16位模式跳到32位的保護模式,除此之外不再真正有16位的代碼,所以這個時候就沒有運行 DOS 程序的條件了。

所以總結下來就是,早期的 Windows 中就是 DOS 上的一個外殼,中期的 Windows 和 DOS 共享了一些代碼,在 Windows XP 中已經完全告別了 DOS ,只能靠模擬來運行這些DOS程序。

不過,舊的DOS程序在 Windows XP 上還是可以照常運行,雖然有些比較依賴硬體的程序會運行不正常(不過這些程序反正換了一套硬體就很有可能運行不正常了), Windows 8 在第一次運行 DOS 程序的時候會提示安裝 NTVDM 。

這個 NTVDM 就是 NT 內核 Windows 運行 DOS 程序的關鍵,它用來模擬 DOS 程序運行時所依賴的環境。

不過以上這些都是說的32位 Windows ,在64位 Windows 中本身也沒有 NTVDM 功能,所有也就運行不了 DOS 程序了。

不過最後還剩一個問題,在 Windows NT 中執行 DOS 命令到底是什麼意思?

DOS 上帶有一系列的命令,早期和中期的 Windows 都可以執行這些 DOS 命令。到了 Windows NT ,這些命令的使用方式沒有變,於是就沿用了執行 DOS 命令這個說法。而實際上在 Windows NT 中使用這些命令時都只是在使用一個叫 cmd.exe 的命令行輔助工具,跟 DOS 不再有什麼關係了。


從nt開始,windows和dos都是模擬運行在nt上的。和linux下面用wine模擬運行windows程序是一回事。包括當年nt發布的時候微軟對當時的主流程序也是一個一個調試到nt上的,和wine的發展過程是一回事,只有投入的區別。

所以說樓主這個問題是一個偽命題,在nt看來,dos和windows是平級的被模擬的程序,可以認為這兩貨沒關係。當然在早期windows僅僅是運行在dos上的一個程序而已。

我大dos只生過windows,但從來沒對windows屈服過!


windows下的命令提示符只是一個軟體,操作方式和界面模擬dos操作系統


推薦閱讀:

如何讓兩台PC進行文件傳輸?
買筆記本裝win7好還是win8好?
游匣7559無法安裝linux,怎麼解決?
Windows 10家庭版「無法使用內置管理員賬戶打開」 Modern UI自帶的應用程序怎麼辦?
Linux 是怎樣使用內存的?

TAG:MicrosoftWindows | 操作系統 | 計算機 | Windows7 | DOS |